diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..66b2d4607 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +; What is EditorConfig? http://editorconfig.org/ +; Extension for VS2010/2012 to support .editorconfig files: http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 + +root = true + +; use tabs identation for all files +[*] +indent_style = tab + diff --git a/.gitignore b/.gitignore index 01577f78f..81d9e0a9e 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,11 @@ BLToolkit.2010.userprefs Mono/_ReSharper.Mono/* BLToolkit.2010.sln.docstates *.csproj.user -UnitTests/BLToolkit.Linq.VisualState.xml \ No newline at end of file +UnitTests/BLToolkit.Linq.VisualState.xml +UnitTests/Linq/UserDataProviders.txt +!*.dll +*.ncrunchsolution +!*.exe +!*.pdb +BLToolkit.2012.opensdf +ipch/examples.cpp-54293a33/examples.ipch diff --git a/BLToolkit.2008.5.1.ReSharper b/BLToolkit.2008.5.1.ReSharper deleted file mode 100644 index 42abd66f8..000000000 --- a/BLToolkit.2008.5.1.ReSharper +++ /dev/null @@ -1,86 +0,0 @@ - - - - - SOLUTION - - - - public - protected - internal - private - new - abstract - virtual - override - sealed - static - readonly - extern - unsafe - volatile - - False - True - True - False - False - False - True - - - - System - - - System - - - - $object$_On$event$ - $event$Handler - - - - - - - $object$_On$event$ - $event$Handler - - - - - - - - - - - - - - $object$_On$event$ - $event$Handler - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/BLToolkit.2008.sln b/BLToolkit.2008.sln index c89bb4669..ec7ef73e0 100644 --- a/BLToolkit.2008.sln +++ b/BLToolkit.2008.sln @@ -19,29 +19,27 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLTgen.2008", "Tools\BLTgen EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Templates.2008", "Tools\Templates\Templates.2008.csproj", "{6E0C5565-F9A3-441C-9CB2-8B1878A800EF}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NUnitAddin", "Tools\NUnitAddin\NUnitAddin.csproj", "{B951C0DA-943C-4B04-BCAF-8180DD5829C2}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Linq", "Linq", "{4ABA64DA-8981-42F5-9144-DFD5350BEC2D}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DataProviders", "DataProviders", "{9F229425-A623-4066-9A92-84F31DD54FD2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.DB2.3", "DataProviders\BLToolkit.Data.DataProvider.DB2.3.csproj", "{86BF4F10-3606-4016-9919-84C3335813B6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.DB2.3", "DataProviders\DB2\BLToolkit.Data.DataProvider.DB2.3.csproj", "{86BF4F10-3606-4016-9919-84C3335813B6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Firebird.3", "DataProviders\BLToolkit.Data.DataProvider.Firebird.3.csproj", "{C1F8C201-BBD9-44F4-884C-CFF8CC960B68}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Firebird.3", "DataProviders\Firebird\BLToolkit.Data.DataProvider.Firebird.3.csproj", "{C1F8C201-BBD9-44F4-884C-CFF8CC960B68}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Informix.3", "DataProviders\BLToolkit.Data.DataProvider.Informix.3.csproj", "{B1DEA25C-7667-471B-BBAD-64D017FDD104}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Informix.3", "DataProviders\Informix\BLToolkit.Data.DataProvider.Informix.3.csproj", "{B1DEA25C-7667-471B-BBAD-64D017FDD104}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.MySql.3", "DataProviders\BLToolkit.Data.DataProvider.MySql.3.csproj", "{3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.MySql.3", "DataProviders\MySql\BLToolkit.Data.DataProvider.MySql.3.csproj", "{3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Oracle.3", "DataProviders\BLToolkit.Data.DataProvider.Oracle.3.csproj", "{2B5287F2-A6AC-4D5A-B0A8-01C06144824D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Oracle.3", "DataProviders\Oracle\BLToolkit.Data.DataProvider.Oracle.3.csproj", "{2B5287F2-A6AC-4D5A-B0A8-01C06144824D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.PostgreSQL.3", "DataProviders\BLToolkit.Data.DataProvider.PostgreSQL.3.csproj", "{5A556D57-0D68-433B-AD78-02849583582B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.PostgreSQL.3", "DataProviders\PostgreSQL\BLToolkit.Data.DataProvider.PostgreSQL.3.csproj", "{5A556D57-0D68-433B-AD78-02849583582B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.SqlCe.3", "DataProviders\BLToolkit.Data.DataProvider.SqlCe.3.csproj", "{85E90F57-8DE1-4912-8414-28578F4D71CD}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.SqlCe.3", "DataProviders\SqlCe\BLToolkit.Data.DataProvider.SqlCe.3.csproj", "{85E90F57-8DE1-4912-8414-28578F4D71CD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.SQLite.3", "DataProviders\BLToolkit.Data.DataProvider.SQLite.3.csproj", "{3E414663-B673-47A8-AB59-0E08FE43DA86}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.SQLite.3", "DataProviders\SQLite\BLToolkit.Data.DataProvider.SQLite.3.csproj", "{3E414663-B673-47A8-AB59-0E08FE43DA86}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Sybase.3", "DataProviders\BLToolkit.Data.DataProvider.Sybase.3.csproj", "{6CD8CC3D-643D-4D09-8660-A26085C44FBC}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Sybase.3", "DataProviders\Sybase\BLToolkit.Data.DataProvider.Sybase.3.csproj", "{6CD8CC3D-643D-4D09-8660-A26085C44FBC}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Linq.Demo.2008", "Demo\Linq\Demo\Linq.Demo.2008.csproj", "{57CE5505-44CB-42E4-A346-3471F68A5B60}" EndProject @@ -105,18 +103,6 @@ Global {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Release|Mixed Platforms.Build.0 = Release|Any CPU {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Release|Win32.ActiveCfg = Release|Any CPU - {B951C0DA-943C-4B04-BCAF-8180DD5829C2}.Debug|.NET.ActiveCfg = Debug|Any CPU - {B951C0DA-943C-4B04-BCAF-8180DD5829C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B951C0DA-943C-4B04-BCAF-8180DD5829C2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B951C0DA-943C-4B04-BCAF-8180DD5829C2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {B951C0DA-943C-4B04-BCAF-8180DD5829C2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {B951C0DA-943C-4B04-BCAF-8180DD5829C2}.Debug|Win32.ActiveCfg = Debug|Any CPU - {B951C0DA-943C-4B04-BCAF-8180DD5829C2}.Release|.NET.ActiveCfg = Release|Any CPU - {B951C0DA-943C-4B04-BCAF-8180DD5829C2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B951C0DA-943C-4B04-BCAF-8180DD5829C2}.Release|Any CPU.Build.0 = Release|Any CPU - {B951C0DA-943C-4B04-BCAF-8180DD5829C2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {B951C0DA-943C-4B04-BCAF-8180DD5829C2}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {B951C0DA-943C-4B04-BCAF-8180DD5829C2}.Release|Win32.ActiveCfg = Release|Any CPU {86BF4F10-3606-4016-9919-84C3335813B6}.Debug|.NET.ActiveCfg = Debug|Any CPU {86BF4F10-3606-4016-9919-84C3335813B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {86BF4F10-3606-4016-9919-84C3335813B6}.Debug|Any CPU.Build.0 = Debug|Any CPU @@ -245,7 +231,6 @@ Global {DE735B24-E20B-4440-BBBB-35AECC3F1124} = {92307E70-A839-4A76-9701-B5603B05BC08} {65FC918C-FF12-4C75-96F5-180B552989E5} = {92307E70-A839-4A76-9701-B5603B05BC08} {6E0C5565-F9A3-441C-9CB2-8B1878A800EF} = {92307E70-A839-4A76-9701-B5603B05BC08} - {B951C0DA-943C-4B04-BCAF-8180DD5829C2} = {92307E70-A839-4A76-9701-B5603B05BC08} {4ABA64DA-8981-42F5-9144-DFD5350BEC2D} = {F45E2E57-2D88-49DF-8C97-9D8EE7A0A4B1} {57CE5505-44CB-42E4-A346-3471F68A5B60} = {4ABA64DA-8981-42F5-9144-DFD5350BEC2D} {86BF4F10-3606-4016-9919-84C3335813B6} = {9F229425-A623-4066-9A92-84F31DD54FD2} diff --git a/BLToolkit.2010.sln b/BLToolkit.2010.sln index a8db7a0ad..783ea0a9b 100644 --- a/BLToolkit.2010.sln +++ b/BLToolkit.2010.sln @@ -1,6 +1,6 @@  -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.4", "Source\BLToolkit.4.csproj", "{0C325F5D-E50E-4340-8724-D29896CCC583}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UnitTests", "UnitTests", "{2CC0A340-512C-4F0D-A5E6-87C042EE13B9}" @@ -21,23 +21,23 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Templates", "Tools\Template EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DataProviders", "DataProviders", "{E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.DB2.4", "DataProviders\BLToolkit.Data.DataProvider.DB2.4.csproj", "{86BF4F10-3606-4016-9919-84C3335813B6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.DB2.4", "DataProviders\DB2\BLToolkit.Data.DataProvider.DB2.4.csproj", "{86BF4F10-3606-4016-9919-84C3335813B6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Firebird.4", "DataProviders\BLToolkit.Data.DataProvider.Firebird.4.csproj", "{C1F8C201-BBD9-44F4-884C-CFF8CC960B68}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Firebird.4", "DataProviders\Firebird\BLToolkit.Data.DataProvider.Firebird.4.csproj", "{C1F8C201-BBD9-44F4-884C-CFF8CC960B68}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Informix.4", "DataProviders\BLToolkit.Data.DataProvider.Informix.4.csproj", "{B1DEA25C-7667-471B-BBAD-64D017FDD104}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Informix.4", "DataProviders\Informix\BLToolkit.Data.DataProvider.Informix.4.csproj", "{B1DEA25C-7667-471B-BBAD-64D017FDD104}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.MySql.4", "DataProviders\BLToolkit.Data.DataProvider.MySql.4.csproj", "{3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.MySql.4", "DataProviders\MySql\BLToolkit.Data.DataProvider.MySql.4.csproj", "{3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Oracle.4", "DataProviders\BLToolkit.Data.DataProvider.Oracle.4.csproj", "{2B5287F2-A6AC-4D5A-B0A8-01C06144824D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Oracle.4", "DataProviders\Oracle\BLToolkit.Data.DataProvider.Oracle.4.csproj", "{2B5287F2-A6AC-4D5A-B0A8-01C06144824D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.PostgreSQL.4", "DataProviders\BLToolkit.Data.DataProvider.PostgreSQL.4.csproj", "{5A556D57-0D68-433B-AD78-02849583582B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.PostgreSQL.4", "DataProviders\PostgreSQL\BLToolkit.Data.DataProvider.PostgreSQL.4.csproj", "{5A556D57-0D68-433B-AD78-02849583582B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.SqlCe.4", "DataProviders\BLToolkit.Data.DataProvider.SqlCe.4.csproj", "{85E90F57-8DE1-4912-8414-28578F4D71CD}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.SqlCe.4", "DataProviders\SqlCe\BLToolkit.Data.DataProvider.SqlCe.4.csproj", "{85E90F57-8DE1-4912-8414-28578F4D71CD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.SQLite.4", "DataProviders\BLToolkit.Data.DataProvider.SQLite.4.csproj", "{3E414663-B673-47A8-AB59-0E08FE43DA86}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.SQLite.4", "DataProviders\SQLite\BLToolkit.Data.DataProvider.SQLite.4.csproj", "{3E414663-B673-47A8-AB59-0E08FE43DA86}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Sybase.4", "DataProviders\BLToolkit.Data.DataProvider.Sybase.4.csproj", "{6CD8CC3D-643D-4D09-8660-A26085C44FBC}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Sybase.4", "DataProviders\Sybase\BLToolkit.Data.DataProvider.Sybase.4.csproj", "{6CD8CC3D-643D-4D09-8660-A26085C44FBC}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.SL.4", "Source\BLToolkit.SL.4.csproj", "{663D4BFC-F565-41F7-9409-510B560CCEE8}" EndProject @@ -132,6 +132,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Create Scripts", "Create Sc Data\Create Scripts\Firebird2.sql = Data\Create Scripts\Firebird2.sql Data\Create Scripts\Informix.sql = Data\Create Scripts\Informix.sql Data\Create Scripts\MsSql.sql = Data\Create Scripts\MsSql.sql + Data\Create Scripts\MsSql2000.sql = Data\Create Scripts\MsSql2000.sql Data\Create Scripts\MySql.sql = Data\Create Scripts\MySql.sql Data\Create Scripts\Oracle.sql = Data\Create Scripts\Oracle.sql Data\Create Scripts\PostgreSQL.sql = Data\Create Scripts\PostgreSQL.sql @@ -148,9 +149,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.4.JointureAddOn", EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions", "Extensions", "{218E3584-CDC7-4A77-AD1A-CF9FBE90F67F}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests.Regression", "UnitTests\UnitTests.Regression\UnitTests.Regression.csproj", "{74D1AF0E-C0AB-4A62-99A3-0975585760A5}" +EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NuGet", "NuGet", "{4A9C0E31-8697-48BA-A46B-6A5EE78424D6}" ProjectSection(SolutionItems) = preProject NuGet\BLToolkit.DB2.nuspec = NuGet\BLToolkit.DB2.nuspec + NuGet\BLToolkit.DevartOraclePro.nuspec = NuGet\BLToolkit.DevartOraclePro.nuspec NuGet\BLToolkit.Firebird.nuspec = NuGet\BLToolkit.Firebird.nuspec NuGet\BLToolkit.Informix.nuspec = NuGet\BLToolkit.Informix.nuspec NuGet\BLToolkit.MySql.nuspec = NuGet\BLToolkit.MySql.nuspec @@ -169,7 +173,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.CP.4", "Source\BL EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NorthwindDataService", "Demo\WebServices\NorthwindDataService\NorthwindDataService.csproj", "{87FB4F28-5DCC-4F21-B83E-59C85E1A7423}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.OracleManaged.4", "DataProviders\BLToolkit.Data.DataProvider.OracleManaged.4.csproj", "{785CE174-0A91-465F-9E41-65E6E05A0EC9}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.OracleManaged.4", "DataProviders\Oracle\BLToolkit.Data.DataProvider.OracleManaged.4.csproj", "{61985B06-67FD-4941-B1B0-7F3794FD237C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.DevartOracle.4", "DataProviders\DevartOraclePro\BLToolkit.Data.DataProvider.DevartOracle.4.csproj", "{CB303F0B-0AA3-4589-850A-95E985A09492}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Generic.4", "DataProviders\Generic\BLToolkit.Data.DataProvider.Generic.4.csproj", "{6E7FE7FC-551F-4273-ACEB-72DC0D01120E}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -1279,7 +1287,6 @@ Global {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Release|Any CPU.ActiveCfg = Debug|Any CPU {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Release|Any CPU.Build.0 = Debug|Any CPU {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU - {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Release|Mixed Platforms.Build.0 = Debug|Any CPU {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Release|Win32.ActiveCfg = Debug|Any CPU {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Release|x64.ActiveCfg = Debug|Any CPU {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Release|x86.ActiveCfg = Debug|Any CPU @@ -1760,6 +1767,46 @@ Global {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Template|Win32.ActiveCfg = Release|Any CPU {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Template|x64.ActiveCfg = Release|Any CPU {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Template|x86.ActiveCfg = Release|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Debug|Win32.ActiveCfg = Debug|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Debug|x64.ActiveCfg = Debug|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Debug|x86.ActiveCfg = Debug|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Release|Any CPU.Build.0 = Release|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Release|Win32.ActiveCfg = Release|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Release|x64.ActiveCfg = Release|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Release|x86.ActiveCfg = Release|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Template|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Template|Any CPU.Build.0 = ReleaseMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Template|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Template|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Template|Win32.ActiveCfg = ReleaseMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Template|x64.ActiveCfg = ReleaseMono|Any CPU + {74D1AF0E-C0AB-4A62-99A3-0975585760A5}.Template|x86.ActiveCfg = ReleaseMono|Any CPU {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug FW 3.5|Any CPU.ActiveCfg = Debug FW 3.5|Any CPU {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug FW 3.5|Any CPU.Build.0 = Debug FW 3.5|Any CPU {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug FW 3.5|Mixed Platforms.ActiveCfg = Debug FW 3.5|Any CPU @@ -1886,62 +1933,144 @@ Global {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Template|Win32.ActiveCfg = Release|Any CPU {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Template|x64.ActiveCfg = Release|Any CPU {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Template|x86.ActiveCfg = Release|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Debug|Win32.ActiveCfg = Debug|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Debug|x64.ActiveCfg = Debug|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Debug|x86.ActiveCfg = Debug|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Release|Any CPU.Build.0 = Release|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Release|Win32.ActiveCfg = Release|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Release|x64.ActiveCfg = Release|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Release|x86.ActiveCfg = Release|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Template|Any CPU.ActiveCfg = ReleaseMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Template|Any CPU.Build.0 = ReleaseMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Template|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Template|Mixed Platforms.Build.0 = ReleaseMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Template|Win32.ActiveCfg = ReleaseMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Template|x64.ActiveCfg = ReleaseMono|Any CPU - {785CE174-0A91-465F-9E41-65E6E05A0EC9}.Template|x86.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug|Win32.ActiveCfg = Debug|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug|x64.ActiveCfg = Debug|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug|x86.ActiveCfg = Debug|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Release|Any CPU.Build.0 = Release|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Release|Win32.ActiveCfg = Release|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Release|x64.ActiveCfg = Release|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Release|x86.ActiveCfg = Release|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Template|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Template|Any CPU.Build.0 = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Template|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Template|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Template|Win32.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Template|x64.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Template|x86.ActiveCfg = ReleaseMono|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug FW 3.5|Any CPU.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug FW 3.5|Any CPU.Build.0 = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug FW 3.5|Mixed Platforms.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug FW 3.5|Mixed Platforms.Build.0 = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug FW 3.5|Win32.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug FW 3.5|x64.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug FW 3.5|x86.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug|Win32.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug|x64.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug|x86.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.DebugMono|Any CPU.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.DebugMono|Any CPU.Build.0 = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.DebugMono|Mixed Platforms.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.DebugMono|Mixed Platforms.Build.0 = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.DebugMono|Win32.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.DebugMono|x64.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.DebugMono|x86.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Release|Any CPU.Build.0 = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Release|Win32.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Release|x64.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Release|x86.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.ReleaseMono|Any CPU.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.ReleaseMono|Any CPU.Build.0 = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.ReleaseMono|Mixed Platforms.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.ReleaseMono|Mixed Platforms.Build.0 = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.ReleaseMono|Win32.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.ReleaseMono|x64.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.ReleaseMono|x86.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Template|Any CPU.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Template|Any CPU.Build.0 = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Template|Win32.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Template|x64.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Template|x86.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug FW 3.5|Any CPU.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug FW 3.5|Any CPU.Build.0 = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug FW 3.5|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug FW 3.5|Mixed Platforms.Build.0 = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug FW 3.5|Win32.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug FW 3.5|x64.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug FW 3.5|x86.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug|Win32.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug|x64.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug|x86.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.DebugMono|Any CPU.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.DebugMono|Any CPU.Build.0 = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.DebugMono|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.DebugMono|Mixed Platforms.Build.0 = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.DebugMono|Win32.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.DebugMono|x64.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.DebugMono|x86.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Release|Any CPU.Build.0 = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Release|Win32.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Release|x64.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Release|x86.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.ReleaseMono|Any CPU.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.ReleaseMono|Any CPU.Build.0 = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.ReleaseMono|Mixed Platforms.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.ReleaseMono|Mixed Platforms.Build.0 = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.ReleaseMono|Win32.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.ReleaseMono|x64.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.ReleaseMono|x86.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Template|Any CPU.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Template|Any CPU.Build.0 = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Template|Win32.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Template|x64.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Template|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {D527524F-EC92-465E-9CAE-86278121675A} = {2CC0A340-512C-4F0D-A5E6-87C042EE13B9} - {D11617AB-9F88-4C74-8ABD-F8580DB4B01B} = {2CC0A340-512C-4F0D-A5E6-87C042EE13B9} - {07997A18-86D3-47AC-A514-AB1B03E6AEC8} = {2CC0A340-512C-4F0D-A5E6-87C042EE13B9} {4FDE7340-F60F-49BC-86CD-756CCD26C92A} = {2CC0A340-512C-4F0D-A5E6-87C042EE13B9} {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA} = {2CC0A340-512C-4F0D-A5E6-87C042EE13B9} {6AE74A35-B337-4B17-8092-E1B98DEF06AF} = {2CC0A340-512C-4F0D-A5E6-87C042EE13B9} + {74D1AF0E-C0AB-4A62-99A3-0975585760A5} = {2CC0A340-512C-4F0D-A5E6-87C042EE13B9} {6E0C5565-F9A3-441C-9CB2-8B1878A800EF} = {C0306556-68F4-4DD5-95F2-AAFEE8FACDFA} {65FC918C-FF12-4C75-96F5-180B552989E5} = {C0306556-68F4-4DD5-95F2-AAFEE8FACDFA} - {F2B014F7-3807-4938-8F02-3CF8247C47DC} = {C0306556-68F4-4DD5-95F2-AAFEE8FACDFA} {86BF4F10-3606-4016-9919-84C3335813B6} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} {C1F8C201-BBD9-44F4-884C-CFF8CC960B68} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} {B1DEA25C-7667-471B-BBAD-64D017FDD104} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} @@ -1951,7 +2080,9 @@ Global {85E90F57-8DE1-4912-8414-28578F4D71CD} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} {3E414663-B673-47A8-AB59-0E08FE43DA86} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} {6CD8CC3D-643D-4D09-8660-A26085C44FBC} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} - {785CE174-0A91-465F-9E41-65E6E05A0EC9} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} + {CB303F0B-0AA3-4589-850A-95E985A09492} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} + {61985B06-67FD-4941-B1B0-7F3794FD237C} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} {83C0070F-E639-4D65-B392-34F621165A1C} = {B75C60BF-F5B7-472E-A0A8-8A12DDDDAA7D} {0F3F166F-9927-4BC0-855F-ADB0D20218F1} = {B75C60BF-F5B7-472E-A0A8-8A12DDDDAA7D} {35E61C2A-2B8C-4AF4-AD21-353936581EF5} = {B75C60BF-F5B7-472E-A0A8-8A12DDDDAA7D} @@ -1974,8 +2105,6 @@ Global {87FB4F28-5DCC-4F21-B83E-59C85E1A7423} = {2F6B63C4-295A-433C-91CB-CAE4CADE6B8B} {FF377109-1931-499F-9346-449D259977F2} = {8A7F38C5-EF9A-410B-8539-A58879F3AA22} {34989C73-F82A-4905-9349-D0CF1419CD1C} = {8A7F38C5-EF9A-410B-8539-A58879F3AA22} - {308A4189-53AB-460D-B2B1-0EB4B9219654} = {8A7F38C5-EF9A-410B-8539-A58879F3AA22} - {8DA66999-005A-49AB-86A9-2C1F62905B50} = {8A7F38C5-EF9A-410B-8539-A58879F3AA22} {9FD2722C-1E6C-4061-8AC0-32EE28808FC0} = {218E3584-CDC7-4A77-AD1A-CF9FBE90F67F} EndGlobalSection EndGlobal diff --git a/BLToolkit.2012.sln b/BLToolkit.2012.sln new file mode 100644 index 000000000..af05f6e06 --- /dev/null +++ b/BLToolkit.2012.sln @@ -0,0 +1,2079 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.4", "Source\BLToolkit.4.csproj", "{0C325F5D-E50E-4340-8724-D29896CCC583}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UnitTests", "UnitTests", "{2CC0A340-512C-4F0D-A5E6-87C042EE13B9}" + ProjectSection(SolutionItems) = preProject + UnitTests\BLToolkit.Linq.nunit = UnitTests\BLToolkit.Linq.nunit + UnitTests\BLToolkit.nunit = UnitTests\BLToolkit.nunit + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests.Linq.Interface", "UnitTests\Linq\UnitTests.Linq.Interface.csproj", "{D527524F-EC92-465E-9CAE-86278121675A}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "UnitTests.Linq.VisualBasic", "UnitTests\Linq\UnitTests.Linq.VisualBasic.vbproj", "{D11617AB-9F88-4C74-8ABD-F8580DB4B01B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests.Linq", "UnitTests\Linq\UnitTests.Linq.csproj", "{07997A18-86D3-47AC-A514-AB1B03E6AEC8}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{C0306556-68F4-4DD5-95F2-AAFEE8FACDFA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Templates", "Tools\Templates\Templates.csproj", "{6E0C5565-F9A3-441C-9CB2-8B1878A800EF}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DataProviders", "DataProviders", "{E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.DB2.4", "DataProviders\DB2\BLToolkit.Data.DataProvider.DB2.4.csproj", "{86BF4F10-3606-4016-9919-84C3335813B6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Firebird.4", "DataProviders\Firebird\BLToolkit.Data.DataProvider.Firebird.4.csproj", "{C1F8C201-BBD9-44F4-884C-CFF8CC960B68}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Informix.4", "DataProviders\Informix\BLToolkit.Data.DataProvider.Informix.4.csproj", "{B1DEA25C-7667-471B-BBAD-64D017FDD104}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.MySql.4", "DataProviders\MySql\BLToolkit.Data.DataProvider.MySql.4.csproj", "{3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Oracle.4", "DataProviders\Oracle\BLToolkit.Data.DataProvider.Oracle.4.csproj", "{2B5287F2-A6AC-4D5A-B0A8-01C06144824D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.PostgreSQL.4", "DataProviders\PostgreSQL\BLToolkit.Data.DataProvider.PostgreSQL.4.csproj", "{5A556D57-0D68-433B-AD78-02849583582B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.SqlCe.4", "DataProviders\SqlCe\BLToolkit.Data.DataProvider.SqlCe.4.csproj", "{85E90F57-8DE1-4912-8414-28578F4D71CD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.SQLite.4", "DataProviders\SQLite\BLToolkit.Data.DataProvider.SQLite.4.csproj", "{3E414663-B673-47A8-AB59-0E08FE43DA86}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Sybase.4", "DataProviders\Sybase\BLToolkit.Data.DataProvider.Sybase.4.csproj", "{6CD8CC3D-643D-4D09-8660-A26085C44FBC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.SL.4", "Source\BLToolkit.SL.4.csproj", "{663D4BFC-F565-41F7-9409-510B560CCEE8}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Demo", "Demo", "{B75C60BF-F5B7-472E-A0A8-8A12DDDDAA7D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Silverlight", "Silverlight", "{83C0070F-E639-4D65-B392-34F621165A1C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client", "Demo\Silverlight\Client\Client.csproj", "{28693777-369C-4C0D-B076-38F7C0E5D06C}" + ProjectSection(ProjectDependencies) = postProject + {E796EF23-D63D-4EBD-A34D-5F243834933B} = {E796EF23-D63D-4EBD-A34D-5F243834933B} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Web", "Demo\Silverlight\Client.Web\Client.Web.csproj", "{E796EF23-D63D-4EBD-A34D-5F243834933B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Partial.Trust", "Partial.Trust", "{0F3F166F-9927-4BC0-855F-ADB0D20218F1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Partial.Trust.Components", "Demo\Partial.Trust\Components\Partial.Trust.Components.csproj", "{3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Partial.Trust.Asp.Net", "Demo\Partial.Trust\Asp.Net\Partial.Trust.Asp.Net.csproj", "{16272F10-9E3D-4C24-8761-8A43E9FB525F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLTgen.2010", "Tools\BLTgen\BLTgen.2010.csproj", "{65FC918C-FF12-4C75-96F5-180B552989E5}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WinForms", "WinForms", "{35E61C2A-2B8C-4AF4-AD21-353936581EF5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Demo", "Demo\WinForms\BLToolkit.Demo.csproj", "{854749E5-9264-42FF-A576-3B5784C7C14C}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Linq", "Linq", "{9475B894-944A-47CF-855D-93A0C42136C9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Linq.Demo.2010", "Demo\Linq\Demo\Linq.Demo.2010.csproj", "{57CE5505-44CB-42E4-A346-3471F68A5B60}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Linq.OverWCF", "Demo\Linq\OverWCF\Linq.OverWCF.csproj", "{7ED3B518-7CEA-4991-98BD-9752E5F32F58}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Asp.Net", "Asp.Net", "{FC77CB0E-4DBF-4CDF-A1AD-C6F830A849B0}" + ProjectSection(SolutionItems) = preProject + Demo\Asp.Net\ReadMe.txt = Demo\Asp.Net\ReadMe.txt + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PetShop.ObjectModel", "Demo\Asp.Net\ObjectModel\PetShop.ObjectModel.csproj", "{BF0811CA-4663-4778-8331-9BEEBCAAC8C8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PetShop.BusinessLogic", "Demo\Asp.Net\BusinessLogic\PetShop.BusinessLogic.csproj", "{01C318D0-1CB1-4CB4-A5ED-D311665C76EE}" +EndProject +Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "Web", "Demo\Asp.Net\Web\", "{7DAA2EBB-A724-498F-93BB-68966E2B738F}" + ProjectSection(WebsiteProperties) = preProject + SccProjectName = "" + SccAuxPath = "" + SccLocalPath = "" + SccProvider = "" + TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0" + ProjectReferences = "{0C325F5D-E50E-4340-8724-D29896CCC583}|BLToolkit.4.dll;{01C318D0-1CB1-4CB4-A5ED-D311665C76EE}|PetShop.BusinessLogic.dll;{BF0811CA-4663-4778-8331-9BEEBCAAC8C8}|PetShop.ObjectModel.dll;" + Debug.AspNetCompiler.VirtualPath = "/Web" + Debug.AspNetCompiler.PhysicalPath = "Demo\Asp.Net\Web\" + Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\Web\" + Debug.AspNetCompiler.Updateable = "true" + Debug.AspNetCompiler.ForceOverwrite = "true" + Debug.AspNetCompiler.FixedNames = "false" + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.VirtualPath = "/Web" + Release.AspNetCompiler.PhysicalPath = "Demo\Asp.Net\Web\" + Release.AspNetCompiler.TargetPath = "PrecompiledWeb\Web\" + Release.AspNetCompiler.Updateable = "true" + Release.AspNetCompiler.ForceOverwrite = "true" + Release.AspNetCompiler.FixedNames = "false" + Release.AspNetCompiler.Debug = "False" + VWDPort = "51456" + VWDDynamicPort = "false" + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebServices", "WebServices", "{2F6B63C4-295A-433C-91CB-CAE4CADE6B8B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ObjectModel", "Demo\WebServices\ObjectModel\ObjectModel.csproj", "{8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server", "Demo\WebServices\Server\Server.csproj", "{711A3803-4395-4E92-9B26-DC8DDDF80366}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client", "Demo\WebServices\Client\Client.csproj", "{4EBBF9E9-53B2-493C-ABAB-E915C187558F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Examples", "Examples", "{8A7F38C5-EF9A-410B-8539-A58879F3AA22}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Examples.CS", "Examples\CS\Examples.CS.csproj", "{34989C73-F82A-4905-9349-D0CF1419CD1C}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Examples.VB", "Examples\VB\Examples.VB.vbproj", "{308A4189-53AB-460D-B2B1-0EB4B9219654}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HowTo", "HowTo\HowTo.csproj", "{8DA66999-005A-49AB-86A9-2C1F62905B50}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Templates.VB", "Tools\Templates.VB\Templates.VB.vbproj", "{F2B014F7-3807-4938-8F02-3CF8247C47DC}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Create Scripts", "Create Scripts", "{4FDE7340-F60F-49BC-86CD-756CCD26C92A}" + ProjectSection(SolutionItems) = preProject + Data\Create Scripts\Access.sql = Data\Create Scripts\Access.sql + Data\Create Scripts\DB2.sql = Data\Create Scripts\DB2.sql + Data\Create Scripts\Firebird2.sql = Data\Create Scripts\Firebird2.sql + Data\Create Scripts\Informix.sql = Data\Create Scripts\Informix.sql + Data\Create Scripts\MsSql.sql = Data\Create Scripts\MsSql.sql + Data\Create Scripts\MySql.sql = Data\Create Scripts\MySql.sql + Data\Create Scripts\Oracle.sql = Data\Create Scripts\Oracle.sql + Data\Create Scripts\PostgreSQL.sql = Data\Create Scripts\PostgreSQL.sql + Data\Create Scripts\SqlCe.sql = Data\Create Scripts\SqlCe.sql + Data\Create Scripts\SQLite.sql = Data\Create Scripts\SQLite.sql + Data\Create Scripts\Sybase.sql = Data\Create Scripts\Sybase.sql + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests.CS", "UnitTests\CS\UnitTests.CS.csproj", "{2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests.All", "UnitTests\All\UnitTests.All.csproj", "{6AE74A35-B337-4B17-8092-E1B98DEF06AF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.4.JointureAddOn", "Extensions\JointureAddOn\BLToolkit.4.JointureAddOn.csproj", "{9FD2722C-1E6C-4061-8AC0-32EE28808FC0}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions", "Extensions", "{218E3584-CDC7-4A77-AD1A-CF9FBE90F67F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NuGet", "NuGet", "{4A9C0E31-8697-48BA-A46B-6A5EE78424D6}" + ProjectSection(SolutionItems) = preProject + NuGet\BLToolkit.DB2.nuspec = NuGet\BLToolkit.DB2.nuspec + NuGet\BLToolkit.DevartOraclePro.nuspec = NuGet\BLToolkit.DevartOraclePro.nuspec + NuGet\BLToolkit.Firebird.nuspec = NuGet\BLToolkit.Firebird.nuspec + NuGet\BLToolkit.Informix.nuspec = NuGet\BLToolkit.Informix.nuspec + NuGet\BLToolkit.MySql.nuspec = NuGet\BLToolkit.MySql.nuspec + NuGet\BLToolkit.nuspec = NuGet\BLToolkit.nuspec + NuGet\BLToolkit.Oracle.nuspec = NuGet\BLToolkit.Oracle.nuspec + NuGet\BLToolkit.PostgreSql.nuspec = NuGet\BLToolkit.PostgreSql.nuspec + NuGet\BLToolkit.SqlCe.nuspec = NuGet\BLToolkit.SqlCe.nuspec + NuGet\BLToolkit.SQLite.nuspec = NuGet\BLToolkit.SQLite.nuspec + NuGet\BLToolkit.Sybase.nuspec = NuGet\BLToolkit.Sybase.nuspec + NuGet\BLToolkit.symbols.nuspec = NuGet\BLToolkit.symbols.nuspec + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.4", "Source\BLToolkit.Data.4.csproj", "{0C325F5D-E50E-4340-8724-D29896CCC584}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.CP.4", "Source\BLToolkit.CP.4.csproj", "{0C325F5D-E50E-4340-8724-D29896CCC585}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NorthwindDataService", "Demo\WebServices\NorthwindDataService\NorthwindDataService.csproj", "{87FB4F28-5DCC-4F21-B83E-59C85E1A7423}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.OracleManaged.4", "DataProviders\Oracle\BLToolkit.Data.DataProvider.OracleManaged.4.csproj", "{61985B06-67FD-4941-B1B0-7F3794FD237C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.DevartOracle.4", "DataProviders\DevartOraclePro\BLToolkit.Data.DataProvider.DevartOracle.4.csproj", "{CB303F0B-0AA3-4589-850A-95E985A09492}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BLToolkit.Data.DataProvider.Generic.4", "DataProviders\Generic\BLToolkit.Data.DataProvider.Generic.4.csproj", "{6E7FE7FC-551F-4273-ACEB-72DC0D01120E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests.Fluent", "UnitTests\Fluent\UnitTests.Fluent.csproj", "{527300F8-9F04-434C-8239-4FE5E174FF6B}" +EndProject +<<<<<<< HEAD +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Examples.Cpp", "Examples\Cpp\Examples.Cpp.vcxproj", "{9D063CAA-4C44-4C5E-9C9E-74EFA4049FEC}" + ProjectSection(ProjectDependencies) = postProject + {0C325F5D-E50E-4340-8724-D29896CCC583} = {0C325F5D-E50E-4340-8724-D29896CCC583} + EndProjectSection +EndProject +======= +>>>>>>> 53d1ceacdf65b20d099321f78348d626df085662 +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug FW 3.5|Any CPU = Debug FW 3.5|Any CPU + Debug FW 3.5|Mixed Platforms = Debug FW 3.5|Mixed Platforms + Debug FW 3.5|Win32 = Debug FW 3.5|Win32 + Debug FW 3.5|x64 = Debug FW 3.5|x64 + Debug FW 3.5|x86 = Debug FW 3.5|x86 + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + DebugMono|Any CPU = DebugMono|Any CPU + DebugMono|Mixed Platforms = DebugMono|Mixed Platforms + DebugMono|Win32 = DebugMono|Win32 + DebugMono|x64 = DebugMono|x64 + DebugMono|x86 = DebugMono|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + ReleaseMono|Any CPU = ReleaseMono|Any CPU + ReleaseMono|Mixed Platforms = ReleaseMono|Mixed Platforms + ReleaseMono|Win32 = ReleaseMono|Win32 + ReleaseMono|x64 = ReleaseMono|x64 + ReleaseMono|x86 = ReleaseMono|x86 + Template|Any CPU = Template|Any CPU + Template|Mixed Platforms = Template|Mixed Platforms + Template|Win32 = Template|Win32 + Template|x64 = Template|x64 + Template|x86 = Template|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0C325F5D-E50E-4340-8724-D29896CCC583}.Debug FW 3.5|Any CPU.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Debug FW 3.5|Any CPU.Build.0 = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Debug FW 3.5|Mixed Platforms.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Debug FW 3.5|Mixed Platforms.Build.0 = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Debug FW 3.5|Win32.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Debug FW 3.5|x64.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Debug FW 3.5|x86.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Debug|Win32.ActiveCfg = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Debug|x64.ActiveCfg = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Debug|x86.ActiveCfg = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Release|Any CPU.Build.0 = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Release|Win32.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Release|x64.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Release|x86.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Template|Any CPU.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Template|Any CPU.Build.0 = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Template|Mixed Platforms.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Template|Mixed Platforms.Build.0 = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Template|Win32.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Template|x64.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC583}.Template|x86.ActiveCfg = Debug FW 3.5|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Debug FW 3.5|Any CPU.ActiveCfg = Debug FW 3.5|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Debug FW 3.5|Any CPU.Build.0 = Debug FW 3.5|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Debug FW 3.5|Mixed Platforms.ActiveCfg = Debug FW 3.5|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Debug FW 3.5|Mixed Platforms.Build.0 = Debug FW 3.5|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Debug FW 3.5|Win32.ActiveCfg = Debug FW 3.5|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Debug FW 3.5|x64.ActiveCfg = Debug FW 3.5|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Debug FW 3.5|x86.ActiveCfg = Debug FW 3.5|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Debug|Win32.ActiveCfg = Debug|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Debug|x64.ActiveCfg = Debug|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Debug|x86.ActiveCfg = Debug|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Release|Any CPU.Build.0 = Release|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Release|Win32.ActiveCfg = Release|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Release|x64.ActiveCfg = Release|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Release|x86.ActiveCfg = Release|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Template|Any CPU.ActiveCfg = Debug FW 3.5|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Template|Any CPU.Build.0 = Debug FW 3.5|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Template|Mixed Platforms.ActiveCfg = Debug FW 3.5|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Template|Mixed Platforms.Build.0 = Debug FW 3.5|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Template|Win32.ActiveCfg = Debug FW 3.5|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Template|x64.ActiveCfg = Debug FW 3.5|Any CPU + {D527524F-EC92-465E-9CAE-86278121675A}.Template|x86.ActiveCfg = Debug FW 3.5|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Debug FW 3.5|Any CPU.ActiveCfg = Debug FW 3.5|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Debug FW 3.5|Any CPU.Build.0 = Debug FW 3.5|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Debug FW 3.5|Mixed Platforms.ActiveCfg = Debug FW 3.5|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Debug FW 3.5|Mixed Platforms.Build.0 = Debug FW 3.5|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Debug FW 3.5|Win32.ActiveCfg = Debug FW 3.5|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Debug FW 3.5|x64.ActiveCfg = Debug FW 3.5|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Debug FW 3.5|x86.ActiveCfg = Debug FW 3.5|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Debug|Win32.ActiveCfg = Debug|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Debug|x64.ActiveCfg = Debug|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Debug|x86.ActiveCfg = Debug|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Release|Any CPU.Build.0 = Release|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Release|Win32.ActiveCfg = Release|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Release|x64.ActiveCfg = Release|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Release|x86.ActiveCfg = Release|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Template|Any CPU.ActiveCfg = Debug FW 3.5|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Template|Any CPU.Build.0 = Debug FW 3.5|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Template|Mixed Platforms.ActiveCfg = Debug FW 3.5|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Template|Mixed Platforms.Build.0 = Debug FW 3.5|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Template|Win32.ActiveCfg = Debug FW 3.5|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Template|x64.ActiveCfg = Debug FW 3.5|Any CPU + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B}.Template|x86.ActiveCfg = Debug FW 3.5|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Debug FW 3.5|Any CPU.ActiveCfg = Debug FW 3.5|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Debug FW 3.5|Any CPU.Build.0 = Debug FW 3.5|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Debug FW 3.5|Mixed Platforms.ActiveCfg = Debug FW 3.5|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Debug FW 3.5|Mixed Platforms.Build.0 = Debug FW 3.5|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Debug FW 3.5|Win32.ActiveCfg = Debug FW 3.5|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Debug FW 3.5|x64.ActiveCfg = Debug FW 3.5|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Debug FW 3.5|x86.ActiveCfg = Debug FW 3.5|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Debug|Win32.ActiveCfg = Debug|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Debug|x64.ActiveCfg = Debug|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Debug|x86.ActiveCfg = Debug|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Release|Any CPU.Build.0 = Release|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Release|Win32.ActiveCfg = Release|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Release|x64.ActiveCfg = Release|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Release|x86.ActiveCfg = Release|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Template|Any CPU.ActiveCfg = Debug FW 3.5|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Template|Any CPU.Build.0 = Debug FW 3.5|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Template|Mixed Platforms.ActiveCfg = Debug FW 3.5|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Template|Mixed Platforms.Build.0 = Debug FW 3.5|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Template|Win32.ActiveCfg = Debug FW 3.5|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Template|x64.ActiveCfg = Debug FW 3.5|Any CPU + {07997A18-86D3-47AC-A514-AB1B03E6AEC8}.Template|x86.ActiveCfg = Debug FW 3.5|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Debug|Win32.ActiveCfg = Debug|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Debug|x64.ActiveCfg = Debug|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Debug|x86.ActiveCfg = Debug|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Release|Any CPU.Build.0 = Release|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Release|Win32.ActiveCfg = Release|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Release|x64.ActiveCfg = Release|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Release|x86.ActiveCfg = Release|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Template|Any CPU.ActiveCfg = Release|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Template|Any CPU.Build.0 = Release|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Template|Win32.ActiveCfg = Release|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Template|x64.ActiveCfg = Release|Any CPU + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF}.Template|x86.ActiveCfg = Release|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Debug|Win32.ActiveCfg = Debug|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Debug|x64.ActiveCfg = Debug|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Debug|x86.ActiveCfg = Debug|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Release|Any CPU.Build.0 = Release|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Release|Win32.ActiveCfg = Release|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Release|x64.ActiveCfg = Release|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Release|x86.ActiveCfg = Release|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Template|Any CPU.ActiveCfg = Release|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Template|Any CPU.Build.0 = Release|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Template|Win32.ActiveCfg = Release|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Template|x64.ActiveCfg = Release|Any CPU + {86BF4F10-3606-4016-9919-84C3335813B6}.Template|x86.ActiveCfg = Release|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Debug|Win32.ActiveCfg = Debug|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Debug|x64.ActiveCfg = Debug|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Debug|x86.ActiveCfg = Debug|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Release|Any CPU.Build.0 = Release|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Release|Win32.ActiveCfg = Release|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Release|x64.ActiveCfg = Release|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Release|x86.ActiveCfg = Release|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Template|Any CPU.ActiveCfg = Release|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Template|Any CPU.Build.0 = Release|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Template|Win32.ActiveCfg = Release|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Template|x64.ActiveCfg = Release|Any CPU + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68}.Template|x86.ActiveCfg = Release|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Debug|Win32.ActiveCfg = Debug|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Debug|x64.ActiveCfg = Debug|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Debug|x86.ActiveCfg = Debug|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Release|Any CPU.Build.0 = Release|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Release|Win32.ActiveCfg = Release|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Release|x64.ActiveCfg = Release|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Release|x86.ActiveCfg = Release|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Template|Any CPU.ActiveCfg = Release|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Template|Any CPU.Build.0 = Release|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Template|Win32.ActiveCfg = Release|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Template|x64.ActiveCfg = Release|Any CPU + {B1DEA25C-7667-471B-BBAD-64D017FDD104}.Template|x86.ActiveCfg = Release|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Debug|Win32.ActiveCfg = Debug|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Debug|x64.ActiveCfg = Debug|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Debug|x86.ActiveCfg = Debug|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Release|Any CPU.Build.0 = Release|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Release|Win32.ActiveCfg = Release|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Release|x64.ActiveCfg = Release|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Release|x86.ActiveCfg = Release|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Template|Any CPU.ActiveCfg = Release|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Template|Any CPU.Build.0 = Release|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Template|Win32.ActiveCfg = Release|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Template|x64.ActiveCfg = Release|Any CPU + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}.Template|x86.ActiveCfg = Release|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Debug|Win32.ActiveCfg = Debug|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Debug|x64.ActiveCfg = Debug|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Debug|x86.ActiveCfg = Debug|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Release|Any CPU.Build.0 = Release|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Release|Win32.ActiveCfg = Release|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Release|x64.ActiveCfg = Release|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Release|x86.ActiveCfg = Release|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Template|Any CPU.ActiveCfg = Release|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Template|Any CPU.Build.0 = Release|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Template|Win32.ActiveCfg = Release|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Template|x64.ActiveCfg = Release|Any CPU + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D}.Template|x86.ActiveCfg = Release|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Debug|Win32.ActiveCfg = Debug|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Debug|x64.ActiveCfg = Debug|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Debug|x86.ActiveCfg = Debug|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Release|Any CPU.Build.0 = Release|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Release|Win32.ActiveCfg = Release|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Release|x64.ActiveCfg = Release|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Release|x86.ActiveCfg = Release|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Template|Any CPU.ActiveCfg = Release|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Template|Any CPU.Build.0 = Release|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Template|Win32.ActiveCfg = Release|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Template|x64.ActiveCfg = Release|Any CPU + {5A556D57-0D68-433B-AD78-02849583582B}.Template|x86.ActiveCfg = Release|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Debug|Win32.ActiveCfg = Debug|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Debug|x64.ActiveCfg = Debug|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Debug|x86.ActiveCfg = Debug|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Release|Any CPU.Build.0 = Release|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Release|Win32.ActiveCfg = Release|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Release|x64.ActiveCfg = Release|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Release|x86.ActiveCfg = Release|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Template|Any CPU.ActiveCfg = Release|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Template|Any CPU.Build.0 = Release|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Template|Win32.ActiveCfg = Release|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Template|x64.ActiveCfg = Release|Any CPU + {85E90F57-8DE1-4912-8414-28578F4D71CD}.Template|x86.ActiveCfg = Release|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Debug|Win32.ActiveCfg = Debug|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Debug|x64.ActiveCfg = Debug|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Debug|x86.ActiveCfg = Debug|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Release|Any CPU.Build.0 = Release|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Release|Win32.ActiveCfg = Release|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Release|x64.ActiveCfg = Release|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Release|x86.ActiveCfg = Release|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Template|Any CPU.ActiveCfg = Release|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Template|Any CPU.Build.0 = Release|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Template|Win32.ActiveCfg = Release|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Template|x64.ActiveCfg = Release|Any CPU + {3E414663-B673-47A8-AB59-0E08FE43DA86}.Template|x86.ActiveCfg = Release|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Debug|Win32.ActiveCfg = Debug|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Debug|x64.ActiveCfg = Debug|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Debug|x86.ActiveCfg = Debug|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Release|Any CPU.Build.0 = Release|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Release|Win32.ActiveCfg = Release|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Release|x64.ActiveCfg = Release|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Release|x86.ActiveCfg = Release|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Template|Any CPU.ActiveCfg = Release|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Template|Any CPU.Build.0 = Release|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Template|Win32.ActiveCfg = Release|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Template|x64.ActiveCfg = Release|Any CPU + {6CD8CC3D-643D-4D09-8660-A26085C44FBC}.Template|x86.ActiveCfg = Release|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Debug|Win32.ActiveCfg = Debug|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Debug|x64.ActiveCfg = Debug|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Debug|x86.ActiveCfg = Debug|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Release|Any CPU.Build.0 = Release|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Release|Win32.ActiveCfg = Release|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Release|x64.ActiveCfg = Release|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Release|x86.ActiveCfg = Release|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Template|Any CPU.ActiveCfg = Release|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Template|Any CPU.Build.0 = Release|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Template|Win32.ActiveCfg = Release|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Template|x64.ActiveCfg = Release|Any CPU + {663D4BFC-F565-41F7-9409-510B560CCEE8}.Template|x86.ActiveCfg = Release|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Debug|Win32.ActiveCfg = Debug|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Debug|x64.ActiveCfg = Debug|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Debug|x86.ActiveCfg = Debug|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Release|Any CPU.Build.0 = Release|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Release|Win32.ActiveCfg = Release|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Release|x64.ActiveCfg = Release|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Release|x86.ActiveCfg = Release|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Template|Any CPU.ActiveCfg = Release|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Template|Any CPU.Build.0 = Release|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Template|Win32.ActiveCfg = Release|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Template|x64.ActiveCfg = Release|Any CPU + {28693777-369C-4C0D-B076-38F7C0E5D06C}.Template|x86.ActiveCfg = Release|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Debug|Win32.ActiveCfg = Debug|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Debug|x64.ActiveCfg = Debug|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Debug|x86.ActiveCfg = Debug|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Release|Any CPU.Build.0 = Release|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Release|Win32.ActiveCfg = Release|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Release|x64.ActiveCfg = Release|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Release|x86.ActiveCfg = Release|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Template|Any CPU.ActiveCfg = Release|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Template|Any CPU.Build.0 = Release|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Template|Win32.ActiveCfg = Release|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Template|x64.ActiveCfg = Release|Any CPU + {E796EF23-D63D-4EBD-A34D-5F243834933B}.Template|x86.ActiveCfg = Release|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Debug|Win32.ActiveCfg = Debug|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Debug|x64.ActiveCfg = Debug|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Debug|x86.ActiveCfg = Debug|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Release|Any CPU.Build.0 = Release|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Release|Win32.ActiveCfg = Release|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Release|x64.ActiveCfg = Release|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Release|x86.ActiveCfg = Release|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Template|Any CPU.ActiveCfg = Release|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Template|Any CPU.Build.0 = Release|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Template|Win32.ActiveCfg = Release|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Template|x64.ActiveCfg = Release|Any CPU + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7}.Template|x86.ActiveCfg = Release|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Debug|Win32.ActiveCfg = Debug|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Debug|x64.ActiveCfg = Debug|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Debug|x86.ActiveCfg = Debug|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Release|Any CPU.Build.0 = Release|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Release|Win32.ActiveCfg = Release|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Release|x64.ActiveCfg = Release|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Release|x86.ActiveCfg = Release|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Template|Any CPU.ActiveCfg = Release|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Template|Any CPU.Build.0 = Release|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Template|Win32.ActiveCfg = Release|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Template|x64.ActiveCfg = Release|Any CPU + {16272F10-9E3D-4C24-8761-8A43E9FB525F}.Template|x86.ActiveCfg = Release|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Debug|Win32.ActiveCfg = Debug|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Debug|x64.ActiveCfg = Debug|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Debug|x86.ActiveCfg = Debug|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Release|Any CPU.Build.0 = Release|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Release|Win32.ActiveCfg = Release|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Release|x64.ActiveCfg = Release|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Release|x86.ActiveCfg = Release|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Template|Any CPU.ActiveCfg = Release|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Template|Any CPU.Build.0 = Release|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Template|Win32.ActiveCfg = Release|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Template|x64.ActiveCfg = Release|Any CPU + {65FC918C-FF12-4C75-96F5-180B552989E5}.Template|x86.ActiveCfg = Release|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Debug|Win32.ActiveCfg = Debug|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Debug|x64.ActiveCfg = Debug|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Debug|x86.ActiveCfg = Debug|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Release|Any CPU.Build.0 = Release|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Release|Win32.ActiveCfg = Release|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Release|x64.ActiveCfg = Release|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Release|x86.ActiveCfg = Release|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Template|Any CPU.ActiveCfg = Release|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Template|Any CPU.Build.0 = Release|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Template|Win32.ActiveCfg = Release|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Template|x64.ActiveCfg = Release|Any CPU + {854749E5-9264-42FF-A576-3B5784C7C14C}.Template|x86.ActiveCfg = Release|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Debug|Any CPU.Build.0 = Debug|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Debug|Win32.ActiveCfg = Debug|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Debug|x64.ActiveCfg = Debug|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Debug|x86.ActiveCfg = Debug|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Release|Any CPU.ActiveCfg = Release|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Release|Any CPU.Build.0 = Release|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Release|Win32.ActiveCfg = Release|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Release|x64.ActiveCfg = Release|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Release|x86.ActiveCfg = Release|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Template|Any CPU.ActiveCfg = Release|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Template|Any CPU.Build.0 = Release|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Template|Win32.ActiveCfg = Release|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Template|x64.ActiveCfg = Release|Any CPU + {57CE5505-44CB-42E4-A346-3471F68A5B60}.Template|x86.ActiveCfg = Release|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Debug|Win32.ActiveCfg = Debug|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Debug|x64.ActiveCfg = Debug|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Debug|x86.ActiveCfg = Debug|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Release|Any CPU.Build.0 = Release|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Release|Win32.ActiveCfg = Release|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Release|x64.ActiveCfg = Release|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Release|x86.ActiveCfg = Release|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Template|Any CPU.ActiveCfg = Release|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Template|Any CPU.Build.0 = Release|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Template|Win32.ActiveCfg = Release|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Template|x64.ActiveCfg = Release|Any CPU + {7ED3B518-7CEA-4991-98BD-9752E5F32F58}.Template|x86.ActiveCfg = Release|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Debug|Win32.ActiveCfg = Debug|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Debug|x64.ActiveCfg = Debug|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Debug|x86.ActiveCfg = Debug|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Release|Any CPU.Build.0 = Release|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Release|Win32.ActiveCfg = Release|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Release|x64.ActiveCfg = Release|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Release|x86.ActiveCfg = Release|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Template|Any CPU.ActiveCfg = Release|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Template|Any CPU.Build.0 = Release|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Template|Win32.ActiveCfg = Release|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Template|x64.ActiveCfg = Release|Any CPU + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8}.Template|x86.ActiveCfg = Release|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Debug|Win32.ActiveCfg = Debug|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Debug|x64.ActiveCfg = Debug|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Debug|x86.ActiveCfg = Debug|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Release|Any CPU.Build.0 = Release|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Release|Win32.ActiveCfg = Release|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Release|x64.ActiveCfg = Release|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Release|x86.ActiveCfg = Release|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Template|Any CPU.ActiveCfg = Release|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Template|Any CPU.Build.0 = Release|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Template|Win32.ActiveCfg = Release|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Template|x64.ActiveCfg = Release|Any CPU + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE}.Template|x86.ActiveCfg = Release|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Debug FW 3.5|Any CPU.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Debug FW 3.5|Any CPU.Build.0 = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Debug FW 3.5|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Debug FW 3.5|Mixed Platforms.Build.0 = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Debug FW 3.5|Win32.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Debug FW 3.5|x64.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Debug FW 3.5|x86.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Debug|Win32.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Debug|x64.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Debug|x86.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.DebugMono|Any CPU.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.DebugMono|Any CPU.Build.0 = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.DebugMono|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.DebugMono|Mixed Platforms.Build.0 = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.DebugMono|Win32.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.DebugMono|x64.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.DebugMono|x86.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Release|Any CPU.Build.0 = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Release|Mixed Platforms.Build.0 = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Release|Win32.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Release|x64.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Release|x86.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.ReleaseMono|Any CPU.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.ReleaseMono|Any CPU.Build.0 = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.ReleaseMono|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.ReleaseMono|Mixed Platforms.Build.0 = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.ReleaseMono|Win32.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.ReleaseMono|x64.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.ReleaseMono|x86.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Template|Any CPU.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Template|Any CPU.Build.0 = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Template|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Template|Mixed Platforms.Build.0 = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Template|Win32.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Template|x64.ActiveCfg = Debug|Any CPU + {7DAA2EBB-A724-498F-93BB-68966E2B738F}.Template|x86.ActiveCfg = Debug|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Debug|Win32.ActiveCfg = Debug|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Debug|x64.ActiveCfg = Debug|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Debug|x86.ActiveCfg = Debug|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Release|Any CPU.Build.0 = Release|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Release|Win32.ActiveCfg = Release|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Release|x64.ActiveCfg = Release|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Release|x86.ActiveCfg = Release|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Template|Any CPU.ActiveCfg = Release|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Template|Any CPU.Build.0 = Release|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Template|Win32.ActiveCfg = Release|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Template|x64.ActiveCfg = Release|Any CPU + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6}.Template|x86.ActiveCfg = Release|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Debug|Any CPU.Build.0 = Debug|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Debug|Win32.ActiveCfg = Debug|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Debug|x64.ActiveCfg = Debug|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Debug|x86.ActiveCfg = Debug|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Release|Any CPU.ActiveCfg = Release|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Release|Any CPU.Build.0 = Release|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Release|Win32.ActiveCfg = Release|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Release|x64.ActiveCfg = Release|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Release|x86.ActiveCfg = Release|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Template|Any CPU.ActiveCfg = Release|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Template|Any CPU.Build.0 = Release|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Template|Win32.ActiveCfg = Release|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Template|x64.ActiveCfg = Release|Any CPU + {711A3803-4395-4E92-9B26-DC8DDDF80366}.Template|x86.ActiveCfg = Release|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Debug|Win32.ActiveCfg = Debug|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Debug|x64.ActiveCfg = Debug|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Debug|x86.ActiveCfg = Debug|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Release|Any CPU.Build.0 = Release|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Release|Win32.ActiveCfg = Release|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Release|x64.ActiveCfg = Release|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Release|x86.ActiveCfg = Release|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Template|Any CPU.ActiveCfg = Release|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Template|Any CPU.Build.0 = Release|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Template|Win32.ActiveCfg = Release|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Template|x64.ActiveCfg = Release|Any CPU + {4EBBF9E9-53B2-493C-ABAB-E915C187558F}.Template|x86.ActiveCfg = Release|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Debug|Win32.ActiveCfg = Debug|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Debug|x64.ActiveCfg = Debug|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Debug|x86.ActiveCfg = Debug|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Release|Any CPU.Build.0 = Release|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Release|Win32.ActiveCfg = Release|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Release|x64.ActiveCfg = Release|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Release|x86.ActiveCfg = Release|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Template|Any CPU.ActiveCfg = Release|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Template|Any CPU.Build.0 = Release|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Template|Win32.ActiveCfg = Release|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Template|x64.ActiveCfg = Release|Any CPU + {34989C73-F82A-4905-9349-D0CF1419CD1C}.Template|x86.ActiveCfg = Release|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Debug|Any CPU.Build.0 = Debug|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Debug|Win32.ActiveCfg = Debug|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Debug|x64.ActiveCfg = Debug|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Debug|x86.ActiveCfg = Debug|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Release|Any CPU.ActiveCfg = Release|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Release|Any CPU.Build.0 = Release|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Release|Win32.ActiveCfg = Release|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Release|x64.ActiveCfg = Release|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Release|x86.ActiveCfg = Release|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Template|Any CPU.ActiveCfg = Release|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Template|Any CPU.Build.0 = Release|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Template|Win32.ActiveCfg = Release|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Template|x64.ActiveCfg = Release|Any CPU + {308A4189-53AB-460D-B2B1-0EB4B9219654}.Template|x86.ActiveCfg = Release|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Debug|Win32.ActiveCfg = Debug|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Debug|x64.ActiveCfg = Debug|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Debug|x86.ActiveCfg = Debug|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Release|Any CPU.Build.0 = Release|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Release|Win32.ActiveCfg = Release|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Release|x64.ActiveCfg = Release|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Release|x86.ActiveCfg = Release|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Template|Any CPU.ActiveCfg = Release|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Template|Any CPU.Build.0 = Release|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Template|Win32.ActiveCfg = Release|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Template|x64.ActiveCfg = Release|Any CPU + {8DA66999-005A-49AB-86A9-2C1F62905B50}.Template|x86.ActiveCfg = Release|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Debug|Win32.ActiveCfg = Debug|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Debug|x64.ActiveCfg = Debug|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Debug|x86.ActiveCfg = Debug|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Release|Any CPU.Build.0 = Release|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Release|Win32.ActiveCfg = Release|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Release|x64.ActiveCfg = Release|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Release|x86.ActiveCfg = Release|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Template|Any CPU.ActiveCfg = Release|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Template|Any CPU.Build.0 = Release|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Template|Win32.ActiveCfg = Release|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Template|x64.ActiveCfg = Release|Any CPU + {F2B014F7-3807-4938-8F02-3CF8247C47DC}.Template|x86.ActiveCfg = Release|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Debug|Win32.ActiveCfg = Debug|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Debug|x64.ActiveCfg = Debug|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Debug|x86.ActiveCfg = Debug|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Release|Any CPU.Build.0 = Release|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Release|Win32.ActiveCfg = Release|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Release|x64.ActiveCfg = Release|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Release|x86.ActiveCfg = Release|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Template|Any CPU.ActiveCfg = Release|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Template|Any CPU.Build.0 = Release|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Template|Win32.ActiveCfg = Release|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Template|x64.ActiveCfg = Release|Any CPU + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA}.Template|x86.ActiveCfg = Release|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Debug|Win32.ActiveCfg = Debug|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Debug|x64.ActiveCfg = Debug|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Debug|x86.ActiveCfg = Debug|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Release|Any CPU.Build.0 = Release|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Release|Win32.ActiveCfg = Release|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Release|x64.ActiveCfg = Release|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Release|x86.ActiveCfg = Release|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Template|Any CPU.ActiveCfg = Release|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Template|Any CPU.Build.0 = Release|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Template|Win32.ActiveCfg = Release|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Template|x64.ActiveCfg = Release|Any CPU + {6AE74A35-B337-4B17-8092-E1B98DEF06AF}.Template|x86.ActiveCfg = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Debug FW 3.5|Any CPU.ActiveCfg = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Debug FW 3.5|Any CPU.Build.0 = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Debug FW 3.5|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Debug FW 3.5|Mixed Platforms.Build.0 = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Debug FW 3.5|Win32.ActiveCfg = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Debug FW 3.5|x64.ActiveCfg = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Debug FW 3.5|x86.ActiveCfg = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Debug|Win32.ActiveCfg = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Debug|x64.ActiveCfg = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Debug|x86.ActiveCfg = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.DebugMono|Any CPU.ActiveCfg = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.DebugMono|Any CPU.Build.0 = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.DebugMono|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.DebugMono|Mixed Platforms.Build.0 = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.DebugMono|Win32.ActiveCfg = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.DebugMono|x64.ActiveCfg = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.DebugMono|x86.ActiveCfg = Debug|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Release|Any CPU.Build.0 = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Release|Win32.ActiveCfg = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Release|x64.ActiveCfg = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Release|x86.ActiveCfg = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.ReleaseMono|Any CPU.ActiveCfg = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.ReleaseMono|Any CPU.Build.0 = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.ReleaseMono|Mixed Platforms.ActiveCfg = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.ReleaseMono|Mixed Platforms.Build.0 = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.ReleaseMono|Win32.ActiveCfg = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.ReleaseMono|x64.ActiveCfg = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.ReleaseMono|x86.ActiveCfg = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Template|Any CPU.ActiveCfg = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Template|Any CPU.Build.0 = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Template|Win32.ActiveCfg = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Template|x64.ActiveCfg = Release|Any CPU + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0}.Template|x86.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug FW 3.5|Any CPU.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug FW 3.5|Any CPU.Build.0 = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug FW 3.5|Mixed Platforms.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug FW 3.5|Mixed Platforms.Build.0 = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug FW 3.5|Win32.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug FW 3.5|x64.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug FW 3.5|x86.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug|Win32.ActiveCfg = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug|x64.ActiveCfg = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Debug|x86.ActiveCfg = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Release|Any CPU.Build.0 = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Release|Win32.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Release|x64.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Release|x86.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Template|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Template|Any CPU.Build.0 = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Template|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Template|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Template|Win32.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Template|x64.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC584}.Template|x86.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Debug FW 3.5|Any CPU.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Debug FW 3.5|Any CPU.Build.0 = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Debug FW 3.5|Mixed Platforms.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Debug FW 3.5|Mixed Platforms.Build.0 = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Debug FW 3.5|Win32.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Debug FW 3.5|x64.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Debug FW 3.5|x86.ActiveCfg = Debug FW 3.5|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Debug|Win32.ActiveCfg = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Debug|x64.ActiveCfg = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Debug|x86.ActiveCfg = Debug|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Release|Any CPU.Build.0 = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Release|Win32.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Release|x64.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Release|x86.ActiveCfg = Release|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Template|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Template|Any CPU.Build.0 = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Template|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Template|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Template|Win32.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Template|x64.ActiveCfg = ReleaseMono|Any CPU + {0C325F5D-E50E-4340-8724-D29896CCC585}.Template|x86.ActiveCfg = ReleaseMono|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Debug FW 3.5|Any CPU.ActiveCfg = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Debug FW 3.5|Any CPU.Build.0 = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Debug FW 3.5|Mixed Platforms.ActiveCfg = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Debug FW 3.5|Mixed Platforms.Build.0 = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Debug FW 3.5|Win32.ActiveCfg = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Debug FW 3.5|x64.ActiveCfg = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Debug FW 3.5|x86.ActiveCfg = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Debug|Any CPU.Build.0 = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Debug|Win32.ActiveCfg = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Debug|x64.ActiveCfg = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Debug|x86.ActiveCfg = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.DebugMono|Any CPU.ActiveCfg = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.DebugMono|Any CPU.Build.0 = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.DebugMono|Mixed Platforms.ActiveCfg = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.DebugMono|Mixed Platforms.Build.0 = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.DebugMono|Win32.ActiveCfg = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.DebugMono|x64.ActiveCfg = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.DebugMono|x86.ActiveCfg = Debug|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Release|Any CPU.ActiveCfg = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Release|Any CPU.Build.0 = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Release|Win32.ActiveCfg = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Release|x64.ActiveCfg = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Release|x86.ActiveCfg = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.ReleaseMono|Any CPU.ActiveCfg = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.ReleaseMono|Any CPU.Build.0 = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.ReleaseMono|Mixed Platforms.ActiveCfg = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.ReleaseMono|Mixed Platforms.Build.0 = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.ReleaseMono|Win32.ActiveCfg = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.ReleaseMono|x64.ActiveCfg = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.ReleaseMono|x86.ActiveCfg = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Template|Any CPU.ActiveCfg = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Template|Any CPU.Build.0 = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Template|Win32.ActiveCfg = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Template|x64.ActiveCfg = Release|Any CPU + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423}.Template|x86.ActiveCfg = Release|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug FW 3.5|Any CPU.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug FW 3.5|Any CPU.Build.0 = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug FW 3.5|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug FW 3.5|Mixed Platforms.Build.0 = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug FW 3.5|Win32.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug FW 3.5|x64.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug FW 3.5|x86.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug|Win32.ActiveCfg = Debug|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug|x64.ActiveCfg = Debug|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Debug|x86.ActiveCfg = Debug|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.DebugMono|Any CPU.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.DebugMono|Any CPU.Build.0 = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.DebugMono|Mixed Platforms.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.DebugMono|Mixed Platforms.Build.0 = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.DebugMono|Win32.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Release|Any CPU.Build.0 = Release|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Release|Win32.ActiveCfg = Release|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Release|x64.ActiveCfg = Release|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Release|x86.ActiveCfg = Release|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.ReleaseMono|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.ReleaseMono|Any CPU.Build.0 = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.ReleaseMono|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.ReleaseMono|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.ReleaseMono|Win32.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Template|Any CPU.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Template|Any CPU.Build.0 = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Template|Mixed Platforms.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Template|Mixed Platforms.Build.0 = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Template|Win32.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Template|x64.ActiveCfg = ReleaseMono|Any CPU + {61985B06-67FD-4941-B1B0-7F3794FD237C}.Template|x86.ActiveCfg = ReleaseMono|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug FW 3.5|Any CPU.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug FW 3.5|Any CPU.Build.0 = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug FW 3.5|Mixed Platforms.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug FW 3.5|Mixed Platforms.Build.0 = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug FW 3.5|Win32.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug FW 3.5|x64.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug FW 3.5|x86.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug|Win32.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug|x64.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Debug|x86.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.DebugMono|Any CPU.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.DebugMono|Any CPU.Build.0 = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.DebugMono|Mixed Platforms.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.DebugMono|Mixed Platforms.Build.0 = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.DebugMono|Win32.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.DebugMono|x64.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.DebugMono|x86.ActiveCfg = Debug|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Release|Any CPU.Build.0 = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Release|Win32.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Release|x64.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Release|x86.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.ReleaseMono|Any CPU.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.ReleaseMono|Any CPU.Build.0 = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.ReleaseMono|Mixed Platforms.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.ReleaseMono|Mixed Platforms.Build.0 = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.ReleaseMono|Win32.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.ReleaseMono|x64.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.ReleaseMono|x86.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Template|Any CPU.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Template|Any CPU.Build.0 = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Template|Win32.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Template|x64.ActiveCfg = Release|Any CPU + {CB303F0B-0AA3-4589-850A-95E985A09492}.Template|x86.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug FW 3.5|Any CPU.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug FW 3.5|Any CPU.Build.0 = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug FW 3.5|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug FW 3.5|Mixed Platforms.Build.0 = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug FW 3.5|Win32.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug FW 3.5|x64.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug FW 3.5|x86.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug|Win32.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug|x64.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Debug|x86.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.DebugMono|Any CPU.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.DebugMono|Any CPU.Build.0 = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.DebugMono|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.DebugMono|Mixed Platforms.Build.0 = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.DebugMono|Win32.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.DebugMono|x64.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.DebugMono|x86.ActiveCfg = Debug|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Release|Any CPU.Build.0 = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Release|Win32.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Release|x64.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Release|x86.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.ReleaseMono|Any CPU.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.ReleaseMono|Any CPU.Build.0 = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.ReleaseMono|Mixed Platforms.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.ReleaseMono|Mixed Platforms.Build.0 = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.ReleaseMono|Win32.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.ReleaseMono|x64.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.ReleaseMono|x86.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Template|Any CPU.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Template|Any CPU.Build.0 = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Template|Win32.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Template|x64.ActiveCfg = Release|Any CPU + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E}.Template|x86.ActiveCfg = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Debug FW 3.5|Any CPU.ActiveCfg = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Debug FW 3.5|Any CPU.Build.0 = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Debug FW 3.5|Mixed Platforms.ActiveCfg = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Debug FW 3.5|Mixed Platforms.Build.0 = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Debug FW 3.5|Win32.ActiveCfg = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Debug FW 3.5|x64.ActiveCfg = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Debug FW 3.5|x86.ActiveCfg = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Debug|Win32.ActiveCfg = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Debug|x64.ActiveCfg = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Debug|x86.ActiveCfg = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.DebugMono|Any CPU.ActiveCfg = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.DebugMono|Any CPU.Build.0 = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.DebugMono|Mixed Platforms.ActiveCfg = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.DebugMono|Mixed Platforms.Build.0 = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.DebugMono|Win32.ActiveCfg = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.DebugMono|x64.ActiveCfg = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.DebugMono|x86.ActiveCfg = Debug|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Release|Any CPU.Build.0 = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Release|Win32.ActiveCfg = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Release|x64.ActiveCfg = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Release|x86.ActiveCfg = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.ReleaseMono|Any CPU.ActiveCfg = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.ReleaseMono|Any CPU.Build.0 = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.ReleaseMono|Mixed Platforms.ActiveCfg = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.ReleaseMono|Mixed Platforms.Build.0 = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.ReleaseMono|Win32.ActiveCfg = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.ReleaseMono|x64.ActiveCfg = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.ReleaseMono|x86.ActiveCfg = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Template|Any CPU.ActiveCfg = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Template|Any CPU.Build.0 = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Template|Mixed Platforms.ActiveCfg = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Template|Mixed Platforms.Build.0 = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Template|Win32.ActiveCfg = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Template|x64.ActiveCfg = Release|Any CPU + {527300F8-9F04-434C-8239-4FE5E174FF6B}.Template|x86.ActiveCfg = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {D527524F-EC92-465E-9CAE-86278121675A} = {2CC0A340-512C-4F0D-A5E6-87C042EE13B9} + {D11617AB-9F88-4C74-8ABD-F8580DB4B01B} = {2CC0A340-512C-4F0D-A5E6-87C042EE13B9} + {07997A18-86D3-47AC-A514-AB1B03E6AEC8} = {2CC0A340-512C-4F0D-A5E6-87C042EE13B9} + {4FDE7340-F60F-49BC-86CD-756CCD26C92A} = {2CC0A340-512C-4F0D-A5E6-87C042EE13B9} + {2BB4AD77-190F-4D7E-A83E-7B254A0A1FCA} = {2CC0A340-512C-4F0D-A5E6-87C042EE13B9} + {6AE74A35-B337-4B17-8092-E1B98DEF06AF} = {2CC0A340-512C-4F0D-A5E6-87C042EE13B9} + {527300F8-9F04-434C-8239-4FE5E174FF6B} = {2CC0A340-512C-4F0D-A5E6-87C042EE13B9} + {6E0C5565-F9A3-441C-9CB2-8B1878A800EF} = {C0306556-68F4-4DD5-95F2-AAFEE8FACDFA} + {65FC918C-FF12-4C75-96F5-180B552989E5} = {C0306556-68F4-4DD5-95F2-AAFEE8FACDFA} + {F2B014F7-3807-4938-8F02-3CF8247C47DC} = {C0306556-68F4-4DD5-95F2-AAFEE8FACDFA} + {86BF4F10-3606-4016-9919-84C3335813B6} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} + {C1F8C201-BBD9-44F4-884C-CFF8CC960B68} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} + {B1DEA25C-7667-471B-BBAD-64D017FDD104} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} + {3578AF4C-CBFF-4A38-88F5-E86AC990AFBD} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} + {2B5287F2-A6AC-4D5A-B0A8-01C06144824D} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} + {5A556D57-0D68-433B-AD78-02849583582B} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} + {85E90F57-8DE1-4912-8414-28578F4D71CD} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} + {3E414663-B673-47A8-AB59-0E08FE43DA86} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} + {6CD8CC3D-643D-4D09-8660-A26085C44FBC} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} + {61985B06-67FD-4941-B1B0-7F3794FD237C} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} + {CB303F0B-0AA3-4589-850A-95E985A09492} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} + {6E7FE7FC-551F-4273-ACEB-72DC0D01120E} = {E6CE0ECB-3373-4DC0-98CB-F4E9DC2293C4} + {83C0070F-E639-4D65-B392-34F621165A1C} = {B75C60BF-F5B7-472E-A0A8-8A12DDDDAA7D} + {0F3F166F-9927-4BC0-855F-ADB0D20218F1} = {B75C60BF-F5B7-472E-A0A8-8A12DDDDAA7D} + {35E61C2A-2B8C-4AF4-AD21-353936581EF5} = {B75C60BF-F5B7-472E-A0A8-8A12DDDDAA7D} + {9475B894-944A-47CF-855D-93A0C42136C9} = {B75C60BF-F5B7-472E-A0A8-8A12DDDDAA7D} + {FC77CB0E-4DBF-4CDF-A1AD-C6F830A849B0} = {B75C60BF-F5B7-472E-A0A8-8A12DDDDAA7D} + {2F6B63C4-295A-433C-91CB-CAE4CADE6B8B} = {B75C60BF-F5B7-472E-A0A8-8A12DDDDAA7D} + {28693777-369C-4C0D-B076-38F7C0E5D06C} = {83C0070F-E639-4D65-B392-34F621165A1C} + {E796EF23-D63D-4EBD-A34D-5F243834933B} = {83C0070F-E639-4D65-B392-34F621165A1C} + {3BCB17AC-9941-4460-858B-2B7BC3BEDDE7} = {0F3F166F-9927-4BC0-855F-ADB0D20218F1} + {16272F10-9E3D-4C24-8761-8A43E9FB525F} = {0F3F166F-9927-4BC0-855F-ADB0D20218F1} + {854749E5-9264-42FF-A576-3B5784C7C14C} = {35E61C2A-2B8C-4AF4-AD21-353936581EF5} + {57CE5505-44CB-42E4-A346-3471F68A5B60} = {9475B894-944A-47CF-855D-93A0C42136C9} + {7ED3B518-7CEA-4991-98BD-9752E5F32F58} = {9475B894-944A-47CF-855D-93A0C42136C9} + {BF0811CA-4663-4778-8331-9BEEBCAAC8C8} = {FC77CB0E-4DBF-4CDF-A1AD-C6F830A849B0} + {01C318D0-1CB1-4CB4-A5ED-D311665C76EE} = {FC77CB0E-4DBF-4CDF-A1AD-C6F830A849B0} + {7DAA2EBB-A724-498F-93BB-68966E2B738F} = {FC77CB0E-4DBF-4CDF-A1AD-C6F830A849B0} + {8F9F4193-9104-4AA6-8E04-91CD9FDEC2E6} = {2F6B63C4-295A-433C-91CB-CAE4CADE6B8B} + {711A3803-4395-4E92-9B26-DC8DDDF80366} = {2F6B63C4-295A-433C-91CB-CAE4CADE6B8B} + {4EBBF9E9-53B2-493C-ABAB-E915C187558F} = {2F6B63C4-295A-433C-91CB-CAE4CADE6B8B} + {87FB4F28-5DCC-4F21-B83E-59C85E1A7423} = {2F6B63C4-295A-433C-91CB-CAE4CADE6B8B} + {34989C73-F82A-4905-9349-D0CF1419CD1C} = {8A7F38C5-EF9A-410B-8539-A58879F3AA22} + {308A4189-53AB-460D-B2B1-0EB4B9219654} = {8A7F38C5-EF9A-410B-8539-A58879F3AA22} + {8DA66999-005A-49AB-86A9-2C1F62905B50} = {8A7F38C5-EF9A-410B-8539-A58879F3AA22} + {9FD2722C-1E6C-4061-8AC0-32EE28808FC0} = {218E3584-CDC7-4A77-AD1A-CF9FBE90F67F} + EndGlobalSection +EndGlobal diff --git a/Data/BLToolkitData.mdb b/Data/BLToolkitData.mdb index da3924256..b46db5de1 100644 Binary files a/Data/BLToolkitData.mdb and b/Data/BLToolkitData.mdb differ diff --git a/Data/BLToolkitData.sdf b/Data/BLToolkitData.sdf index 1fc88217a..9a0eaf777 100644 Binary files a/Data/BLToolkitData.sdf and b/Data/BLToolkitData.sdf differ diff --git a/Data/BLToolkitData.sqlite b/Data/BLToolkitData.sqlite index 8e3300157..76fd5a710 100644 Binary files a/Data/BLToolkitData.sqlite and b/Data/BLToolkitData.sqlite differ diff --git a/Data/Create Scripts/Firebird2.sql b/Data/Create Scripts/Firebird2.sql index e1243a144..8c92636aa 100644 --- a/Data/Create Scripts/Firebird2.sql +++ b/Data/Create Scripts/Firebird2.sql @@ -22,6 +22,8 @@ DROP GENERATOR DataTypeID; COMMIT; DROP GENERATOR PersonID; COMMIT; DROP GENERATOR TimestampGen; COMMIT; +DROP VIEW PersonView; COMMIT; + DROP TABLE Dual; COMMIT; DROP TABLE DataTypeTest; COMMIT; DROP TABLE BinaryData; COMMIT; @@ -282,7 +284,7 @@ AS BEGIN FOR SELECT - Person.PersonID, + Person.PersonID, FirstName, LastName, MiddleName, @@ -293,10 +295,10 @@ BEGIN WHERE Patient.PersonID = Person.PersonID INTO - :PersonID, - :FirstName, - :LastName, - :MiddleName, + :PersonID, + :FirstName, + :LastName, + :MiddleName, :Gender, :Diagnosis DO SUSPEND; @@ -527,9 +529,9 @@ DROP TABLE Parent COMMIT; DROP TABLE Child COMMIT; DROP TABLE GrandChild COMMIT; -CREATE TABLE Parent (ParentID int, Value1 int) COMMIT; -CREATE TABLE Child (ParentID int, ChildID int) COMMIT; -CREATE TABLE GrandChild (ParentID int, ChildID int, GrandChildID int) COMMIT; +CREATE TABLE Parent (ParentID int, Value1 int) COMMIT; +CREATE TABLE Child (ParentID int, ChildID int) COMMIT; +CREATE TABLE GrandChild (ParentID int, ChildID int, GrandChildID int) COMMIT; DROP TABLE LinqDataTypes COMMIT; @@ -588,3 +590,9 @@ AS BEGIN NEW.ID = GEN_ID(TestIdentityID, 1); END COMMIT; + + +CREATE VIEW PersonView +AS + SELECT * FROM Person +COMMIT; diff --git a/Data/Create Scripts/MsSql.sql b/Data/Create Scripts/MsSql.sql index 21149b5e9..73b83f019 100644 --- a/Data/Create Scripts/MsSql.sql +++ b/Data/Create Scripts/MsSql.sql @@ -528,6 +528,7 @@ GO -- SKIP Sql2005 END -- SKIP Sql2008 BEGIN +-- SKIP Sql2012 BEGIN CREATE TABLE LinqDataTypes ( ID int, @@ -542,6 +543,7 @@ CREATE TABLE LinqDataTypes BigIntValue bigint NULL ) GO +-- SKIP Sql2012 END -- SKIP Sql2008 END DROP TABLE TestIdentity diff --git a/Data/Create Scripts/MsSql2000.sql b/Data/Create Scripts/MsSql2000.sql new file mode 100644 index 000000000..581512559 --- /dev/null +++ b/Data/Create Scripts/MsSql2000.sql @@ -0,0 +1,472 @@ +DROP TABLE Doctor +DROP TABLE Patient +DROP TABLE Person + +CREATE TABLE Person +( + PersonID int NOT NULL IDENTITY(1,1) CONSTRAINT PK_Person PRIMARY KEY CLUSTERED, + FirstName nvarchar(50) NOT NULL, + LastName nvarchar(50) NOT NULL, + MiddleName nvarchar(50) NULL, + Gender char(1) NOT NULL CONSTRAINT CK_Person_Gender CHECK (Gender in ('M', 'F', 'U', 'O')) +) +ON [PRIMARY] +GO + +INSERT INTO Person (FirstName, LastName, Gender) VALUES ('John', 'Pupkin', 'M') +GO +INSERT INTO Person (FirstName, LastName, Gender) VALUES ('Tester', 'Testerson', 'M') +GO + +-- Doctor Table Extension + +CREATE TABLE Doctor +( + PersonID int NOT NULL + CONSTRAINT PK_Doctor PRIMARY KEY CLUSTERED + CONSTRAINT FK_Doctor_Person FOREIGN KEY + REFERENCES Person ([PersonID]) + ON UPDATE CASCADE + ON DELETE CASCADE, + Taxonomy nvarchar(50) NOT NULL +) +ON [PRIMARY] +GO + +INSERT INTO Doctor (PersonID, Taxonomy) VALUES (1, 'Psychiatry') +GO + +-- Patient Table Extension + +CREATE TABLE Patient +( + PersonID int NOT NULL + CONSTRAINT PK_Patient PRIMARY KEY CLUSTERED + CONSTRAINT FK_Patient_Person FOREIGN KEY + REFERENCES Person ([PersonID]) + ON UPDATE CASCADE + ON DELETE CASCADE, + Diagnosis nvarchar(256) NOT NULL +) +ON [PRIMARY] +GO + +INSERT INTO Patient (PersonID, Diagnosis) VALUES (2, 'Hallucination with Paranoid Bugs'' Delirium of Persecution') +GO + +-- Person_SelectByKey + +DROP Procedure Person_SelectByKey +GO + +CREATE Procedure Person_SelectByKey + @id int +AS + +SELECT * FROM Person WHERE PersonID = @id + +GO + +GRANT EXEC ON Person_SelectByKey TO PUBLIC +GO + +-- Person_SelectAll + +DROP Procedure Person_SelectAll +GO + +CREATE Procedure Person_SelectAll +AS + +SELECT * FROM Person + +GO + +GRANT EXEC ON Person_SelectAll TO PUBLIC +GO + +-- Person_SelectByName + +DROP Procedure Person_SelectByName +GO + +CREATE Procedure Person_SelectByName + @firstName nvarchar(50), + @lastName nvarchar(50) +AS + +SELECT + * +FROM + Person +WHERE + FirstName = @firstName AND LastName = @lastName + +GO + +GRANT EXEC ON Person_SelectByName TO PUBLIC +GO + +-- Person_SelectListByName + +DROP Procedure Person_SelectListByName +GO + +CREATE Procedure Person_SelectListByName + @firstName nvarchar(50), + @lastName nvarchar(50) +AS + +SELECT + * +FROM + Person +WHERE + FirstName like @firstName AND LastName like @lastName + +GO + +GRANT EXEC ON Person_SelectByName TO PUBLIC +GO + +-- Person_Insert + +DROP Procedure Person_Insert +GO + +CREATE Procedure Person_Insert + @FirstName nvarchar(50), + @LastName nvarchar(50), + @MiddleName nvarchar(50), + @Gender char(1) +AS + +INSERT INTO Person + ( LastName, FirstName, MiddleName, Gender) +VALUES + (@LastName, @FirstName, @MiddleName, @Gender) + +SELECT Cast(SCOPE_IDENTITY() as int) PersonID + +GO + +GRANT EXEC ON Person_Insert TO PUBLIC +GO + +-- Person_Insert_OutputParameter + +DROP Procedure Person_Insert_OutputParameter +GO + +CREATE Procedure Person_Insert_OutputParameter + @FirstName nvarchar(50), + @LastName nvarchar(50), + @MiddleName nvarchar(50), + @Gender char(1), + @PersonID int output +AS + +INSERT INTO Person + ( LastName, FirstName, MiddleName, Gender) +VALUES + (@LastName, @FirstName, @MiddleName, @Gender) + +SET @PersonID = Cast(SCOPE_IDENTITY() as int) + +GO + +GRANT EXEC ON Person_Insert_OutputParameter TO PUBLIC +GO + +-- Person_Update + +DROP Procedure Person_Update +GO + +CREATE Procedure Person_Update + @PersonID int, + @FirstName nvarchar(50), + @LastName nvarchar(50), + @MiddleName nvarchar(50), + @Gender char(1) +AS + +UPDATE + Person +SET + LastName = @LastName, + FirstName = @FirstName, + MiddleName = @MiddleName, + Gender = @Gender +WHERE + PersonID = @PersonID + +GO + +GRANT EXEC ON Person_Update TO PUBLIC +GO + +-- Person_Delete + +DROP Procedure Person_Delete +GO + +CREATE Procedure Person_Delete + @PersonID int +AS + +DELETE FROM Person WHERE PersonID = @PersonID + +GO + +GRANT EXEC ON Person_Delete TO PUBLIC +GO + +-- Patient_SelectAll + +DROP Procedure Patient_SelectAll +GO + +CREATE Procedure Patient_SelectAll +AS + +SELECT + Person.*, Patient.Diagnosis +FROM + Patient, Person +WHERE + Patient.PersonID = Person.PersonID + +GO + +GRANT EXEC ON Patient_SelectAll TO PUBLIC +GO + +-- Patient_SelectByName + +DROP Procedure Patient_SelectByName +GO + +CREATE Procedure Patient_SelectByName + @firstName nvarchar(50), + @lastName nvarchar(50) +AS + +SELECT + Person.*, Patient.Diagnosis +FROM + Patient, Person +WHERE + Patient.PersonID = Person.PersonID + AND FirstName = @firstName AND LastName = @lastName + +GO + +GRANT EXEC ON Person_SelectByName TO PUBLIC +GO + +-- BinaryData Table + +DROP TABLE BinaryData + +CREATE TABLE BinaryData +( + BinaryDataID int NOT NULL IDENTITY(1,1) CONSTRAINT PK_BinaryData PRIMARY KEY CLUSTERED, + Stamp timestamp NOT NULL, + Data varbinary(1024) NOT NULL) +ON [PRIMARY] +GO + +-- OutRefTest + +DROP Procedure OutRefTest +GO + +CREATE Procedure OutRefTest + @ID int, + @outputID int output, + @inputOutputID int output, + @str varchar(50), + @outputStr varchar(50) output, + @inputOutputStr varchar(50) output +AS + +SET @outputID = @ID +SET @inputOutputID = @ID + @inputOutputID +SET @outputStr = @str +SET @inputOutputStr = @str + @inputOutputStr + +GO + +-- OutRefEnumTest + +DROP Procedure OutRefEnumTest +GO + +CREATE Procedure OutRefEnumTest + @str varchar(50), + @outputStr varchar(50) output, + @inputOutputStr varchar(50) output +AS + +SET @outputStr = @str +SET @inputOutputStr = @str + @inputOutputStr + +GO + +-- ExecuteScalarTest + +DROP Procedure Scalar_DataReader +GO + +CREATE Procedure Scalar_DataReader +AS +SELECT Cast(12345 as int) AS intField, Cast('54321' as varchar(50)) AS stringField + +GO + +DROP Procedure Scalar_OutputParameter +GO + +CREATE Procedure Scalar_OutputParameter + @outputInt int = 0 output, + @outputString varchar(50) = '' output +AS +BEGIN + SET @outputInt = 12345 + SET @outputString = '54321' +END + +GO + +DROP Function Scalar_ReturnParameter +GO + +CREATE Function Scalar_ReturnParameter() +RETURNS int +AS +BEGIN + RETURN 12345 +END + +GO + +DROP Procedure Scalar_ReturnParameterWithObject +GO + +CREATE Procedure Scalar_ReturnParameterWithObject + @id int +AS +BEGIN + SELECT * FROM Person WHERE PersonID = @id + RETURN @id +END + +GO + +-- Data Types test + +DROP TABLE DataTypeTest +GO + +CREATE TABLE DataTypeTest +( + DataTypeID int NOT NULL IDENTITY(1,1) CONSTRAINT PK_DataType PRIMARY KEY CLUSTERED, + Binary_ binary(50) NULL, + Boolean_ bit NULL, + Byte_ tinyint NULL, + Bytes_ varbinary(50) NULL, + Char_ char(1) NULL, + DateTime_ datetime NULL, + Decimal_ decimal(20,2) NULL, + Double_ float NULL, + Guid_ uniqueidentifier NULL, + Int16_ smallint NULL, + Int32_ int NULL, + Int64_ bigint NULL, + Money_ money NULL, + SByte_ tinyint NULL, + Single_ real NULL, + Stream_ varbinary(50) NULL, + String_ nvarchar(50) NULL, + UInt16_ smallint NULL, + UInt32_ int NULL, + UInt64_ bigint NULL, + Xml_ nvarchar(2000) NULL +) ON [PRIMARY] +GO + +INSERT INTO DataTypeTest + (Binary_, Boolean_, Byte_, Bytes_, Char_, DateTime_, Decimal_, + Double_, Guid_, Int16_, Int32_, Int64_, Money_, SByte_, + Single_, Stream_, String_, UInt16_, UInt32_, UInt64_, Xml_) +VALUES + ( NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL) +GO + +INSERT INTO DataTypeTest + (Binary_, Boolean_, Byte_, Bytes_, Char_, DateTime_, Decimal_, + Double_, Guid_, Int16_, Int32_, Int64_, Money_, SByte_, + Single_, Stream_, String_, UInt16_, UInt32_, UInt64_, + Xml_) +VALUES + (NewID(), 1, 255, NewID(), 'B', GetDate(), 12345.67, + 1234.567, NewID(), 32767, 32768, 1000000, 12.3456, 127, + 1234.123, NewID(), 'string', 32767, 32768, 200000000, + '') +GO + + +DROP FUNCTION GetParentByID +GO + +DROP TABLE Parent +GO +DROP TABLE Child +GO +DROP TABLE GrandChild +GO + +CREATE TABLE Parent (ParentID int, Value1 int) +GO +CREATE TABLE Child (ParentID int, ChildID int) +GO +CREATE TABLE GrandChild (ParentID int, ChildID int, GrandChildID int) +GO + +CREATE FUNCTION GetParentByID(@id int) +RETURNS TABLE +AS +RETURN +( + SELECT * FROM Parent WHERE ParentID = @id +) +GO + +DROP TABLE LinqDataTypes +GO + +CREATE TABLE LinqDataTypes +( + ID int, + MoneyValue decimal(10,4), + DateTimeValue datetime, + DateTimeValue2 datetime, + BoolValue bit, + GuidValue uniqueidentifier, + BinaryValue varbinary(5000) NULL, + SmallIntValue smallint, + IntValue int NULL, + BigIntValue bigint NULL +) +GO + +DROP TABLE TestIdentity +GO + +CREATE TABLE TestIdentity ( + ID int NOT NULL IDENTITY(1,1) CONSTRAINT PK_TestIdentity PRIMARY KEY CLUSTERED +) +GO diff --git a/Data/Create Scripts/Sybase.sql b/Data/Create Scripts/Sybase.sql index 0d99018a5..77ec42af0 100644 --- a/Data/Create Scripts/Sybase.sql +++ b/Data/Create Scripts/Sybase.sql @@ -456,7 +456,7 @@ CREATE TABLE LinqDataTypes MoneyValue decimal(10,4) NULL, DateTimeValue datetime NULL, DateTimeValue2 datetime NULL, - BoolValue bit, + BoolValue bit default(0), GuidValue char(36) NULL, BinaryValue binary(500) NULL, SmallIntValue smallint NULL, @@ -468,7 +468,8 @@ GO DROP TABLE TestIdentity GO -CREATE TABLE TestIdentity ( +CREATE TABLE TestIdentity +( ID int IDENTITY CONSTRAINT PK_TestIdentity PRIMARY KEY CLUSTERED ) GO diff --git a/DataProviders/Compile3.bat b/DataProviders/Compile3.bat index 219e48695..11d58c15d 100644 --- a/DataProviders/Compile3.bat +++ b/DataProviders/Compile3.bat @@ -1,20 +1,20 @@ -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.DB2.3.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.Firebird.3.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.Informix.3.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.MySql.3.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.Oracle.3.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.PostgreSQL.3.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.SqlCe.3.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.SQLite.3.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.Sybase.3.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe DB2\BLToolkit.Data.DataProvider.DB2.3.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe Firebird\BLToolkit.Data.DataProvider.Firebird.3.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe Informix\BLToolkit.Data.DataProvider.Informix.3.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe MySql\BLToolkit.Data.DataProvider.MySql.3.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe Oracle\BLToolkit.Data.DataProvider.Oracle.3.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe PostgreSQL\BLToolkit.Data.DataProvider.PostgreSQL.3.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe SqlCe\BLToolkit.Data.DataProvider.SqlCe.3.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe SQLite\BLToolkit.Data.DataProvider.SQLite.3.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe Sybase\BLToolkit.Data.DataProvider.Sybase.3.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.DB2.3.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.Firebird.3.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.Informix.3.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.MySql.3.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.Oracle.3.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.PostgreSQL.3.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.SqlCe.3.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.SQLite.3.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe BLToolkit.Data.DataProvider.Sybase.3.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe DB2\BLToolkit.Data.DataProvider.DB2.3.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe Firebird\BLToolkit.Data.DataProvider.Firebird.3.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe Informix\BLToolkit.Data.DataProvider.Informix.3.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe MySql\BLToolkit.Data.DataProvider.MySql.3.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe Oracle\BLToolkit.Data.DataProvider.Oracle.3.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe PostgreSQL\BLToolkit.Data.DataProvider.PostgreSQL.3.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe SqlCe\BLToolkit.Data.DataProvider.SqlCe.3.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe SQLite\BLToolkit.Data.DataProvider.SQLite.3.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe Sybase\BLToolkit.Data.DataProvider.Sybase.3.csproj /property:Configuration=Release pause \ No newline at end of file diff --git a/DataProviders/Compile4.bat b/DataProviders/Compile4.bat index d60c02692..b5a536669 100644 --- a/DataProviders/Compile4.bat +++ b/DataProviders/Compile4.bat @@ -1,22 +1,24 @@ -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.DB2.4.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.Firebird.4.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.Informix.4.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.MySql.4.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.Oracle.4.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.OracleManaged.4.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.PostgreSQL.4.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.SqlCe.4.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.SQLite.4.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.Sybase.4.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe DB2\BLToolkit.Data.DataProvider.DB2.4.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe Firebird\BLToolkit.Data.DataProvider.Firebird.4.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe Informix\BLToolkit.Data.DataProvider.Informix.4.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe MySql\BLToolkit.Data.DataProvider.MySql.4.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe Oracle\BLToolkit.Data.DataProvider.Oracle.4.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe Oracle\BLToolkit.Data.DataProvider.OracleManaged.4.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe DevartOraclePro\BLToolkit.Data.DataProvider.DevartOracle.4.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe PostgreSQL\BLToolkit.Data.DataProvider.PostgreSQL.4.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe SqlCe\BLToolkit.Data.DataProvider.SqlCe.4.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe SQLite\BLToolkit.Data.DataProvider.SQLite.4.csproj /property:Configuration=Debug +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe Sybase\BLToolkit.Data.DataProvider.Sybase.4.csproj /property:Configuration=Debug -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.DB2.4.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.Firebird.4.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.Informix.4.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.MySql.4.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.Oracle.4.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.OracleManaged.4.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.PostgreSQL.4.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.SqlCe.4.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.SQLite.4.csproj /property:Configuration=Release -%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe BLToolkit.Data.DataProvider.Sybase.4.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe DB2\BLToolkit.Data.DataProvider.DB2.4.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe Firebird\BLToolkit.Data.DataProvider.Firebird.4.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe Informix\BLToolkit.Data.DataProvider.Informix.4.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe MySql\BLToolkit.Data.DataProvider.MySql.4.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe Oracle\BLToolkit.Data.DataProvider.Oracle.4.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe Oracle\BLToolkit.Data.DataProvider.OracleManaged.4.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe DevartOraclePro\BLToolkit.Data.DataProvider.DevartOracle.4.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe PostgreSQL\BLToolkit.Data.DataProvider.PostgreSQL.4.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe SqlCe\BLToolkit.Data.DataProvider.SqlCe.4.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe SQLite\BLToolkit.Data.DataProvider.SQLite.4.csproj /property:Configuration=Release +%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe Sybase\BLToolkit.Data.DataProvider.Sybase.4.csproj /property:Configuration=Release pause \ No newline at end of file diff --git a/DataProviders/BLToolkit.Data.DataProvider.DB2.3.csproj b/DataProviders/DB2/BLToolkit.Data.DataProvider.DB2.3.csproj similarity index 91% rename from DataProviders/BLToolkit.Data.DataProvider.DB2.3.csproj rename to DataProviders/DB2/BLToolkit.Data.DataProvider.DB2.3.csproj index f1a0b97be..8fe5364d9 100644 --- a/DataProviders/BLToolkit.Data.DataProvider.DB2.3.csproj +++ b/DataProviders/DB2/BLToolkit.Data.DataProvider.DB2.3.csproj @@ -33,7 +33,7 @@ False - ..\Redist\IBM\IBM.Data.DB2.dll + ..\..\Redist\IBM\IBM.Data.DB2.dll @@ -49,13 +49,13 @@ - + DB2DataProvider.cs - + {0C325F5D-E50E-4340-8724-D29896CCC583} BLToolkit.3 diff --git a/DataProviders/BLToolkit.Data.DataProvider.DB2.4.csproj b/DataProviders/DB2/BLToolkit.Data.DataProvider.DB2.4.csproj similarity index 95% rename from DataProviders/BLToolkit.Data.DataProvider.DB2.4.csproj rename to DataProviders/DB2/BLToolkit.Data.DataProvider.DB2.4.csproj index d86a00ab6..90d856901 100644 --- a/DataProviders/BLToolkit.Data.DataProvider.DB2.4.csproj +++ b/DataProviders/DB2/BLToolkit.Data.DataProvider.DB2.4.csproj @@ -86,7 +86,7 @@ False - ..\Redist\IBM\IBM.Data.DB2.dll + ..\..\Redist\IBM\IBM.Data.DB2.dll @@ -95,13 +95,13 @@ - + DB2DataProvider.cs - + {0C325F5D-E50E-4340-8724-D29896CCC583} BLToolkit.4 diff --git a/DataProviders/Properties/AssemblyInfo.cs b/DataProviders/DB2/Properties/AssemblyInfo.cs similarity index 100% rename from DataProviders/Properties/AssemblyInfo.cs rename to DataProviders/DB2/Properties/AssemblyInfo.cs diff --git a/DataProviders/DevartOraclePro/BLToolkit.Data.DataProvider.DevartOracle.4.csproj b/DataProviders/DevartOraclePro/BLToolkit.Data.DataProvider.DevartOracle.4.csproj new file mode 100644 index 000000000..5ed29432e --- /dev/null +++ b/DataProviders/DevartOraclePro/BLToolkit.Data.DataProvider.DevartOracle.4.csproj @@ -0,0 +1,71 @@ + + + + + Debug + AnyCPU + {CB303F0B-0AA3-4589-850A-95E985A09492} + Library + Properties + BLToolkit.Data.DataProvider + BLToolkit.Data.DataProvider.DevartOracle.4 + v4.0 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + ..\..\packages\dotConnect.Express.for.Oracle.8.1.36\lib\Devart.Data.dll + + + False + ..\..\packages\dotConnect.Express.for.Oracle.8.1.36\lib\Devart.Data.Oracle.dll + + + + + + + + + + + + + + + + {0c325f5d-e50e-4340-8724-d29896ccc583} + BLToolkit.4 + + + + + + + + + \ No newline at end of file diff --git a/DataProviders/DevartOraclePro/BLToolkit.Data.DataProvider.DevartOraclePro.4.csproj b/DataProviders/DevartOraclePro/BLToolkit.Data.DataProvider.DevartOraclePro.4.csproj new file mode 100644 index 000000000..23100bc89 --- /dev/null +++ b/DataProviders/DevartOraclePro/BLToolkit.Data.DataProvider.DevartOraclePro.4.csproj @@ -0,0 +1,72 @@ + + + + + Debug + AnyCPU + {CB303F0B-0AA3-4589-850A-95E985A09492} + Library + Properties + BLToolkit.Data.DataProvider + BLToolkit.Data.DataProvider.DevartOracle.4 + v4.0 + 512 + + + true + full + false + bin\Debug\ + TRACE;DEBUG;DEVART_PRO + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE;DEVART_PRO + prompt + 4 + + + + False + + + False + + + + + + + + + + + + + + + + {0c325f5d-e50e-4340-8724-d29896ccc583} + BLToolkit.4 + + + + + + + + + + + + \ No newline at end of file diff --git a/DataProviders/DevartOraclePro/DevartOracleDataProvider.cs b/DataProviders/DevartOraclePro/DevartOracleDataProvider.cs new file mode 100644 index 000000000..9af924cbf --- /dev/null +++ b/DataProviders/DevartOraclePro/DevartOracleDataProvider.cs @@ -0,0 +1,212 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.Common; +using System.Text; + +using BLToolkit.Data.Sql.SqlProvider; +using BLToolkit.Mapping; + +using Devart.Data.Oracle; + +namespace BLToolkit.Data.DataProvider +{ + public class DevartOracleDataProvider : DataProviderBase + { + /// + /// Data provider name string. + /// + public const string NameString = "DevartOracle"; + + public override Type ConnectionType + { + get { return typeof(OracleConnection); } + } + + public override string Name + { + get { return NameString; } + } + + /// + /// Gets or sets the database activity monitor. + /// + private static Devart.Common.DbMonitor DbMonitor { get; set; } + + /// + /// Gets or sets value indicating whether the database activity monitor is enabled. + /// + /// + /// This feature requires Standard or Pro edition of Devart dotConnect for Oracle provider. + /// + public static bool DbMonitorActive + { + get { return DbMonitor == null ? false : DbMonitor.IsActive; } + set + { + // setting this property has no effect in Express edition +#if DEVART_PRO + if (DbMonitorActive != value) + { + DbMonitor = DbMonitor ?? new OracleMonitor(); + DbMonitor.IsActive = value; + } +#endif + } + } + + public override IDbConnection CreateConnectionObject() + { + return new OracleConnection(); + } + + public override DbDataAdapter CreateDataAdapterObject() + { + return new OracleDataAdapter(); + } + + public override bool DeriveParameters(IDbCommand command) + { + var oraCommand = command as OracleCommand; + + if (null != oraCommand) + { + try + { + OracleCommandBuilder.DeriveParameters(oraCommand); + } + catch (Exception ex) + { + // Make Oracle less laconic. + // + throw new DataException(string.Format("{0}\nCommandText: {1}", ex.Message, oraCommand.CommandText), ex); + } + + return true; + } + + return false; + } + + public override void AttachParameter(IDbCommand command, IDbDataParameter parameter) + { + var value = parameter.Value; + + if (value is DateTime) + { + parameter.Value = new OracleTimeStamp((DateTime)value); + } + else if (value is Guid) + { + parameter.Value = ((Guid)value).ToByteArray(); + parameter.DbType = DbType.Binary; + ((OracleParameter)parameter).OracleDbType = OracleDbType.Raw; + } +// else if (value is string) +// { +// ((OracleParameter)parameter).OracleDbType = OracleDbType.NVarChar; +// } + + base.AttachParameter(command, parameter); + } + + public override int ExecuteArray(IDbCommand command, int iterations) + { + var cmd = (OracleCommand)command; + return cmd.ExecuteArray(iterations); + } + + public override ISqlProvider CreateSqlProvider() + { + return new OracleSqlProvider(); + } + + + #region InsertBatch + + public override int InsertBatch( + DbManager db, + string insertText, + IEnumerable collection, + MemberMapper[] members, + int maxBatchSize, + DbManager.ParameterProvider getParameters) + { + var sb = new StringBuilder(); + var sp = new OracleSqlProvider(); + var n = 0; + var cnt = 0; + var str = "\t" + insertText + .Substring(0, insertText.IndexOf(") VALUES (")) + .Substring(7) + .Replace("\r", "") + .Replace("\n", "") + .Replace("\t", " ") + .Replace("( ", "(") + //.Replace(" ", " ") + + ") VALUES ("; + + foreach (var item in collection) + { + if (sb.Length == 0) + sb.AppendLine("INSERT ALL"); + + sb.Append(str); + + foreach (var member in members) + { + var value = member.GetValue(item); + + if (value is Nullable) + value = ((DateTime?)value).Value; + + if (value is DateTime) + { + var dt = (DateTime)value; + sb.Append(string.Format("to_timestamp('{0:dd.MM.yyyy HH:mm:ss.ffffff}', 'DD.MM.YYYY HH24:MI:SS.FF6')", dt)); + } + else + sp.BuildValue(sb, value); + + sb.Append(", "); + } + + sb.Length -= 2; + sb.AppendLine(")"); + + n++; + + if (n >= maxBatchSize) + { + sb.AppendLine("SELECT * FROM dual"); + + var sql = sb.ToString(); + + if (DbManager.TraceSwitch.TraceInfo) + DbManager.WriteTraceLine("\n" + sql.Replace("\r", ""), DbManager.TraceSwitch.DisplayName); + + cnt += db.SetCommand(sql).ExecuteNonQuery(); + + n = 0; + sb.Length = 0; + } + } + + if (n > 0) + { + sb.AppendLine("SELECT * FROM dual"); + + var sql = sb.ToString(); + + if (DbManager.TraceSwitch.TraceInfo) + DbManager.WriteTraceLine("\n" + sql.Replace("\r", ""), DbManager.TraceSwitch.DisplayName); + + cnt += db.SetCommand(sql).ExecuteNonQuery(); + } + + return cnt; + } + + #endregion + } +} diff --git a/DataProviders/DevartOraclePro/Properties/AssemblyInfo.cs b/DataProviders/DevartOraclePro/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..91e631660 --- /dev/null +++ b/DataProviders/DevartOraclePro/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("BLToolkit.Data.DataProvider.DevartOracle.4")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("BLToolkit.Data.DataProvider.DevartOracle.4")] +[assembly: AssemblyCopyright("Copyright © 2013")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("3eccd100-83fa-4b39-af69-dffd7ba55edb")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/DataProviders/DevartOraclePro/Properties/licenses.config b/DataProviders/DevartOraclePro/Properties/licenses.config new file mode 100644 index 000000000..3483b08c0 --- /dev/null +++ b/DataProviders/DevartOraclePro/Properties/licenses.config @@ -0,0 +1,20 @@ +mono.exe +nunit-console.exe +nunit-console-x86.exe +nunit.exe +nunit-x86.exe +ProcessInvocation.exe +ProcessInvocation86.exe +SilverlightExecute.TestRunner.exe +Demo.exe +Test.exe +Sample.exe +Server.exe +Demo.vshost.exe +Test.vshost.exe +Sample.vshost.exe +Server.vshost.exe +Demo.vshost32.exe +Test.vshost32.exe +Sample.vshost32.exe +Server.vshost32.exe diff --git a/DataProviders/DevartOraclePro/Properties/licenses.licx b/DataProviders/DevartOraclePro/Properties/licenses.licx new file mode 100644 index 000000000..54b97f7bd --- /dev/null +++ b/DataProviders/DevartOraclePro/Properties/licenses.licx @@ -0,0 +1 @@ +Devart.Data.Oracle.OracleConnection, Devart.Data.Oracle, Version=6.10.121.0, Culture=neutral, PublicKeyToken=09af7300eec23701 diff --git a/DataProviders/DevartOraclePro/app.config b/DataProviders/DevartOraclePro/app.config new file mode 100644 index 000000000..48410298d --- /dev/null +++ b/DataProviders/DevartOraclePro/app.config @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/DataProviders/DevartOraclePro/packages.config b/DataProviders/DevartOraclePro/packages.config new file mode 100644 index 000000000..cb4fa1177 --- /dev/null +++ b/DataProviders/DevartOraclePro/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/DataProviders/BLToolkit.Data.DataProvider.Firebird.3.csproj b/DataProviders/Firebird/BLToolkit.Data.DataProvider.Firebird.3.csproj similarity index 90% rename from DataProviders/BLToolkit.Data.DataProvider.Firebird.3.csproj rename to DataProviders/Firebird/BLToolkit.Data.DataProvider.Firebird.3.csproj index a9ba0ee7e..2a550dde1 100644 --- a/DataProviders/BLToolkit.Data.DataProvider.Firebird.3.csproj +++ b/DataProviders/Firebird/BLToolkit.Data.DataProvider.Firebird.3.csproj @@ -33,7 +33,7 @@ False - ..\Redist\Firebird\FirebirdSql.Data.FirebirdClient.dll + ..\..\Redist\Firebird\FirebirdSql.Data.FirebirdClient.dll @@ -52,13 +52,13 @@ - + FdpDataProvider.cs - + {0C325F5D-E50E-4340-8724-D29896CCC583} BLToolkit.3 diff --git a/DataProviders/BLToolkit.Data.DataProvider.Firebird.4.csproj b/DataProviders/Firebird/BLToolkit.Data.DataProvider.Firebird.4.csproj similarity index 91% rename from DataProviders/BLToolkit.Data.DataProvider.Firebird.4.csproj rename to DataProviders/Firebird/BLToolkit.Data.DataProvider.Firebird.4.csproj index 1fc22942b..a786d4161 100644 --- a/DataProviders/BLToolkit.Data.DataProvider.Firebird.4.csproj +++ b/DataProviders/Firebird/BLToolkit.Data.DataProvider.Firebird.4.csproj @@ -86,9 +86,9 @@ false - + False - ..\packages\FirebirdSql.Data.FirebirdClient.3.0.2.1\lib\net40-client\FirebirdSql.Data.FirebirdClient.dll + ..\..\packages\FirebirdSql.Data.FirebirdClient.4.0.0.0\lib\net40-client\FirebirdSql.Data.FirebirdClient.dll @@ -101,7 +101,7 @@ - + FdpDataProvider.cs @@ -124,11 +124,16 @@ - + {0C325F5D-E50E-4340-8724-D29896CCC583} BLToolkit.4 + + + Designer + + + \ No newline at end of file diff --git a/DataProviders/Generic/Properties/AssemblyInfo.cs b/DataProviders/Generic/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..c5eb0a369 --- /dev/null +++ b/DataProviders/Generic/Properties/AssemblyInfo.cs @@ -0,0 +1,20 @@ +using System; +using System.Reflection; +using System.Resources; +using System.Runtime.InteropServices; +using System.Security; + +using BLToolkit; + +[assembly: AssemblyTitle (BLToolkitConstants.ProductName + " Data Provider")] +[assembly: AssemblyDescription (BLToolkitConstants.ProductDescription + " Data Provider")] +[assembly: AssemblyProduct (BLToolkitConstants.ProductName + " Data Provider")] +[assembly: AssemblyCopyright (BLToolkitConstants.Copyright)] +[assembly: AssemblyCulture ("")] +[assembly: ComVisible (false)] +[assembly: Guid ("6c3fb028-daf7-4134-8697-eedfe34d779e")] +[assembly: AssemblyVersion (BLToolkitConstants.FullVersionString)] +[assembly: AssemblyFileVersion (BLToolkitConstants.FullVersionString)] +[assembly: CLSCompliant (true)] +[assembly: NeutralResourcesLanguage("en-US")] +//[assembly: AllowPartiallyTrustedCallers] diff --git a/DataProviders/BLToolkit.Data.DataProvider.Informix.3.csproj b/DataProviders/Informix/BLToolkit.Data.DataProvider.Informix.3.csproj similarity index 91% rename from DataProviders/BLToolkit.Data.DataProvider.Informix.3.csproj rename to DataProviders/Informix/BLToolkit.Data.DataProvider.Informix.3.csproj index 36f42d291..c66ca80b8 100644 --- a/DataProviders/BLToolkit.Data.DataProvider.Informix.3.csproj +++ b/DataProviders/Informix/BLToolkit.Data.DataProvider.Informix.3.csproj @@ -33,7 +33,7 @@ False - ..\Redist\IBM\IBM.Data.Informix.dll + ..\..\Redist\IBM\IBM.Data.Informix.dll @@ -49,13 +49,13 @@ - + InformixDataProvider.cs - + {0C325F5D-E50E-4340-8724-D29896CCC583} BLToolkit.3 diff --git a/DataProviders/BLToolkit.Data.DataProvider.Informix.4.csproj b/DataProviders/Informix/BLToolkit.Data.DataProvider.Informix.4.csproj similarity index 95% rename from DataProviders/BLToolkit.Data.DataProvider.Informix.4.csproj rename to DataProviders/Informix/BLToolkit.Data.DataProvider.Informix.4.csproj index f7ba15c84..c30f609dd 100644 --- a/DataProviders/BLToolkit.Data.DataProvider.Informix.4.csproj +++ b/DataProviders/Informix/BLToolkit.Data.DataProvider.Informix.4.csproj @@ -87,7 +87,7 @@ False - ..\Redist\IBM\IBM.Data.Informix.dll + ..\..\Redist\IBM\IBM.Data.Informix.dll @@ -97,7 +97,7 @@ - + InformixDataProvider.cs @@ -120,7 +120,7 @@ - + {0C325F5D-E50E-4340-8724-D29896CCC583} BLToolkit.4 diff --git a/DataProviders/Informix/Properties/AssemblyInfo.cs b/DataProviders/Informix/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..98c1fdcf6 --- /dev/null +++ b/DataProviders/Informix/Properties/AssemblyInfo.cs @@ -0,0 +1,20 @@ +using System; +using System.Reflection; +using System.Resources; +using System.Runtime.InteropServices; +using System.Security; + +using BLToolkit; + +[assembly: AssemblyTitle (BLToolkitConstants.ProductName + " Data Provider")] +[assembly: AssemblyDescription (BLToolkitConstants.ProductDescription + " Data Provider")] +[assembly: AssemblyProduct (BLToolkitConstants.ProductName + " Data Provider")] +[assembly: AssemblyCopyright (BLToolkitConstants.Copyright)] +[assembly: AssemblyCulture ("")] +[assembly: ComVisible (false)] +[assembly: Guid ("6c3fb028-daf7-4134-8697-eedfe34d779e")] +[assembly: AssemblyVersion (BLToolkitConstants.FullVersionString)] +[assembly: AssemblyFileVersion (BLToolkitConstants.FullVersionString)] +[assembly: CLSCompliant (true)] +[assembly: NeutralResourcesLanguage("en-US")] +//[assembly: AllowPartiallyTrustedCallers] diff --git a/DataProviders/BLToolkit.Data.DataProvider.MySql.3.csproj b/DataProviders/MySql/BLToolkit.Data.DataProvider.MySql.3.csproj similarity index 90% rename from DataProviders/BLToolkit.Data.DataProvider.MySql.3.csproj rename to DataProviders/MySql/BLToolkit.Data.DataProvider.MySql.3.csproj index b75e7aa76..464d8abba 100644 --- a/DataProviders/BLToolkit.Data.DataProvider.MySql.3.csproj +++ b/DataProviders/MySql/BLToolkit.Data.DataProvider.MySql.3.csproj @@ -33,7 +33,7 @@ False - ..\packages\MySql.Data.6.4.4\lib\net20\mysql.data.dll + ..\..\packages\MySql.Data.6.4.4\lib\net20\mysql.data.dll @@ -52,13 +52,13 @@ - + MySqlDataProvider.cs - + {0C325F5D-E50E-4340-8724-D29896CCC583} BLToolkit.3 diff --git a/DataProviders/BLToolkit.Data.DataProvider.MySql.4.csproj b/DataProviders/MySql/BLToolkit.Data.DataProvider.MySql.4.csproj similarity index 94% rename from DataProviders/BLToolkit.Data.DataProvider.MySql.4.csproj rename to DataProviders/MySql/BLToolkit.Data.DataProvider.MySql.4.csproj index 962ef26d5..09d9effdb 100644 --- a/DataProviders/BLToolkit.Data.DataProvider.MySql.4.csproj +++ b/DataProviders/MySql/BLToolkit.Data.DataProvider.MySql.4.csproj @@ -88,9 +88,9 @@ 4 - + False - ..\packages\MySql.Data.6.5.4\lib\net40\MySql.Data.dll + ..\..\packages\MySql.Data.6.8.3\lib\net40\MySql.Data.dll @@ -104,7 +104,7 @@ - + MySqlDataProvider.cs @@ -127,7 +127,7 @@ - + {0C325F5D-E50E-4340-8724-D29896CCC583} BLToolkit.4 diff --git a/DataProviders/MySql/Properties/AssemblyInfo.cs b/DataProviders/MySql/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..98c1fdcf6 --- /dev/null +++ b/DataProviders/MySql/Properties/AssemblyInfo.cs @@ -0,0 +1,20 @@ +using System; +using System.Reflection; +using System.Resources; +using System.Runtime.InteropServices; +using System.Security; + +using BLToolkit; + +[assembly: AssemblyTitle (BLToolkitConstants.ProductName + " Data Provider")] +[assembly: AssemblyDescription (BLToolkitConstants.ProductDescription + " Data Provider")] +[assembly: AssemblyProduct (BLToolkitConstants.ProductName + " Data Provider")] +[assembly: AssemblyCopyright (BLToolkitConstants.Copyright)] +[assembly: AssemblyCulture ("")] +[assembly: ComVisible (false)] +[assembly: Guid ("6c3fb028-daf7-4134-8697-eedfe34d779e")] +[assembly: AssemblyVersion (BLToolkitConstants.FullVersionString)] +[assembly: AssemblyFileVersion (BLToolkitConstants.FullVersionString)] +[assembly: CLSCompliant (true)] +[assembly: NeutralResourcesLanguage("en-US")] +//[assembly: AllowPartiallyTrustedCallers] diff --git a/DataProviders/MySql/packages.config b/DataProviders/MySql/packages.config new file mode 100644 index 000000000..c28edff16 --- /dev/null +++ b/DataProviders/MySql/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/DataProviders/BLToolkit.Data.DataProvider.Oracle.3.csproj b/DataProviders/Oracle/BLToolkit.Data.DataProvider.Oracle.3.csproj similarity index 91% rename from DataProviders/BLToolkit.Data.DataProvider.Oracle.3.csproj rename to DataProviders/Oracle/BLToolkit.Data.DataProvider.Oracle.3.csproj index ba93bee34..473277715 100644 --- a/DataProviders/BLToolkit.Data.DataProvider.Oracle.3.csproj +++ b/DataProviders/Oracle/BLToolkit.Data.DataProvider.Oracle.3.csproj @@ -33,7 +33,7 @@ False - ..\Redist\Oracle\Oracle.DataAccess.dll + ..\..\Redist\Oracle\Oracle.DataAccess.dll @@ -52,13 +52,13 @@ - + OdpDataProvider.cs - + {0C325F5D-E50E-4340-8724-D29896CCC583} BLToolkit.3 diff --git a/DataProviders/BLToolkit.Data.DataProvider.Oracle.4.csproj b/DataProviders/Oracle/BLToolkit.Data.DataProvider.Oracle.4.csproj similarity index 87% rename from DataProviders/BLToolkit.Data.DataProvider.Oracle.4.csproj rename to DataProviders/Oracle/BLToolkit.Data.DataProvider.Oracle.4.csproj index f92b8dd57..6a750acac 100644 --- a/DataProviders/BLToolkit.Data.DataProvider.Oracle.4.csproj +++ b/DataProviders/Oracle/BLToolkit.Data.DataProvider.Oracle.4.csproj @@ -84,9 +84,14 @@ ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules - + + C:/app/Valeriu.Lacatusu/product/11.2.0/client_2/odp.net/bin/2.x/Oracle.DataAccess.dll False - ..\Redist\Oracle\Oracle.DataAccess.dll + True + + + False + ..\..\packages\odp.net.managed.121.1.1\lib\net40\Oracle.ManagedDataAccess.dll @@ -99,7 +104,7 @@ - + OdpDataProvider.cs @@ -122,11 +127,14 @@ - + {0C325F5D-E50E-4340-8724-D29896CCC583} BLToolkit.4 + + + + --> \ No newline at end of file diff --git a/Extensions/JointureAddOn/DataAccess/FullSqlQueryBase.cs b/Extensions/JointureAddOn/DataAccess/FullSqlQuery.cs similarity index 52% rename from Extensions/JointureAddOn/DataAccess/FullSqlQueryBase.cs rename to Extensions/JointureAddOn/DataAccess/FullSqlQuery.cs index 06d9c7e75..6e4087935 100644 --- a/Extensions/JointureAddOn/DataAccess/FullSqlQueryBase.cs +++ b/Extensions/JointureAddOn/DataAccess/FullSqlQuery.cs @@ -1,32 +1,30 @@ +#region + using System; using System.Collections; +using System.Collections.Generic; using System.Linq; -using System.Reflection; using System.Text; using BLToolkit.Aspects; using BLToolkit.Data; using BLToolkit.Data.DataProvider; using BLToolkit.Mapping; -using BLToolkit.TypeBuilder; + +#endregion namespace BLToolkit.DataAccess { - public abstract class FullSqlQueryBase : SqlQueryBase + public class FullSqlQuery : SqlQuery { - private bool _ignoreLazyLoad; + private readonly bool _ignoreLazyLoad; #region Constructors - public FullSqlQueryBase(DbManager dbManager) + public FullSqlQuery(DbManager dbManager, bool ignoreLazyLoad = false, FactoryType factoryType = FactoryType.LazyLoading) : base(dbManager) { - dbManager.MappingSchema = new FullMappingSchema(false); - } + dbManager.MappingSchema = new FullMappingSchema(dbManager, ignoreLazyLoad, dbManager.MappingSchema, factoryType); - public FullSqlQueryBase(DbManager dbManager, bool ignoreLazyLoad) - : base(dbManager) - { - dbManager.MappingSchema = new FullMappingSchema(ignoreLazyLoad); _ignoreLazyLoad = ignoreLazyLoad; } @@ -34,6 +32,8 @@ public FullSqlQueryBase(DbManager dbManager, bool ignoreLazyLoad) #region Overrides + private readonly Hashtable _actionSqlQueryInfo = new Hashtable(); + [NoInterception] protected override SqlQueryInfo CreateSqlText(DbManager db, Type type, string actionName) { @@ -47,76 +47,67 @@ protected override SqlQueryInfo CreateSqlText(DbManager db, Type type, string ac return base.CreateSqlText(db, type, actionName); } } - - protected override void AppendTableName(StringBuilder sb, DbManager db, Type type) - { - var database = GetDatabaseName(type); - var owner = GetOwnerName(type); - var name = base.GetTableName(type); - db.DataProvider.CreateSqlProvider().BuildTableName(sb, - database == null ? null : db.DataProvider.Convert(database, ConvertType.NameToDatabase).ToString(), - owner == null ? null : db.DataProvider.Convert(owner, ConvertType.NameToOwner).ToString(), - name == null ? null : db.DataProvider.Convert(name, ConvertType.NameToQueryTable).ToString()); - - //TODO Override OracleSqlProvider in order to avoid this mess... - string alias = GetTableName(type); - sb.Append(" " + alias); - sb.AppendLine(); - } - - protected override string GetTableName(Type type) + [NoInterception] + public override SqlQueryInfo GetSqlQueryInfo(DbManager db, Type type, string actionName) { - //bool isSet; - //return MappingSchema.MetadataProvider.GetTableName(type, Extensions, out isSet); + var key = type.FullName + "$" + actionName + "$" + db.DataProvider.UniqueName + "$" + GetTableName(type); + var query = (SqlQueryInfo) _actionSqlQueryInfo[key]; - return type.Name; + if (query == null) + { + query = CreateSqlText(db, type, actionName); + _actionSqlQueryInfo[key] = query; + } + + return query; } #endregion - protected SqlQueryInfo CreateSelectAllFullSqlText(DbManager db, Type type) + #region Private methods + + private SqlQueryInfo CreateSelectAllFullSqlText(DbManager db, Type type) { var sb = new StringBuilder(); var query = new FullSqlQueryInfo(); sb.Append("SELECT\n"); - int index = 0; - FullObjectMapper mainMapper = ((FullMappingSchema)db.MappingSchema).GetObjectMapper(type, ref index); - BuildSelectSQL(mainMapper, sb, db); + var mainMapper = (FullObjectMapper) db.MappingSchema.GetObjectMapper(type); + + BuildSelectSql(mainMapper, sb, db); sb.Remove(sb.Length - 2, 1); sb.Append("FROM\n\t"); - AppendTableName(sb, db, type); + FullAppendTableName(sb, db, type); - AppendJoinTableName(sb, db, type); + AppendJoinTableName(mainMapper, sb, db, type); query.QueryText = sb.ToString(); return query; } - protected SqlQueryInfo CreateSelectFullByKeySqlText(DbManager db, Type type) + private SqlQueryInfo CreateSelectFullByKeySqlText(DbManager db, Type type) { var sb = new StringBuilder(); var query = new FullSqlQueryInfo(); sb.Append("SELECT\n"); - int index = 0; - FullObjectMapper mainMapper = ((FullMappingSchema)db.MappingSchema).GetObjectMapper(type, ref index); - BuildSelectSQL(mainMapper, sb, db); + var mainMapper = (FullObjectMapper) db.MappingSchema.GetObjectMapper(type); + BuildSelectSql(mainMapper, sb, db); sb.Remove(sb.Length - 2, 1); sb.Append("FROM\n\t"); - AppendTableName(sb, db, type); + FullAppendTableName(sb, db, type); - AppendJoinTableName(sb, db, type); + AppendJoinTableName(mainMapper, sb, db, type); AddWherePK(db, query, sb, -1, mainMapper); @@ -125,89 +116,97 @@ protected SqlQueryInfo CreateSelectFullByKeySqlText(DbManager db, Type type) return query; } - private void BuildSelectSQL(IPropertiesMapping mapper, StringBuilder sb, DbManager db) + private void FullAppendTableName(StringBuilder sb, DbManager db, Type type) { + var database = GetDatabaseName(type); + var owner = GetOwnerName(type); + var name = base.GetTableName(type); + + db.DataProvider.CreateSqlProvider().BuildTableName(sb, + database == null ? null : db.DataProvider.Convert(database, ConvertType.NameToDatabase).ToString(), + owner == null ? null : db.DataProvider.Convert(owner, ConvertType.NameToOwner).ToString(), + name == null ? null : db.DataProvider.Convert(name, ConvertType.NameToQueryTable).ToString()); + + //TODO Override OracleSqlProvider in order to avoid this mess... + string alias = FullGetTableName(type); + sb.Append(" " + "T" /*alias*/); + sb.AppendLine(); + } + + private string FullGetTableName(Type type) + { + //bool isSet; + //return MappingSchema.MetadataProvider.GetTableName(type, Extensions, out isSet); + + return type.Name; + } + + private void BuildSelectSql(IObjectMapper mapper, StringBuilder sb, DbManager db, string tableName = "T") + { + int tableNr = 0; + foreach (IMapper mapField in mapper.PropertiesMapping) { if (mapField is ValueMapper) - sb.AppendFormat("\t{0}.{1},\n", ((IObjectMapper)mapper).PropertyType.Name, - db.DataProvider.Convert(((ValueMapper)mapField).ColumnName, ConvertType.NameToQueryField)); + sb.AppendFormat("\t{0}.{1} {2},\n" + , tableName /* (mapper).PropertyType.Name */, + db.DataProvider.Convert(((ValueMapper) mapField).ColumnName, ConvertType.NameToQueryField), + ((ValueMapper) mapField).ColumnAlias + ); else if (mapField is IPropertiesMapping) { - var propertiesMapping = (IPropertiesMapping)mapField; + var propertiesMapping = (IPropertiesMapping) mapField; var cel = propertiesMapping.ParentMapping; while (cel != null) { // To avoid recursion dont take in account types already loaded. - if (((IMapper)cel).PropertyType == mapField.PropertyType) + if (((IMapper) cel).PropertyType == mapField.PropertyType) continue; cel = cel.ParentMapping; } - var objectMapper = (IObjectMapper)mapField; - if (!objectMapper.IsLazy) - BuildSelectSQL(propertiesMapping, sb, db); + + var objectMapper = (IObjectMapper) mapField; + if (!objectMapper.IsLazy) + BuildSelectSql(objectMapper, sb, db, tableName + tableNr.ToString()); + + tableNr++; } else throw new NotImplementedException(mapField.GetType() + " is not yet implemented."); } } - private void AppendJoinTableName(StringBuilder sb, DbManager db, Type type) + private void AppendJoinTableName(IPropertiesMapping mapper, StringBuilder sb, DbManager db, Type type, string tableName = "T") { - string parentName = GetTableName(type); + string parentName = FullGetTableName(type); + Dictionary valueMappers = mapper.PropertiesMapping.Where(e => e is ValueMapper).Cast().ToDictionary(e => e.PropertyName, e => e); - foreach (PropertyInfo prop in type.GetProperties()) - { - bool isCollection = prop.PropertyType.GetInterfaces().ToList().Contains(typeof(IList)); - Type listElementType = null; - if (isCollection) - { - listElementType = FullMappingSchema.GetGenericType(prop.PropertyType); - } + int tableNr = 0; - if (!_ignoreLazyLoad) + foreach (IMapper mapField in mapper.PropertiesMapping) + { + var objectMapper = mapField as IObjectMapper; + if (objectMapper != null) { - object[] lazy = prop.GetCustomAttributes(typeof(LazyInstanceAttribute), true); - if (lazy.Length > 0) + if (!_ignoreLazyLoad) { - if (((LazyInstanceAttribute)lazy[0]).IsLazy) - { + if (objectMapper.IsLazy) continue; - } } - } - object[] attribs = prop.GetCustomAttributes(typeof(AssociationAttribute), true); - if (attribs.Length > 0) - { - var assocAttrib = (AssociationAttribute)attribs[0]; + string thisKey = objectMapper.Association.ThisKey[0]; - PropertyInfo parentField = type.GetProperty(assocAttrib.ThisKey); - PropertyInfo childField = prop.PropertyType.GetProperty(assocAttrib.OtherKey); - if (isCollection) - { - childField = listElementType.GetProperty(assocAttrib.OtherKey); - //FullMappingSchema.GetColumnFromProperty(listElementType, associationAttribute.OtherKey); - } - - object[] parentFieldAttributes = parentField.GetCustomAttributes(typeof(MapFieldAttribute), true); - string parentDbField = parentFieldAttributes.Length > 0 - ? ((MapFieldAttribute)parentFieldAttributes[0]).MapName - : assocAttrib.ThisKey; - - object[] childFieldAttributes = childField.GetCustomAttributes(typeof(MapFieldAttribute), true); - string childDbField = childFieldAttributes.Length > 0 - ? ((MapFieldAttribute)childFieldAttributes[0]).MapName - : assocAttrib.OtherKey; + // TITLE + string parentDbField = valueMappers.ContainsKey(thisKey) ? valueMappers[thisKey].ColumnName : thisKey; + // ARTIST + string childDbField = objectMapper.PropertiesMapping.Where(e => e is ValueMapper).Cast().First( + e => e.PropertyName == objectMapper.Association.OtherKey[0]).ColumnName; - string childDatabase = isCollection - ? GetDatabaseName(listElementType) - : GetDatabaseName(prop.PropertyType); - - string childOwner = isCollection ? base.GetOwnerName(listElementType) : base.GetOwnerName(prop.PropertyType); - string childName = isCollection ? base.GetTableName(listElementType) : base.GetTableName(prop.PropertyType); - string childAlias = isCollection ? GetTableName(listElementType) : GetTableName(prop.PropertyType); + string childDatabase = GetDatabaseName(mapField.PropertyType); + string childOwner = base.GetOwnerName(mapField.PropertyType); + string childName = base.GetTableName(mapField.PropertyType); + string childAlias = FullGetTableName(mapField.PropertyType); StringBuilder childFullName = db.DataProvider.CreateSqlProvider().BuildTableName( new StringBuilder(), @@ -221,16 +220,18 @@ private void AppendJoinTableName(StringBuilder sb, DbManager db, Type type) ? null : db.DataProvider.Convert(childName, ConvertType.NameToQueryTable).ToString()); - sb.AppendFormat("\tINNER JOIN {0} {1} ON {2}.{3}={4}.{5}\n", + sb.AppendFormat("\tFULL OUTER JOIN {0} {1} ON {2}.{3}={4}.{5}\n", childFullName, - childAlias, - parentName, + tableName + tableNr.ToString() /*childAlias*/, + tableName /*parentName*/, parentDbField, - childAlias, + tableName + tableNr.ToString() /*childAlias*/, childDbField ); - - AppendJoinTableName(sb, db, isCollection ? listElementType : prop.PropertyType); + + AppendJoinTableName((IPropertiesMapping)mapField, sb, db, mapField.PropertyType, tableName + tableNr.ToString()); + + tableNr++; } } @@ -252,8 +253,7 @@ private void AppendJoinTableName(StringBuilder sb, DbManager db, Type type) // ARTIST2.ID_ARTIST = 2566 } - private void AddWherePK(DbManager db, SqlQueryInfo query, StringBuilder sb, int nParameter, - FullObjectMapper mapper) + private void AddWherePK(DbManager db, SqlQueryInfo query, StringBuilder sb, int nParameter, FullObjectMapper mapper) { sb.Append("WHERE\n"); @@ -261,17 +261,18 @@ private void AddWherePK(DbManager db, SqlQueryInfo query, StringBuilder sb, int { if (mm is ValueMapper && mm.DataReaderIndex == mapper.DataReaderIndex) { - var valueMapper = (ValueMapper)mm; + var valueMapper = (ValueMapper) mm; string tableAlias = mapper.PropertyType.Name; //mm.Name = ID_TRACK SqlQueryParameterInfo p = query.AddParameter( db.DataProvider.Convert(valueMapper.ColumnName + "_W", ConvertType.NameToQueryParameter). - ToString(), + ToString(), valueMapper.ColumnName); - sb.AppendFormat("\t{0}.{1} = ", tableAlias, db.DataProvider.Convert(p.FieldName, ConvertType.NameToQueryField)); + sb.AppendFormat("\t{0}.{1} = ", "T" /* tableAlias */, + db.DataProvider.Convert(p.FieldName, ConvertType.NameToQueryField)); if (nParameter < 0) sb.AppendFormat("{0} AND\n", p.ParameterName); @@ -282,5 +283,7 @@ private void AddWherePK(DbManager db, SqlQueryInfo query, StringBuilder sb, int sb.Remove(sb.Length - 5, 5); } + + #endregion } } \ No newline at end of file diff --git a/Extensions/JointureAddOn/DataAccess/FullSqlQueryT.cs b/Extensions/JointureAddOn/DataAccess/FullSqlQueryT.cs index 06e3b3720..6f76c3f8c 100644 --- a/Extensions/JointureAddOn/DataAccess/FullSqlQueryT.cs +++ b/Extensions/JointureAddOn/DataAccess/FullSqlQueryT.cs @@ -1,585 +1,164 @@ using System; using System.Collections; +using System.Collections.Generic; using System.Linq; -using System.Reflection; -using System.Text; -using BLToolkit.Aspects; using BLToolkit.Data; -using BLToolkit.Data.DataProvider; -using BLToolkit.Mapping; -using BLToolkit.TypeBuilder; namespace BLToolkit.DataAccess { - public class FullSqlQuery : SqlQuery + public class FullSqlQueryT : FullSqlQuery, ISqlQueryT { - private bool _ignoreLazyLoad; - #region Constructors - public FullSqlQuery(DbManager dbManager) - : base(dbManager) - { - dbManager.MappingSchema = new FullMappingSchema(false); - } - - public FullSqlQuery(DbManager dbManager, bool ignoreLazyLoad) - : base(dbManager) + public FullSqlQueryT(DbManager dbManager, bool ignoreLazyLoad = false) + : base(dbManager, ignoreLazyLoad) { - dbManager.MappingSchema = new FullMappingSchema(ignoreLazyLoad); - _ignoreLazyLoad = ignoreLazyLoad; } #endregion - #region Overrides + #region Implementation of ISqlQueryT - [NoInterception] - protected override SqlQueryInfo CreateSqlText(DbManager db, Type type, string actionName) + public T SelectByKey(DbManager db, params object[] keys) { - switch (actionName) - { - case "SelectByKey": - return CreateSelectFullByKeySqlText(db, type); - case "SelectAll": - return CreateSelectAllFullSqlText(db, type); - default: - return base.CreateSqlText(db, type, actionName); - } + return (T) base.SelectByKey(db, typeof(T), keys); } - #endregion - - #region Protected - - protected SqlQueryInfo CreateSelectAllFullSqlText(DbManager db, Type type) + public T SelectByKey(params object[] keys) { - var sb = new StringBuilder(); - var query = new FullSqlQueryInfo(); - - sb.Append("SELECT\n"); - - int index = 0; - FullObjectMapper mainMapper = ((FullMappingSchema) db.MappingSchema).GetObjectMapper(type, ref index); - BuildSelectSQL(mainMapper, sb, db); - - sb.Remove(sb.Length - 2, 1); - - sb.Append("FROM\n\t"); - - FullAppendTableName(sb, db, type); - - AppendJoinTableName(sb, db, type); - - query.QueryText = sb.ToString(); - - return query; + return (T)base.SelectByKey(typeof(T), keys); } - protected SqlQueryInfo CreateSelectFullByKeySqlText(DbManager db, Type type) + public List SelectAll(DbManager db) { - var sb = new StringBuilder(); - var query = new FullSqlQueryInfo(); - - sb.Append("SELECT\n"); - - int index = 0; - FullObjectMapper mainMapper = ((FullMappingSchema) db.MappingSchema).GetObjectMapper(type, ref index); - BuildSelectSQL(mainMapper, sb, db); - - sb.Remove(sb.Length - 2, 1); - - sb.Append("FROM\n\t"); - - FullAppendTableName(sb, db, type); - - AppendJoinTableName(sb, db, type); - - AddWherePK(db, query, sb, -1, mainMapper); - - query.QueryText = sb.ToString(); - - return query; + return base.SelectAll(db, typeof(T)).Cast().ToList(); } - protected void FullAppendTableName(StringBuilder sb, DbManager db, Type type) + public TL SelectAll(DbManager db, TL list) where TL : IList { - var database = GetDatabaseName(type); - var owner = GetOwnerName(type); - var name = base.GetTableName(type); - - db.DataProvider.CreateSqlProvider().BuildTableName(sb, - database == null - ? null - : db.DataProvider.Convert(database, - ConvertType.NameToDatabase) - .ToString(), - owner == null - ? null - : db.DataProvider.Convert(owner, - ConvertType.NameToOwner). - ToString(), - name == null - ? null - : db.DataProvider.Convert(name, - ConvertType. - NameToQueryTable). - ToString()); - - //TODO Override OracleSqlProvider in order to avoid this mess... - string alias = FullGetTableName(type); - sb.Append(" " + alias); - sb.AppendLine(); + return (TL)base.SelectAll(db, (IList)list, typeof(T)); } - protected string FullGetTableName(Type type) + public TL SelectAll(DbManager db) where TL : IList, new() { - //bool isSet; - //return MappingSchema.MetadataProvider.GetTableName(type, Extensions, out isSet); - - return type.Name; + return SelectAll(db, new TL()); } - #endregion - - private void BuildSelectSQL(IPropertiesMapping mapper, StringBuilder sb, DbManager db) + public List SelectAll() { - foreach (IMapper mapField in mapper.PropertiesMapping) - { - if (mapField is ValueMapper) - sb.AppendFormat("\t{0}.{1},\n" - , ((IObjectMapper)mapper).PropertyType.Name - , - db.DataProvider.Convert(((ValueMapper)mapField).ColumnName, - ConvertType.NameToQueryField) - ); - else if (mapField is IPropertiesMapping) - { - var propertiesMapping = (IPropertiesMapping)mapField; - var cel = propertiesMapping.ParentMapping; - while (cel != null) - { - // To avoid recursion dont take in account types already loaded. - if (((IMapper)cel).PropertyType == mapField.PropertyType) - continue; - cel = cel.ParentMapping; - } - var objectMapper = (IObjectMapper)mapField; - if (!objectMapper.IsLazy) - BuildSelectSQL(propertiesMapping, sb, db); - } - else - throw new NotImplementedException(mapField.GetType() + " is not yet implemented."); - } + return base.SelectAll(typeof(T)).Cast().ToList(); } - private void AppendJoinTableName(StringBuilder sb, DbManager db, Type type) + public TL SelectAll(TL list) where TL : IList { - string parentName = FullGetTableName(type); - - foreach (PropertyInfo prop in type.GetProperties()) - { - bool isCollection = prop.PropertyType.GetInterfaces().ToList().Contains(typeof(IList)); - Type listElementType = null; - if (isCollection) - { - listElementType = FullMappingSchema.GetGenericType(prop.PropertyType); - } - - if (!_ignoreLazyLoad) - { - object[] lazy = prop.GetCustomAttributes(typeof (LazyInstanceAttribute), true); - if (lazy.Length > 0) - { - if (((LazyInstanceAttribute) lazy[0]).IsLazy) - { - continue; - } - } - } - - object[] attribs = prop.GetCustomAttributes(typeof(AssociationAttribute), true); - if (attribs.Length > 0) - { - var associationAttribute = (AssociationAttribute)attribs[0]; - - PropertyInfo parentField = type.GetProperty(associationAttribute.ThisKey); - PropertyInfo childField = prop.PropertyType.GetProperty(associationAttribute.OtherKey); - if (isCollection) - { - childField = listElementType.GetProperty(associationAttribute.OtherKey); - //FullMappingSchema.GetColumnFromProperty(listElementType, associationAttribute.OtherKey); - } - - object[] parentFieldAttributes = parentField.GetCustomAttributes(typeof(MapFieldAttribute), true); - string parentDbField = parentFieldAttributes.Length > 0 - ? ((MapFieldAttribute)parentFieldAttributes[0]).MapName - : associationAttribute.ThisKey; - - object[] childFieldAttributes = childField.GetCustomAttributes(typeof(MapFieldAttribute), true); - string childDbField = childFieldAttributes.Length > 0 - ? ((MapFieldAttribute)childFieldAttributes[0]).MapName - : associationAttribute.OtherKey; - - - string childDatabase = isCollection - ? GetDatabaseName(listElementType) - : GetDatabaseName(prop.PropertyType); - - string childOwner = isCollection ? base.GetOwnerName(listElementType) : base.GetOwnerName(prop.PropertyType); - string childName = isCollection ? base.GetTableName(listElementType) : base.GetTableName(prop.PropertyType); - string childAlias = isCollection ? FullGetTableName(listElementType) : FullGetTableName(prop.PropertyType); - - StringBuilder childFullName = db.DataProvider.CreateSqlProvider().BuildTableName( - new StringBuilder(), - childDatabase == null - ? null - : db.DataProvider.Convert(childDatabase, ConvertType.NameToDatabase).ToString(), - childOwner == null - ? null - : db.DataProvider.Convert(childOwner, ConvertType.NameToOwner).ToString(), - childName == null - ? null - : db.DataProvider.Convert(childName, ConvertType.NameToQueryTable).ToString()); - - sb.AppendFormat("\tINNER JOIN {0} {1} ON {2}.{3}={4}.{5}\n", - childFullName, - childAlias, - parentName, - parentDbField, - childAlias, - childDbField - ); - - AppendJoinTableName(sb, db, isCollection ? listElementType : prop.PropertyType); - } - } - - sb.AppendLine(); - - //SELECT - // ARTIST2.ID_ARTIST, - // ARTIST2.ARTIST, - // TRACK.ID_TRACK, - // TRACK.TRACK, - // TRACK.ID_ARTIST, - // ARTIST.ID_ARTIST, - // ARTIST.ARTIST - //FROM - // PITAFR01.ARTIST ARTIST2 - // INNER JOIN PITAFR01.TRACK TRACK ON ARTIST2.ID_ARTIST=TRACK.ID_ARTIST - // INNER JOIN PITAFR01.ARTIST ARTIST ON TRACK.ID_ARTIST=ARTIST.ID_ARTIST - //WHERE - // ARTIST2.ID_ARTIST = 2566 + return SelectAll(DbManager, list); } - private void AddWherePK(DbManager db, SqlQueryInfo query, StringBuilder sb, int nParameter, - FullObjectMapper mapper) + public TL SelectAll() where TL : IList, new() { - sb.Append("WHERE\n"); - - foreach (IMapper mm in mapper.PropertiesMapping) - { - if (mm is ValueMapper && mm.DataReaderIndex == mapper.DataReaderIndex) - { - var valueMapper = (ValueMapper)mm; - - string tableAlias = mapper.PropertyType.Name; - - //mm.Name = ID_TRACK - SqlQueryParameterInfo p = query.AddParameter( - db.DataProvider.Convert(valueMapper.ColumnName + "_W", ConvertType.NameToQueryParameter). - ToString(), - valueMapper.ColumnName); - - sb.AppendFormat("\t{0}.{1} = ", tableAlias, - db.DataProvider.Convert(p.FieldName, ConvertType.NameToQueryField)); - - if (nParameter < 0) - sb.AppendFormat("{0} AND\n", p.ParameterName); - else - sb.AppendFormat("{{{0}}} AND\n", nParameter++); - } - } - - sb.Remove(sb.Length - 5, 5); + return SelectAll(DbManager); } - } - - public class FullSqlQueryT : SqlQuery - { - private bool _ignoreLazyLoad; - - #region Constructors - public FullSqlQueryT(DbManager dbManager) - : base(dbManager) + public int Insert(DbManager db, T obj) { - dbManager.MappingSchema = new FullMappingSchema(); + return base.Insert(db, obj); } - public FullSqlQueryT(DbManager dbManager, bool ignoreLazyLoad) - : base(dbManager) + public int Insert(T obj) { - dbManager.MappingSchema = new FullMappingSchema(ignoreLazyLoad); - _ignoreLazyLoad = ignoreLazyLoad; + return base.Insert(obj); } - #endregion - - #region Overrides - - [NoInterception] - protected override SqlQueryInfo CreateSqlText(DbManager db, Type type, string actionName) + public int Insert(DbManager db, int maxBatchSize, IEnumerable list) { - switch (actionName) - { - case "SelectByKey": - return CreateSelectFullByKeySqlText(db, type); - case "SelectAll": - return CreateSelectAllFullSqlText(db, type); - default: - return base.CreateSqlText(db, type, actionName); - } + throw new NotImplementedException(); } - #endregion - - #region Protected - - protected SqlQueryInfo CreateSelectAllFullSqlText(DbManager db, Type type) + public int Insert(int maxBatchSize, IEnumerable list) { - var sb = new StringBuilder(); - var query = new FullSqlQueryInfo(); - - sb.Append("SELECT\n"); - - int index = 0; - FullObjectMapper mainMapper = ((FullMappingSchema) db.MappingSchema).GetObjectMapper(type, ref index); - BuildSelectSQL(mainMapper, sb, db); - - sb.Remove(sb.Length - 2, 1); - - sb.Append("FROM\n\t"); - - FullAppendTableName(sb, db, type); - - AppendJoinTableName(sb, db, type); - - query.QueryText = sb.ToString(); - - return query; + return Insert(DbManager, maxBatchSize, list); } - protected SqlQueryInfo CreateSelectFullByKeySqlText(DbManager db, Type type) + public int Insert(DbManager db, IEnumerable list) { - var sb = new StringBuilder(); - var query = new FullSqlQueryInfo(); - - sb.Append("SELECT\n"); - - int index = 0; - FullObjectMapper mainMapper = ((FullMappingSchema)db.MappingSchema).GetObjectMapper(type, ref index); - BuildSelectSQL(mainMapper, sb, db); - - sb.Remove(sb.Length - 2, 1); - - sb.Append("FROM\n\t"); - - FullAppendTableName(sb, db, type); - - AppendJoinTableName(sb, db, type); - - AddWherePK(db, query, sb, -1, mainMapper); + return Insert(db, int.MaxValue, list); + } - query.QueryText = sb.ToString(); + public int Insert(IEnumerable list) + { + return Insert(DbManager, list); + } - return query; + public int Update(DbManager db, T obj) + { + return base.Update(db, obj); } - protected void FullAppendTableName(StringBuilder sb, DbManager db, Type type) + public int Update(T obj) { - var database = GetDatabaseName(type); - var owner = GetOwnerName(type); - var name = base.GetTableName(type); - - db.DataProvider.CreateSqlProvider().BuildTableName(sb, - database == null ? null : db.DataProvider.Convert(database, ConvertType.NameToDatabase).ToString(), - owner == null ? null : db.DataProvider.Convert(owner, ConvertType.NameToOwner).ToString(), - name == null ? null : db.DataProvider.Convert(name, ConvertType.NameToQueryTable).ToString()); - - //TODO Override OracleSqlProvider in order to avoid this mess... - string alias = FullGetTableName(type); - sb.Append(" " + alias); - sb.AppendLine(); + return base.Update(obj); } - protected string FullGetTableName(Type type) + public int Update(DbManager db, int maxBatchSize, IEnumerable list) { - //bool isSet; - //return MappingSchema.MetadataProvider.GetTableName(type, Extensions, out isSet); + throw new NotImplementedException(); + } - return type.Name; + public int Update(int maxBatchSize, IEnumerable list) + { + return Update(DbManager, maxBatchSize, list); } - #endregion + public int Update(DbManager db, IEnumerable list) + { + return Update(db, int.MaxValue, list); + } - private void BuildSelectSQL(IPropertiesMapping mapper, StringBuilder sb, DbManager db) + public int Update(IEnumerable list) { - foreach (IMapper mapField in mapper.PropertiesMapping) - { - if (mapField is ValueMapper) - sb.AppendFormat("\t{0}.{1},\n", ((IObjectMapper)mapper).PropertyType.Name, - db.DataProvider.Convert(((ValueMapper)mapField).ColumnName, ConvertType.NameToQueryField)); - else if (mapField is IPropertiesMapping) - { - var propertiesMapping = (IPropertiesMapping)mapField; - var cel = propertiesMapping.ParentMapping; - while (cel != null) - { - // To avoid recursion dont take in account types already loaded. - if (((IMapper)cel).PropertyType == mapField.PropertyType) - continue; - cel = cel.ParentMapping; - } - var objectMapper = (IObjectMapper)mapField; - if (!objectMapper.IsLazy) - BuildSelectSQL(propertiesMapping, sb, db); - } - else - throw new NotImplementedException(mapField.GetType() + " is not yet implemented."); - } + return Update(DbManager, list); } - private void AppendJoinTableName(StringBuilder sb, DbManager db, Type type) + public int DeleteByKey(DbManager db, params object[] key) { - string parentName = FullGetTableName(type); - - foreach (PropertyInfo prop in type.GetProperties()) - { - bool isCollection = prop.PropertyType.GetInterfaces().ToList().Contains(typeof (IList)); - Type listElementType = null; - if (isCollection) - { - listElementType = FullMappingSchema.GetGenericType(prop.PropertyType); - } - - if (!_ignoreLazyLoad) - { - object[] lazy = prop.GetCustomAttributes(typeof (LazyInstanceAttribute), true); - if (lazy.Length > 0) - { - if (((LazyInstanceAttribute) lazy[0]).IsLazy) - { - continue; - } - } - } - - object[] attribs = prop.GetCustomAttributes(typeof (AssociationAttribute), true); - if (attribs.Length > 0) - { - var assocAttrib = (AssociationAttribute) attribs[0]; - - PropertyInfo parentField = type.GetProperty(assocAttrib.ThisKey); - PropertyInfo childField = prop.PropertyType.GetProperty(assocAttrib.OtherKey); - if (isCollection) - { - childField = listElementType.GetProperty(assocAttrib.OtherKey); - //FullMappingSchema.GetColumnFromProperty(listElementType, associationAttribute.OtherKey); - } - - object[] parentFieldAttributes = parentField.GetCustomAttributes(typeof (MapFieldAttribute), true); - string parentDbField = parentFieldAttributes.Length > 0 - ? ((MapFieldAttribute) parentFieldAttributes[0]).MapName - : assocAttrib.ThisKey; - - object[] childFieldAttributes = childField.GetCustomAttributes(typeof (MapFieldAttribute), true); - string childDbField = childFieldAttributes.Length > 0 - ? ((MapFieldAttribute) childFieldAttributes[0]).MapName - : assocAttrib.OtherKey; - - - string childDatabase = isCollection - ? GetDatabaseName(listElementType) - : GetDatabaseName(prop.PropertyType); - - string childOwner = isCollection ? base.GetOwnerName(listElementType) : base.GetOwnerName(prop.PropertyType); - string childName = isCollection ? base.GetTableName(listElementType) : base.GetTableName(prop.PropertyType); - string childAlias = isCollection ? FullGetTableName(listElementType) : FullGetTableName(prop.PropertyType); - - StringBuilder childFullName = db.DataProvider.CreateSqlProvider().BuildTableName( - new StringBuilder(), - childDatabase == null - ? null - : db.DataProvider.Convert(childDatabase, ConvertType.NameToDatabase).ToString(), - childOwner == null - ? null - : db.DataProvider.Convert(childOwner, ConvertType.NameToOwner).ToString(), - childName == null - ? null - : db.DataProvider.Convert(childName, ConvertType.NameToQueryTable).ToString()); - - sb.AppendFormat("\tINNER JOIN {0} {1} ON {2}.{3}={4}.{5}\n", - childFullName, - childAlias, - parentName, - parentDbField, - childAlias, - childDbField - ); - - AppendJoinTableName(sb, db, isCollection ? listElementType : prop.PropertyType); - } - } - - sb.AppendLine(); - - //SELECT - // ARTIST2.ID_ARTIST, - // ARTIST2.ARTIST, - // TRACK.ID_TRACK, - // TRACK.TRACK, - // TRACK.ID_ARTIST, - // ARTIST.ID_ARTIST, - // ARTIST.ARTIST - //FROM - // PITAFR01.ARTIST ARTIST2 - // INNER JOIN PITAFR01.TRACK TRACK ON ARTIST2.ID_ARTIST=TRACK.ID_ARTIST - // INNER JOIN PITAFR01.ARTIST ARTIST ON TRACK.ID_ARTIST=ARTIST.ID_ARTIST - //WHERE - // ARTIST2.ID_ARTIST = 2566 + return base.DeleteByKey(db, typeof(T), key); } - private void AddWherePK(DbManager db, SqlQueryInfo query, StringBuilder sb, int nParameter, - FullObjectMapper mapper) + public int DeleteByKey(params object[] key) { - sb.Append("WHERE\n"); + return base.DeleteByKey(typeof(T), key); + } - foreach (IMapper mm in mapper.PropertiesMapping) - { - if (mm is ValueMapper && mm.DataReaderIndex == mapper.DataReaderIndex) - { - var valueMapper = (ValueMapper)mm; + public int Delete(DbManager db, T obj) + { + return base.Delete(db, obj); + } - string tableAlias = mapper.PropertyType.Name; + public int Delete(T obj) + { + return base.Delete(obj); + } - //mm.Name = ID_TRACK - SqlQueryParameterInfo p = query.AddParameter( - db.DataProvider.Convert(valueMapper.ColumnName + "_W", ConvertType.NameToQueryParameter). - ToString(), - valueMapper.ColumnName); + public int Delete(DbManager db, int maxBatchSize, IEnumerable list) + { + throw new NotImplementedException(); + } - sb.AppendFormat("\t{0}.{1} = ", tableAlias, db.DataProvider.Convert(p.FieldName, ConvertType.NameToQueryField)); + public int Delete(int maxBatchSize, IEnumerable list) + { + return Delete(DbManager, maxBatchSize, list); + } - if (nParameter < 0) - sb.AppendFormat("{0} AND\n", p.ParameterName); - else - sb.AppendFormat("{{{0}}} AND\n", nParameter++); - } - } + public int Delete(DbManager db, IEnumerable list) + { + return Delete(int.MaxValue, list); + } - sb.Remove(sb.Length - 5, 5); + public int Delete(IEnumerable list) + { + return Delete(DbManager, list); } + + #endregion } } \ No newline at end of file diff --git a/Extensions/JointureAddOn/Mapping/CollectionFullObjectMapper.cs b/Extensions/JointureAddOn/Mapping/CollectionFullObjectMapper.cs new file mode 100644 index 000000000..c13b27b1b --- /dev/null +++ b/Extensions/JointureAddOn/Mapping/CollectionFullObjectMapper.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using BLToolkit.Data; +using BLToolkit.DataAccess; +using BLToolkit.Emit; + +namespace BLToolkit.Mapping +{ + public class CollectionFullObjectMapper : TableDescription, IObjectMapper + { + private readonly DbManager _db; + private readonly FactoryType _factoryType; + + public CollectionFullObjectMapper(DbManager db, FactoryType factoryType) + { + _db = db; + _factoryType = factoryType; + + PropertiesMapping = new List(); + PrimaryKeyValueGetters = new List(); + PrimaryKeyNames = new List(); + } + + public Type PropertyCollectionType { get; set; } + + #region IMapper Members + + public int DataReaderIndex { get; set; } + public SetHandler Setter { get; set; } + public Type PropertyType { get; set; } + public string PropertyName { get; set; } + + #endregion + + #region IObjectMapper + + public bool IsLazy { get; set; } + public bool ContainsLazyChild { get; set; } + public GetHandler Getter { get; set; } + + public List PrimaryKeyValueGetters { get; set; } + public Association Association { get; set; } + + public List PrimaryKeyNames { get; set; } + + #endregion + + #region ILazyMapper + + public GetHandler ParentKeyGetter { get; set; } + + #endregion + + public object CreateInstance() + { + object result = ContainsLazyChild + ? (_factoryType == FactoryType.LazyLoading + ? TypeFactory.LazyLoading.Create(PropertyType, this, LoadLazy) + : TypeFactory.LazyLoadingWithDataBinding.Create(PropertyType, this, LoadLazy)) + : FunctionFactory.Remote.CreateInstance(PropertyType); + + return result; + } + + private object LoadLazy(IMapper mapper, object proxy, Type parentType) + { + var lazyMapper = (ILazyMapper) mapper; + object key = lazyMapper.ParentKeyGetter(proxy); + + var fullSqlQuery = new FullSqlQuery(_db, true); + object parentLoadFull = fullSqlQuery.SelectByKey(parentType, key); + if (parentLoadFull == null) + { + object value = Activator.CreateInstance(mapper is CollectionFullObjectMapper + ? (mapper as CollectionFullObjectMapper).PropertyCollectionType + : mapper.PropertyType); + return value; + } + + var objectMapper = (IObjectMapper) mapper; + return objectMapper.Getter(parentLoadFull); + } + + #region IPropertiesMapping Members + + public List PropertiesMapping { get; private set; } + public IPropertiesMapping ParentMapping { get; set; } + + #endregion + } +} \ No newline at end of file diff --git a/Extensions/JointureAddOn/Mapping/DataBindingMappingSchema.cs b/Extensions/JointureAddOn/Mapping/DataBindingMappingSchema.cs new file mode 100644 index 000000000..95fca5f8d --- /dev/null +++ b/Extensions/JointureAddOn/Mapping/DataBindingMappingSchema.cs @@ -0,0 +1,33 @@ +using System; +using BLToolkit.Data; + +namespace BLToolkit.Mapping +{ + public class DataBindingMappingSchema : MappingSchema + { + protected override ObjectMapper CreateObjectMapperInstance(Type type) + { + var res = new DataBindingObjectMapper(type); + + return res; + } + } + + public class FullDataBindingMappingSchema : FullMappingSchema + { + private readonly DbManager _db; + private readonly bool _ignoreLazyLoad; + + public FullDataBindingMappingSchema(DbManager db, bool ignoreLazyLoad = false, MappingSchema parentMappingSchema = null) + : base(db, ignoreLazyLoad, parentMappingSchema, FactoryType.LazyLoadingWithDataBinding) + { + _db = db; + _ignoreLazyLoad = ignoreLazyLoad; + } + + protected override ObjectMapper CreateObjectMapperInstance(Type type) + { + return new FullDataBindingObjectMapper(_db, _ignoreLazyLoad); + } + } +} \ No newline at end of file diff --git a/Extensions/JointureAddOn/Mapping/DataBindingObjectMapper.cs b/Extensions/JointureAddOn/Mapping/DataBindingObjectMapper.cs new file mode 100644 index 000000000..96963a481 --- /dev/null +++ b/Extensions/JointureAddOn/Mapping/DataBindingObjectMapper.cs @@ -0,0 +1,46 @@ +#region + +using System; +using BLToolkit.Data; +using BLToolkit.Reflection; + +#endregion + +namespace BLToolkit.Mapping +{ + public class DataBindingObjectMapper : ObjectMapper + { + private readonly Type _type; + + public DataBindingObjectMapper(Type type) + { + _type = type; + } + + public override object CreateInstance() + { + return TypeFactory.DataBindingFactory.Create(_type); + } + + public override object CreateInstance(InitContext context) + { + return CreateInstance(); + } + } + + public class FullDataBindingObjectMapper : FullObjectMapper + { + public FullDataBindingObjectMapper(DbManager db, bool ignoreLazyLoading) : base(db, ignoreLazyLoading, FactoryType.LazyLoadingWithDataBinding) + { + } + + public override object CreateInstance() + { + object result = ContainsLazyChild + ? TypeFactory.LazyLoadingWithDataBinding.Create(PropertyType, this, LoadLazy) + : base.CreateInstance(); + + return result; + } + } +} \ No newline at end of file diff --git a/Extensions/JointureAddOn/Mapping/FactoryType.cs b/Extensions/JointureAddOn/Mapping/FactoryType.cs new file mode 100644 index 000000000..ced1c02a3 --- /dev/null +++ b/Extensions/JointureAddOn/Mapping/FactoryType.cs @@ -0,0 +1,8 @@ +namespace BLToolkit.Mapping +{ + public enum FactoryType + { + LazyLoading, + LazyLoadingWithDataBinding, + } +} \ No newline at end of file diff --git a/Extensions/JointureAddOn/Mapping/FullMappingSchema.cs b/Extensions/JointureAddOn/Mapping/FullMappingSchema.cs index 017e2b37a..86c372eb3 100644 --- a/Extensions/JointureAddOn/Mapping/FullMappingSchema.cs +++ b/Extensions/JointureAddOn/Mapping/FullMappingSchema.cs @@ -1,474 +1,306 @@ -/********************************************************************************************** - * To make a new version of the mapping, I have to set virtual the method - * MapDataReaderToObject (l.2177 in MappingSchema.cs). - * - * - * *********************************************/ +#region using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq; -using System.Reflection; using BLToolkit.Data; -using BLToolkit.DataAccess; -using BLToolkit.Emit; -using BLToolkit.Reflection; -using BLToolkit.TypeBuilder; -using Castle.DynamicProxy; +using BLToolkit.Reflection.Extension; + +#endregion namespace BLToolkit.Mapping { public class FullMappingSchema : MappingSchema { - #region Private members - - private static readonly object _setterHandlersLock = new object(); - - private static readonly Dictionary> _settersHandlers = - new Dictionary>(); - - private static readonly Dictionary> _gettersHandlers = - new Dictionary>(); - - private readonly ProxyGenerator Proxy = new ProxyGenerator(); + #region Fields - private readonly Dictionary _mappers = new Dictionary(); + private readonly DbManager _db; + private readonly bool _ignoreLazyLoad; + private DataTable _schema; + private List _schemaColumns; + private readonly MappingSchema _parentMappingSchema; + private readonly FactoryType _factoryType; - private bool _ignoreLazyLoad; + private ExtensionList _extensions; #endregion - public FullMappingSchema(bool ignoreLazyLoad) + public FullMappingSchema(DbManager db, bool ignoreLazyLoad = false, MappingSchema parentMappingSchema = null, + FactoryType factoryType = FactoryType.LazyLoading) { + _db = db; + _parentMappingSchema = parentMappingSchema; + _factoryType = factoryType; _ignoreLazyLoad = ignoreLazyLoad; } - public FullMappingSchema() - : this(false) + #region Overrides + + public override ExtensionList Extensions { + get + { + if (_parentMappingSchema != null) + return this._parentMappingSchema.Extensions; + return _extensions; + } + set + { + if (_parentMappingSchema != null) + this._parentMappingSchema.Extensions = value; + _extensions = value; + } } - #region Overrides + protected override ObjectMapper CreateObjectMapperInstance(Type type) + { + return new FullObjectMapper(_db, _ignoreLazyLoad,_factoryType); + } - public override object MapDataReaderToObject( - IDataReader dataReader, - Type destObjectType, - params object[] parameters) + protected override void MapInternal(Reflection.InitContext initContext, IMapDataSource source, object sourceObject, IMapDataDestination dest, object destObject, params object[] parameters) { - // Get mapping for the type - if (destObjectType == null) throw new ArgumentNullException("type"); + FullObjectMapper mapper = (FullObjectMapper)initContext.ObjectMapper; + IDataReader dataReader = (IDataReader)sourceObject; + + //int[] index = GetIndex(source, dest); + //IValueMapper[] mappers = GetValueMappers(source, dest, index); + + //foreach (var valueMapper in mappers) + //{ + + //} - if (dataReader.FieldCount == 0) - return null; + InitSchema(dataReader); - int index = 0; - FullObjectMapper mapper = GetObjectMapper(destObjectType, ref index); if (mapper.ColParent) { - object result = FillObject(mapper, dataReader); + FillObject(mapper, dataReader, destObject); while (dataReader.Read()) { - result = FillObject(result, mapper, dataReader); + destObject = FillObject(destObject, mapper, dataReader); } - - return result; } else - return FillObject(mapper, dataReader); + FillObject(mapper, dataReader, destObject); } - - public override IList MapDataReaderToList( + public override IList MapDataReaderToList( IDataReader reader, - IList list, + IList list, + Type destObjectType, params object[] parameters) { - FullObjectMapper mapper; - if (_mappers.ContainsKey(typeof (T))) - { - mapper = _mappers[typeof (T)]; - } - else - { - int index = 0; - mapper = GetObjectMapper(typeof (T), ref index); - _mappers[typeof (T)] = mapper; - } - - while (reader.Read()) - { - var result = FillObject(mapper, reader); - list.Add(result); - } - - return list; + return internalMapDataReaderToList(reader, list, destObjectType, parameters); } #endregion - private T FillObject(FullObjectMapper mapper, IDataReader datareader) - { - T result = mapper.ContainsLazyChild - ? (T) Proxy.CreateClassProxy(typeof (T), new LazyValueLoadInterceptor(mapper, LoadLazy)) - : FunctionFactory.Remote.CreateInstance(); + #region Private methods + private object FillObject(object result, IObjectMapper mapper, IDataReader datareader) + { foreach (IMapper map in mapper.PropertiesMapping) { if (map is IObjectMapper && (map as IObjectMapper).IsLazy) continue; - - if (!(map.DataReaderIndex < datareader.FieldCount)) - continue; - - if (!datareader.IsDBNull(map.DataReaderIndex)) + + if (map is CollectionFullObjectMapper) { - if (map is ValueMapper) - { - object value = datareader.GetValue(map.DataReaderIndex); - map.Setter(result, value); - } - else if (map is FullObjectMapper) + var collectionFullObjectMapper = (CollectionFullObjectMapper) map; + object listInstance = collectionFullObjectMapper.Getter(result); + if (listInstance == null) { - object fillObject = FillObject((FullObjectMapper) map, datareader); - map.Setter(result, fillObject); + listInstance = Activator.CreateInstance((map as CollectionFullObjectMapper).PropertyCollectionType); + map.Setter(result, listInstance); } - if (map is CollectionFullObjectMapper) - { - object collectionInstance = - Activator.CreateInstance((map as CollectionFullObjectMapper).PropertyCollectionType); - map.Setter(result, collectionInstance); - object fillObject = FillObject((CollectionFullObjectMapper) map, datareader); - ((IList) collectionInstance).Add(fillObject); - } - } - } + var list = (IList) listInstance; + object fillObject = ((CollectionFullObjectMapper)map).CreateInstance(); + FillObject((CollectionFullObjectMapper) map, datareader, fillObject); - return result; - } + if (list.Count > 0) + { + var curMapper = (FullObjectMapper)GetObjectMapper(fillObject.GetType()); - private object LoadLazy(IMapper mapper, object proxy, Type parentType) - { - var lazyMapper = (ILazyMapper)mapper; - object key = lazyMapper.ParentKeyGetter(proxy); - - using (var db = new DbManager()) - { - var fullSqlQuery = new FullSqlQuery(db, true); - object parentLoadFull = fullSqlQuery.SelectByKey(parentType, key); - if (parentLoadFull == null) - { - object value = Activator.CreateInstance(mapper is CollectionFullObjectMapper - ? (mapper as CollectionFullObjectMapper).PropertyCollectionType - : mapper.PropertyType); - return value; - } + object lastElement = list[list.Count - 1]; - var objectMapper = (IObjectMapper) mapper; - return objectMapper.Getter(parentLoadFull); - } - } + bool allPksEqual = true; - private object FillObject(object result, IObjectMapper mapper, IDataReader datareader) - { - foreach (IMapper map in mapper.PropertiesMapping) - { - if (map is IObjectMapper && (map as IObjectMapper).IsLazy) - continue; - - if (!datareader.IsDBNull(map.DataReaderIndex)) - { - ////IGNORE. TODO Add getter - //if (map is ValueMapper) - //{ - // //Type propType = (map as ValueMapper).PropertyType; - // object value = datareader.GetValue(map.DataReaderIndex); - // //if (value != null && value.GetType() != propType) - // //{ - // // value = ConvertChangeType(value, propType); - // //} - // map.Setter(result, value); - //} - - ////IGNORE. TODO Add getter - //if (map is FullObjectMapper) - //{ - // object fillObject = FillObject((FullObjectMapper)map, datareader); - // map.Setter(result, fillObject); - //} - if (map is CollectionFullObjectMapper) - { - var collectionFullObjectMapper = (CollectionFullObjectMapper) map; - object listInstance = collectionFullObjectMapper.Getter(result); - if (listInstance == null) + //This is needed, because DBValue can be Null, but the Field can be Guid, wich then is filled with Guid.Empty and this is also a valid value! + /*foreach (var pkIndex in pkIndexes) + { + var dbValue = reader.GetValue(pkIndex); + if (dbValue == DBNull.Value) + { + pkIsNull = true; + break; + } + }*/ + + foreach (var pkGetter in curMapper.PrimaryKeyValueGetters) { - listInstance = - Activator.CreateInstance((map as CollectionFullObjectMapper).PropertyCollectionType); - map.Setter(result, listInstance); + object lastPk = pkGetter.Invoke(lastElement); + object currentPk = pkGetter.Invoke(fillObject); + + if (!lastPk.Equals(currentPk)) + { + allPksEqual = false; + break; + } } - object fillObject = FillObject((CollectionFullObjectMapper) map, datareader); - ((IList) listInstance).Add(fillObject); + + if (allPksEqual) + continue; } + + ((IList) listInstance).Add(fillObject); } } return result; } - private object FillObject(IObjectMapper mapper, IDataReader datareader) + private void FillObject(IObjectMapper mapper, IDataReader datareader, object result) { - object result = mapper.ContainsLazyChild - ? Proxy.CreateClassProxy(mapper.PropertyType, new LazyValueLoadInterceptor(mapper, LoadLazy)) - : FunctionFactory.Remote.CreateInstance(mapper.PropertyType); - foreach (IMapper map in mapper.PropertiesMapping) { if (map is IObjectMapper && (map as IObjectMapper).IsLazy) continue; - if (!(map.DataReaderIndex < datareader.FieldCount)) + if (map is ValueMapper) + { + if (((ValueMapper)map).SetDataReaderIndex(_schemaColumns)) + continue; + } + + if (datareader.IsDBNull(map.DataReaderIndex)) continue; - if (!datareader.IsDBNull(map.DataReaderIndex)) + if (map is ValueMapper) { - if (map is ValueMapper) + object value = datareader.GetValue(map.DataReaderIndex); + + try { - //Type propType = (map as ValueMapper).PropertyType; - object value = datareader.GetValue(map.DataReaderIndex); - //if (value != null && value.GetType() != propType) - //{ - // value = ConvertChangeType(value, propType); - //} map.Setter(result, value); } - - if (map is FullObjectMapper) + catch (Exception exception) { - object fillObject = FillObject((FullObjectMapper) map, datareader); - map.Setter(result, fillObject); + throw new Exception( + string.Format("FillOject failed for field : {0} of class: {1}.\nColumn name : {2} Db type is: {3} and value : {4}", + map.PropertyName, mapper.PropertyType, + ((ValueMapper) map).ColumnName, + value == null ? "Null" : value.GetType().ToString(), value), exception); } + } - if (map is CollectionFullObjectMapper) - { - var collectionFullObjectMapper = (CollectionFullObjectMapper) map; + if (map is FullObjectMapper) + { + object fillObject = ((FullObjectMapper) map).CreateInstance(); + FillObject((FullObjectMapper) map, datareader, fillObject); + map.Setter(result, fillObject); + } - object listInstance = collectionFullObjectMapper.Getter(result); - if (listInstance == null) - { - listInstance = - Activator.CreateInstance((map as CollectionFullObjectMapper).PropertyCollectionType); - map.Setter(result, listInstance); - } - object fillObject = FillObject((CollectionFullObjectMapper) map, datareader); - ((IList) listInstance).Add(fillObject); + if (map is CollectionFullObjectMapper) + { + var collectionFullObjectMapper = (CollectionFullObjectMapper) map; + + object listInstance = collectionFullObjectMapper.Getter(result); + if (listInstance == null) + { + listInstance = Activator.CreateInstance((map as CollectionFullObjectMapper).PropertyCollectionType); + map.Setter(result, listInstance); } + + object fillObject = ((CollectionFullObjectMapper)map).CreateInstance(); + FillObject((CollectionFullObjectMapper) map, datareader, fillObject); + ((IList) listInstance).Add(fillObject); } } - - return result; } - public FullObjectMapper GetObjectMapper(Type mapperType, ref int startIndex) + private void InitSchema(IDataReader reader) { - var mapper = new FullObjectMapper {PropertyType = mapperType}; - return (FullObjectMapper) GetObjectMapper(mapper, ref startIndex); + _schemaColumns = new List(); + _schema = reader.GetSchemaTable(); + if (_schema != null) + _schema.Rows.Cast().ToList().ForEach(dr => _schemaColumns.Add((string)dr["ColumnName"])); } - public IMapper GetObjectMapper(IObjectMapper mapper, ref int startIndex) + private IList internalMapDataReaderToList( + IDataReader reader, + IList list, + Type destObjectType, + params object[] parameters) { - Type mapperType = mapper.PropertyType; - var objectMappers = new List(); - TableDescription tableDescription = GetTableDescription(mapperType); + FullObjectMapper mapper = (FullObjectMapper)GetObjectMapper(destObjectType); - lock (_setterHandlersLock) - { - if (!_settersHandlers.ContainsKey(mapperType)) - _settersHandlers.Add(mapperType, new Dictionary()); + InitSchema(reader); - if (!_gettersHandlers.ContainsKey(mapperType)) - _gettersHandlers.Add(mapperType, new Dictionary()); - } + object currentItem = null; - PropertyInfo[] properties = mapperType.GetProperties(); + List pkIndexes = new List(); + foreach (var nm in mapper.PrimaryKeyNames) + { + pkIndexes.Add(mapper.PropertiesMapping.First(x => x.PropertyName == nm).DataReaderIndex); + } - PropertyInfo primaryKeyPropInfo = null; - foreach (PropertyInfo prop in properties) + while (reader.Read()) { - // Setters - lock (_setterHandlersLock) - { - if (!_settersHandlers[mapper.PropertyType].ContainsKey(prop.Name)) - { - SetHandler setHandler = FunctionFactory.Il.CreateSetHandler(mapper.PropertyType, prop); - _settersHandlers[mapper.PropertyType].Add(prop.Name, setHandler /* IL.Setter*/); - } - } + var result = mapper.CreateInstance(); - object[] pkFields = prop.GetCustomAttributes(typeof(PrimaryKeyAttribute), true); - if (pkFields.Length > 0) + FillObject(mapper, reader, result); + if (currentItem == null) { - primaryKeyPropInfo = prop; + currentItem = result; + list.Add(result); + continue; } - } - foreach (PropertyInfo prop in properties) - { - bool isLazy = false; - if (!_ignoreLazyLoad) + + bool pkIsNull = false; + bool allPksEqual = true; + + //This is needed, because DBValue can be Null, but the Field can be Guid, wich then is filled with Guid.Empty and this is also a valid value! + foreach (var pkIndex in pkIndexes) { - object[] lazy = prop.GetCustomAttributes(typeof (LazyInstanceAttribute), true); - if (lazy.Length > 0) + var dbValue = reader.GetValue(pkIndex); + if (dbValue == DBNull.Value) { - if (((LazyInstanceAttribute) lazy[0]).IsLazy) - { - isLazy = true; - mapper.ContainsLazyChild = true; - - // Getters - lock (_setterHandlersLock) - if (!_gettersHandlers[mapperType].ContainsKey(primaryKeyPropInfo.Name)) - { - GetHandler getHandler = FunctionFactory.Il.CreateGetHandler(mapperType, - primaryKeyPropInfo); - _gettersHandlers[mapperType].Add(primaryKeyPropInfo.Name, getHandler); - } - } + pkIsNull = true; + break; } } - // Check if the accessor is an association - object[] associationAttr = prop.GetCustomAttributes(typeof (AssociationAttribute), true); - if (associationAttr.Length > 0) - { - if (associationAttr.Length > 1) - throw new Exception("AssociationAttribute is used several times on the property " + prop.Name); - var ass = (AssociationAttribute) associationAttr[0]; + if (!pkIsNull) + foreach (var pkGetter in mapper.PrimaryKeyValueGetters) + { + object resultPk = pkGetter.Invoke(result); + object currentItemPk = pkGetter.Invoke(currentItem); - // Getters for IObjectMapper - lock (_setterHandlersLock) - if (!_gettersHandlers[mapperType].ContainsKey(prop.Name)) + if (!resultPk.Equals(currentItemPk)) { - GetHandler getHandler = FunctionFactory.Il.CreateGetHandler(mapperType, prop); - _gettersHandlers[mapperType].Add(prop.Name, getHandler); + allPksEqual = false; + break; } - - bool isCollection = prop.PropertyType.GetInterfaces().ToList().Contains(typeof (IList)); - IObjectMapper propertiesMapping; - if (!isCollection) - { - propertiesMapping = new FullObjectMapper - { - PropertyType = prop.PropertyType, - IsNullable = ass.CanBeNull - }; - } - else - { - Type listElementType = GetGenericType(prop.PropertyType); - TableDescription colElementTableDescription = GetTableDescription(listElementType); - - propertiesMapping = new CollectionFullObjectMapper - { - PropertyType = listElementType, - Getter = _gettersHandlers[mapperType][prop.Name], - TableName = colElementTableDescription.TableName, - PropertyCollectionType = prop.PropertyType, - }; - - (mapper as FullObjectMapper).ColParent = true; } - propertiesMapping.PropertyName = prop.Name; - propertiesMapping.IsLazy = isLazy; - propertiesMapping.Setter = _settersHandlers[mapperType][prop.Name]; - - if (propertiesMapping.IsLazy) - { - propertiesMapping.ParentKeyGetter = _gettersHandlers[mapperType][primaryKeyPropInfo.Name]; - } - objectMappers.Add(propertiesMapping); - } - else + if (!pkIsNull && !allPksEqual) { - object[] nomapAttr = prop.GetCustomAttributes(typeof (NoMapAttribute), true); - if (nomapAttr.Length > 0) - continue; - - - object[] mapFields = prop.GetCustomAttributes(typeof (MapFieldAttribute), true); - if (mapFields.Length > 1) - throw new Exception("AssociationAttribute is used several times on the property " + prop.Name); - - - var map = new ValueMapper - { - PropertyName = prop.Name, - PropertyType = prop.PropertyType, - DataReaderIndex = startIndex, - Setter = _settersHandlers[mapperType][prop.Name], - TableName = tableDescription.TableName, - /* Optimize with Provider.BuildTableName */ - ColumnName = - mapFields.Length > 0 ? ((MapFieldAttribute) mapFields[0]).MapName : prop.Name - }; - - mapper.PropertiesMapping.Add(map); - - object[] pkFields = prop.GetCustomAttributes(typeof (PrimaryKeyAttribute), true); - if (pkFields.Length > 1) - throw new Exception("PrimaryKeyAttribute is used several times on the property " + prop.Name); - - if (pkFields.Length == 1) - mapper.DataReaderIndex = startIndex; - - startIndex++; + currentItem = result; + list.Add(result); + //continue; } - } - foreach (IObjectMapper objMap in objectMappers) - { - IObjectMapper cel = mapper; - while (cel != null) + if (mapper.ColParent) { - if (mapper.PropertyType == objMap.PropertyType) - continue; - - cel = (IObjectMapper) cel.ParentMapping; + FillObject(currentItem, mapper, reader); } - - objMap.ParentMapping = mapper; - mapper.PropertiesMapping.Add(GetObjectMapper(objMap, ref startIndex)); - //TODO startIndex++ ??? If we dont show the association column, dont increase the index } - return mapper; - } - - public static Type GetGenericType(Type t) - { - if (t.IsGenericType) - { - Type[] at = t.GetGenericArguments(); - return at.FirstOrDefault(); - } - return null; + return list; } - private TableDescription GetTableDescription(Type type) - { - var tableDescription = new TableDescription(); - object[] tableAtt = type.GetCustomAttributes(typeof (TableNameAttribute), true); - - if (tableAtt.Length > 0) - { - var tna = (TableNameAttribute) tableAtt[0]; - - tableDescription.Database = tna.Database; - tableDescription.Owner = tna.Owner; - tableDescription.TableName = tna.Name; - } - - return tableDescription; - } + #endregion } } \ No newline at end of file diff --git a/Extensions/JointureAddOn/Mapping/FullObjectMapper.cs b/Extensions/JointureAddOn/Mapping/FullObjectMapper.cs index 8f1c97774..53d1eebf2 100644 --- a/Extensions/JointureAddOn/Mapping/FullObjectMapper.cs +++ b/Extensions/JointureAddOn/Mapping/FullObjectMapper.cs @@ -1,57 +1,58 @@ -using System; +#region + +using System; +using System.Collections; using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using BLToolkit.Data; +using BLToolkit.DataAccess; using BLToolkit.Emit; +using BLToolkit.Reflection; +using BLToolkit.Reflection.Extension; + +#endregion namespace BLToolkit.Mapping { - public interface IMapper + public class FullObjectMapper : ObjectMapper, IObjectMapper { - int DataReaderIndex { get; set; } - SetHandler Setter { get; set; } - Type PropertyType { get; set; } - string PropertyName { get; set; } - } + #region Fields - public class OwnerDescription - { - public string Database { get; set; } - public string Owner { get; set; } - } + private static readonly object SetterHandlersLock = new object(); - public class TableDescription : OwnerDescription - { - public string TableName { get; set; } - } + private static readonly Dictionary> SettersHandlers = + new Dictionary>(); - public class ValueMapper : TableDescription, IMapper - { - public string ColumnName { get; set; } + private static readonly Dictionary> GettersHandlers = + new Dictionary>(); - #region IMapper Members - - public int DataReaderIndex { get; set; } - public SetHandler Setter { get; set; } - public Type PropertyType { get; set; } - public string PropertyName { get; set; } + private readonly DbManager _db; + private readonly FactoryType _factoryType; + private readonly bool _ignoreLazyLoad; #endregion - } - public class CollectionFullObjectMapper : TableDescription, IObjectMapper - { - public CollectionFullObjectMapper() + public FullObjectMapper(DbManager db, bool ignoreLazyLoading, FactoryType factoryType) { + _db = db; + _ignoreLazyLoad = ignoreLazyLoading; + _factoryType = factoryType; + PropertiesMapping = new List(); + PrimaryKeyValueGetters = new List(); + PrimaryKeyNames = new List(); } #region IPropertiesMapping Members public List PropertiesMapping { get; private set; } - public IPropertiesMapping ParentMapping { get; set;} + public IPropertiesMapping ParentMapping { get; set; } #endregion - public Type PropertyCollectionType { get; set; } + public bool IsNullable { get; set; } + public bool ColParent { get; set; } #region IMapper Members @@ -59,6 +60,7 @@ public CollectionFullObjectMapper() public SetHandler Setter { get; set; } public Type PropertyType { get; set; } public string PropertyName { get; set; } + public Association Association { get; set; } #endregion @@ -68,70 +70,284 @@ public CollectionFullObjectMapper() public bool ContainsLazyChild { get; set; } public GetHandler Getter { get; set; } + public List PrimaryKeyNames { get; set; } + #endregion #region ILazyMapper public GetHandler ParentKeyGetter { get; set; } + public List PrimaryKeyValueGetters { get; set; } #endregion - } - public interface ILazyMapper - { - GetHandler ParentKeyGetter { get; set; } - } + #region Overrides - public interface IObjectMapper : IPropertiesMapping, IMapper, ILazyMapper - { - bool IsLazy { get; set; } - bool ContainsLazyChild { get; set; } - GetHandler Getter { get; set; } - } + public override void Init(MappingSchema mappingSchema, Type type) + { + PropertyType = type; - public interface IPropertiesMapping - { - List PropertiesMapping { get; } - IPropertiesMapping ParentMapping { get; set; } - } + // TODO implement this method + base.Init(mappingSchema, type); - public class FullObjectMapper : ObjectMapper, IObjectMapper - { - public FullObjectMapper() - { - PropertiesMapping = new List(); + int startIndex = 0; + GetObjectMapper(this, ref startIndex, _typeAccessor); } - #region IPropertiesMapping Members + public override object CreateInstance() + { + object result = ContainsLazyChild + ? (_factoryType == FactoryType.LazyLoading + ? TypeFactory.LazyLoading.Create(PropertyType, this, LoadLazy) + : TypeFactory.LazyLoadingWithDataBinding.Create(PropertyType, this, LoadLazy)) + : FunctionFactory.Remote.CreateInstance(PropertyType); - public List PropertiesMapping { get; private set; } - public IPropertiesMapping ParentMapping { get; set; } + return result; + } - #endregion + public override object CreateInstance(InitContext context) + { + return CreateInstance(); + } - public bool IsNullable { get; set; } - public bool ColParent { get; set; } + #endregion - #region IMapper Members + #region Private methods - public int DataReaderIndex { get; set; } - public SetHandler Setter { get; set; } - public Type PropertyType { get; set; } - public string PropertyName { get; set; } + private TableDescription GetTableDescription(Type type) + { + var tableDescription = new TableDescription(); + object[] tableAtt = type.GetCustomAttributes(typeof (TableNameAttribute), true); - #endregion + if (tableAtt.Length > 0) + { + var tna = (TableNameAttribute) tableAtt[0]; - #region IObjectMapper + tableDescription.Database = tna.Database; + tableDescription.Owner = tna.Owner; + tableDescription.TableName = tna.Name; + } - public bool IsLazy { get; set; } - public bool ContainsLazyChild { get; set; } - public GetHandler Getter { get; set; } + return tableDescription; + } - #endregion + private IMapper GetObjectMapper(IObjectMapper mapper, ref int startIndex, TypeAccessor akTypeAccessor) + { + //Todo: Remove this Call! + _extension = TypeExtension.GetTypeExtension(mapper.PropertyType /*_typeAccessor.OriginalType*/, MappingSchema.Extensions); + + Type mapperType = mapper.PropertyType; + var objectMappers = new List(); + + TableDescription tableDescription = GetTableDescription(mapperType); + + lock (SetterHandlersLock) + { + if (!SettersHandlers.ContainsKey(mapperType)) + SettersHandlers.Add(mapperType, new Dictionary()); + + if (!GettersHandlers.ContainsKey(mapperType)) + GettersHandlers.Add(mapperType, new Dictionary()); + } + + PropertyInfo[] properties = mapperType.GetProperties(); + + MemberAccessor primaryKeyMemberAccessor = null; + foreach (MemberAccessor ma in akTypeAccessor) + { + // Setters + lock (SetterHandlersLock) + { + if (!SettersHandlers[mapper.PropertyType].ContainsKey(ma.Name)) + { + SettersHandlers[mapper.PropertyType].Add(ma.Name, ma.SetValue); + } + } + + if (GetPrimaryKey(ma) != null) + { + primaryKeyMemberAccessor = ma; + + lock (SetterHandlersLock) + { + if (!GettersHandlers[mapperType].ContainsKey(ma.Name)) + { + GettersHandlers[mapperType].Add(ma.Name, ma.GetValue); + } + } + mapper.PrimaryKeyValueGetters.Add(GettersHandlers[mapperType][ma.Name]); + mapper.PrimaryKeyNames.Add(ma.Name); + + if (mapper.Association != null && (mapper.Association.OtherKey == null || mapper.Association.OtherKey.Length == 0)) + { + mapper.Association.OtherKey = new[] {ma.Name}; + } + } + } + if (primaryKeyMemberAccessor == null) + throw new Exception("PrimaryKey attribute not found on type: " + mapperType); + + foreach (PropertyInfo prop in properties) + { + var ma = akTypeAccessor.First(x => x.Name == prop.Name); + + // Check if the accessor is an association + var association = GetAssociation(ma); + if (association != null) + { + // Getters for IObjectMapper + lock (SetterHandlersLock) + if (!GettersHandlers[mapperType].ContainsKey(prop.Name)) + { + GettersHandlers[mapperType].Add(prop.Name, ma.GetValue); + } + + bool isCollection = prop.PropertyType.GetInterfaces().ToList().Contains(typeof (IList)); + IObjectMapper propertiesMapping; + if (!isCollection) + { + // TODO Generate this instance using the CreateObjectMapperInstance method of fullMappingSchema + // _db.MappingSchema.CreateObjectMapperInstance(prop.PropertyType) + + propertiesMapping = new FullObjectMapper(_db, _ignoreLazyLoad, _factoryType) + { + PropertyType = prop.PropertyType, + IsNullable = association.CanBeNull, + Getter = GettersHandlers[mapperType][prop.Name], + }; + } + else + { + Type listElementType = GetGenericType(prop.PropertyType); + TableDescription colElementTableDescription = GetTableDescription(listElementType); + + // TODO Generate this instance using the CreateObjectMapperInstance method of fullMappingSchema + propertiesMapping = new CollectionFullObjectMapper(_db, _factoryType) + { + PropertyType = listElementType, + Getter = GettersHandlers[mapperType][prop.Name], + TableName = colElementTableDescription.TableName, + PropertyCollectionType = prop.PropertyType, + }; + + if (mapper is FullObjectMapper) + ((FullObjectMapper) mapper).ColParent = true; + } + + if (association.ThisKey == null || association.ThisKey.Length == 0) + association.ThisKey = new[] {primaryKeyMemberAccessor.Name}; + + bool isLazy = false; + if (!_ignoreLazyLoad) + { + var lazy = GetLazyInstance(ma); // prop.GetCustomAttributes(typeof(LazyInstanceAttribute), true); + if (lazy) + { + isLazy = true; + mapper.ContainsLazyChild = true; + + // Getters + lock (SetterHandlersLock) + if (!GettersHandlers[mapperType].ContainsKey(primaryKeyMemberAccessor.Name)) + { + GettersHandlers[mapperType].Add(primaryKeyMemberAccessor.Name, primaryKeyMemberAccessor.GetValue); + } + } + } + + propertiesMapping.Association = association; + propertiesMapping.PropertyName = prop.Name; + propertiesMapping.IsLazy = isLazy; + propertiesMapping.Setter = SettersHandlers[mapperType][prop.Name]; + + if (propertiesMapping.IsLazy) + { + propertiesMapping.ParentKeyGetter = GettersHandlers[mapperType][primaryKeyMemberAccessor.Name]; + } + objectMappers.Add(propertiesMapping); + } + else + { + var mapIgnore = GetMapIgnore(ma); + if (mapIgnore) + continue; + + var mapField = GetMapField(ma); + string columnName = mapField != null ? mapField.MapName : prop.Name; + + var map = new ValueMapper + { + PropertyName = prop.Name, + PropertyType = prop.PropertyType, + DataReaderIndex = startIndex, + Setter = SettersHandlers[mapperType][prop.Name], + TableName = tableDescription.TableName, + ColumnName = columnName, + }; + + var mapColumnName = map.GetColumnName(columnName); + map.ColumnAlias = columnName == mapColumnName ? null : mapColumnName; + + mapper.PropertiesMapping.Add(map); + + var pkField = GetPrimaryKey(ma); + if (pkField != null) + mapper.DataReaderIndex = startIndex; + + startIndex++; + } + } + + foreach (IObjectMapper objMap in objectMappers) + { + #region Check mapping recursion + + IObjectMapper cel = mapper; + while (cel != null) + { + if (mapper.PropertyType == objMap.PropertyType) + continue; + + cel = (IObjectMapper) cel.ParentMapping; + } + + #endregion + + objMap.ParentMapping = mapper; + mapper.PropertiesMapping.Add(GetObjectMapper(objMap, ref startIndex, MappingSchema.GetObjectMapper(objMap.PropertyType).TypeAccessor)); + } + + return mapper; + } - #region ILazyMapper + protected object LoadLazy(IMapper mapper, object proxy, Type parentType) + { + var lazyMapper = (ILazyMapper) mapper; + object key = lazyMapper.ParentKeyGetter(proxy); + + var fullSqlQuery = new FullSqlQuery(_db, ignoreLazyLoad: true); + object parentLoadFull = fullSqlQuery.SelectByKey(parentType, key); + if (parentLoadFull == null) + { + object value = Activator.CreateInstance(mapper is CollectionFullObjectMapper + ? (mapper as CollectionFullObjectMapper).PropertyCollectionType + : mapper.PropertyType); + return value; + } + + var objectMapper = (IObjectMapper) mapper; + return objectMapper.Getter(parentLoadFull); + } - public GetHandler ParentKeyGetter { get; set; } + private static Type GetGenericType(Type t) + { + if (t.IsGenericType) + { + Type[] at = t.GetGenericArguments(); + return at.FirstOrDefault(); + } + return null; + } #endregion } diff --git a/Extensions/JointureAddOn/Mapping/ILazyMapper.cs b/Extensions/JointureAddOn/Mapping/ILazyMapper.cs new file mode 100644 index 000000000..25bc73483 --- /dev/null +++ b/Extensions/JointureAddOn/Mapping/ILazyMapper.cs @@ -0,0 +1,9 @@ +using BLToolkit.Emit; + +namespace BLToolkit.Mapping +{ + public interface ILazyMapper + { + GetHandler ParentKeyGetter { get; set; } + } +} \ No newline at end of file diff --git a/Extensions/JointureAddOn/Mapping/IMapper.cs b/Extensions/JointureAddOn/Mapping/IMapper.cs new file mode 100644 index 000000000..41386d5b4 --- /dev/null +++ b/Extensions/JointureAddOn/Mapping/IMapper.cs @@ -0,0 +1,13 @@ +using System; +using BLToolkit.Emit; + +namespace BLToolkit.Mapping +{ + public interface IMapper + { + int DataReaderIndex { get; set; } + SetHandler Setter { get; set; } + Type PropertyType { get; set; } + string PropertyName { get; set; } + } +} \ No newline at end of file diff --git a/Extensions/JointureAddOn/Mapping/IObjectMapper.cs b/Extensions/JointureAddOn/Mapping/IObjectMapper.cs new file mode 100644 index 000000000..0d781e87b --- /dev/null +++ b/Extensions/JointureAddOn/Mapping/IObjectMapper.cs @@ -0,0 +1,23 @@ + +using System.Collections.Generic; +using BLToolkit.Emit; + +namespace BLToolkit.Mapping +{ + public interface IObjectMapper : IPropertiesMapping, IMapper, ILazyMapper + { + bool IsLazy { get; set; } + + bool ContainsLazyChild { get; set; } + + List PrimaryKeyNames { get; set; } + + /// + /// Is set only for CollectionFullObjectMapper. TODO : Should refactor this? + /// + GetHandler Getter { get; set; } + + List PrimaryKeyValueGetters { get; set; } + Association Association { get; set; } + } +} \ No newline at end of file diff --git a/Extensions/JointureAddOn/Mapping/IPropertiesMapping.cs b/Extensions/JointureAddOn/Mapping/IPropertiesMapping.cs new file mode 100644 index 000000000..709e17800 --- /dev/null +++ b/Extensions/JointureAddOn/Mapping/IPropertiesMapping.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; + +namespace BLToolkit.Mapping +{ + public interface IPropertiesMapping + { + List PropertiesMapping { get; } + IPropertiesMapping ParentMapping { get; set; } + } +} \ No newline at end of file diff --git a/Extensions/JointureAddOn/Mapping/LazyValueLoadInterceptor.cs b/Extensions/JointureAddOn/Mapping/LazyValueLoadInterceptor.cs index 6ce8673cc..024884851 100644 --- a/Extensions/JointureAddOn/Mapping/LazyValueLoadInterceptor.cs +++ b/Extensions/JointureAddOn/Mapping/LazyValueLoadInterceptor.cs @@ -1,5 +1,4 @@ using System; -using BLToolkit.Aspects; using Castle.DynamicProxy; using IInterceptor = Castle.DynamicProxy.IInterceptor; @@ -7,8 +6,13 @@ namespace BLToolkit.Mapping { public class LazyValueLoadInterceptor : IInterceptor { + #region Fields + private readonly IObjectMapper _mapper; private readonly Func _lazyLoader; + private bool _intercepted; + + #endregion public LazyValueLoadInterceptor(IObjectMapper mapper, Func lazyLoader) { @@ -16,25 +20,19 @@ public LazyValueLoadInterceptor(IObjectMapper mapper, Func lazyLoader) + { + return ProxyGenerator.CreateClassProxy(type, new LazyValueLoadInterceptor(mapper, lazyLoader)); + } + } + + public static class LazyLoadingWithDataBinding + { + public static object Create(Type type, IObjectMapper mapper, Func lazyLoader) + { + return ProxyGenerator.CreateClassProxy(type, new[] + { + typeof (INotifyPropertyChanged), + typeof (DataBindingFactory.IMarkerInterface) + }, new LazyValueLoadInterceptor(mapper, lazyLoader), new NotifyPropertyChangedInterceptor(type.FullName)); + } + } + + public static class DataBindingFactory + { + public static object Create(Type type) + { + return ProxyGenerator.CreateClassProxy(type, new[] + { + typeof (INotifyPropertyChanged), + typeof (IMarkerInterface) + }, new NotifyPropertyChangedInterceptor(type.FullName)); + } + + public interface IMarkerInterface + { + string TypeName { get; } + } + } + } +} \ No newline at end of file diff --git a/Extensions/JointureAddOn/Mapping/ValueMapper.cs b/Extensions/JointureAddOn/Mapping/ValueMapper.cs new file mode 100644 index 000000000..46ebaf3ba --- /dev/null +++ b/Extensions/JointureAddOn/Mapping/ValueMapper.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using BLToolkit.Emit; + +namespace BLToolkit.Mapping +{ + public class ValueMapper : TableDescription, IMapper + { + private readonly Dictionary> _columnVariations = new Dictionary>(); + private readonly Dictionary _columnOccurences = new Dictionary(); + + public string ColumnAlias { get; set; } + public string ColumnName { get; set; } + + #region IMapper Members + + public int DataReaderIndex { get; set; } + public SetHandler Setter { get; set; } + public Type PropertyType { get; set; } + public string PropertyName { get; set; } + + #endregion + + public string GetColumnName(string columnName) + { + int occurenceCount; + if (_columnOccurences.ContainsKey(columnName)) + { + occurenceCount = _columnOccurences[columnName] + 1; + _columnOccurences[columnName] = occurenceCount; + } + else + { + _columnOccurences[columnName] = 1; + occurenceCount = 1; + } + + string res = columnName + (occurenceCount > 1 ? string.Format("_{0}", occurenceCount - 1) : ""); + + var variations = new List(); + if (_columnVariations.ContainsKey(columnName)) + { + variations = _columnVariations[columnName]; + } + + variations.Add(res); + _columnVariations[columnName] = variations; + + return res; + } + + public bool SetDataReaderIndex(List schemaColumns) + { + string colName = ColumnName; + int index = -1; + if (!schemaColumns.Contains(colName)) + { + bool found = false; + int order = 1; + foreach (string key in _columnVariations.Keys) + { + List variations = _columnVariations[key]; + if (variations.Contains(colName)) + { + if (colName.Contains(key + "_")) + { + string orderString = colName.Replace(key + "_", ""); + order = int.Parse(orderString) + 1; + colName = key; + found = true; + break; + } + } + } + if (found) + { + int i = 0, occurenceCnt = 0; + foreach (string column in schemaColumns) + { + if (column == colName) + { + occurenceCnt++; + if (occurenceCnt == order) + { + index = i; + break; + } + } + i++; + } + } + else + { + // TODO Check this condition... + //if (!_ignoreMissingColumns) + //{ + // throw new Exception(string.Format("Couldnt find db column {0} in the query result", colName)); + //} + return true; + } + } + else + index = schemaColumns.IndexOf(colName); + + DataReaderIndex = index; + return false; + } + } +} \ No newline at end of file diff --git a/Extensions/JointureAddOn/Properties/AssemblyInfo.cs b/Extensions/JointureAddOn/Properties/AssemblyInfo.cs index cf3ce759a..ccf9afe61 100644 --- a/Extensions/JointureAddOn/Properties/AssemblyInfo.cs +++ b/Extensions/JointureAddOn/Properties/AssemblyInfo.cs @@ -1,17 +1,14 @@ using System.Reflection; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using BLToolkit; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("BLToolkit.4.JointureAddOn")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Microsoft")] -[assembly: AssemblyProduct("BLToolkit.4.JointureAddOn")] -[assembly: AssemblyCopyright("Copyright © Microsoft 2012")] -[assembly: AssemblyTrademark("")] +[assembly: AssemblyTitle(BLToolkitConstants.ProductName + " JointureAddOn")] +[assembly: AssemblyDescription(BLToolkitConstants.ProductDescription + " JointureAddOn")] +[assembly: AssemblyProduct(BLToolkitConstants.ProductName + " JointureAddOn")] +[assembly: AssemblyCopyright(BLToolkitConstants.Copyright)] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible @@ -32,5 +29,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion(BLToolkitConstants.FullVersionString)] +[assembly: AssemblyFileVersion(BLToolkitConstants.FullVersionString)] diff --git a/Extensions/JointureAddOn/Reflection/FullInitContext.cs b/Extensions/JointureAddOn/Reflection/FullInitContext.cs deleted file mode 100644 index 7de393862..000000000 --- a/Extensions/JointureAddOn/Reflection/FullInitContext.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; - -using BLToolkit.Mapping; - -namespace BLToolkit.Reflection -{ - public class FullInitContext - { - public object[] MemberParameters { get; set; } - public object[] Parameters { get; set; } - public bool IsInternal { get; set; } - public bool IsLazyInstance { get; set; } - public object Parent { get; set; } - public object SourceObject { get; set; } - public FullObjectMapper ObjectMapper { get; set; } - public MappingSchema MappingSchema { get; set; } - public bool IsSource { get; set; } - public bool StopMapping { get; set; } - public IMapDataSource DataSource { get; set; } - - private Dictionary _items; - public Dictionary Items - { - [DebuggerStepThrough] - get { return _items ?? (_items = new Dictionary()); } - } - - public bool IsDestination - { - [DebuggerStepThrough] - get { return !IsSource; } - [DebuggerStepThrough] - set { IsSource = !value; } - } - } -} diff --git a/Extensions/JointureAddOn/packages.config b/Extensions/JointureAddOn/packages.config new file mode 100644 index 000000000..47ad4bd25 --- /dev/null +++ b/Extensions/JointureAddOn/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/HowTo/HowTo.csproj b/HowTo/HowTo.csproj index c78fdc6ee..037fb7288 100644 --- a/HowTo/HowTo.csproj +++ b/HowTo/HowTo.csproj @@ -84,9 +84,9 @@ ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules - + False - ..\packages\NUnit.2.6.2\lib\nunit.framework.dll + ..\packages\NUnit.2.6.3\lib\nunit.framework.dll diff --git a/HowTo/Mapping/FluentMapping.cs b/HowTo/Mapping/FluentMapping.cs new file mode 100644 index 000000000..19a63867e --- /dev/null +++ b/HowTo/Mapping/FluentMapping.cs @@ -0,0 +1,38 @@ +using System; + +using BLToolkit.Mapping; +using BLToolkit.Mapping.Fluent; +using BLToolkit.Mapping.MemberMappers; + +namespace HowTo.Mapping +{ + public class Category + { + public int CategoryID; + public string CategoryName; + public string Description; + public Binary Picture; + public TimeSpan RefreshTime; + public AdditionalInfo AdditionalInfo; + public List Products; + } + + public class CategoryMap : FluentMap + { + public CategoryMap() + { + TableName("Categories"); + PrimaryKey(_ => _.CategoryID).Identity(); + Nullable(_ => _.Description); + Nullable(_ => _.Picture); + MapField(_ => _.RefreshTime).MemberMapper(typeof(TimeSpanBigIntMapper)).DbType(System.Data.DbType.Int64); + MapField(_ => _.AdditionalInfo).MapIgnore(false).MemberMapper(typeof(BinarySerialisationMapper)).DbType(System.Data.DbType.Byte); + Association(_ => _.Products,_ => _.CategoryID).ToMany((Product _) => _.CategoryID); + } + } + + public static void Main() + { + FluentConfig.Configure(Map.DefaultSchema).MapingFromAssemblyOf(); + } +} \ No newline at end of file diff --git a/HowTo/app.config b/HowTo/app.config index 6f99ef5ed..1b409e3bc 100644 --- a/HowTo/app.config +++ b/HowTo/app.config @@ -30,4 +30,7 @@ value = "Oracle"/> --> - + + + + diff --git a/HowTo/packages.config b/HowTo/packages.config index 617647af2..5a3253fcb 100644 --- a/HowTo/packages.config +++ b/HowTo/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/NuGet/BLToolkit.DB2.nuspec b/NuGet/BLToolkit.DB2.nuspec index 98028ee6c..68755db50 100644 --- a/NuGet/BLToolkit.DB2.nuspec +++ b/NuGet/BLToolkit.DB2.nuspec @@ -2,7 +2,7 @@ BLToolkit.DB2 - 4.1.16 + 4.1.21 BLToolkit DB2 Data Provider Igor Tkachev @@ -17,7 +17,7 @@ - - + + \ No newline at end of file diff --git a/NuGet/BLToolkit.DevartOraclePro.nuspec b/NuGet/BLToolkit.DevartOraclePro.nuspec new file mode 100644 index 000000000..7c41459e3 --- /dev/null +++ b/NuGet/BLToolkit.DevartOraclePro.nuspec @@ -0,0 +1,23 @@ + + + + BLToolkit.Oracle + 4.1.21 + BLToolkit dotConnect for Oracle Pro Data Provider + Igor Tkachev + + http://bltoolkit.net/License.ashx + http://bltoolkit.net/ + false + Business Logic Toolkit dotConnect for Oracle Pro Data Provider for .NET + + Devart dotConnect Oracle bltoolkit Linq ORM DAL database DB + + + + + + + + + \ No newline at end of file diff --git a/NuGet/BLToolkit.Firebird.nuspec b/NuGet/BLToolkit.Firebird.nuspec index 4c861a6f2..1f6a8b17b 100644 --- a/NuGet/BLToolkit.Firebird.nuspec +++ b/NuGet/BLToolkit.Firebird.nuspec @@ -2,7 +2,7 @@ BLToolkit.Firebird - 4.1.16 + 4.1.21 BLToolkit Firebird Data Provider Igor Tkachev @@ -18,7 +18,7 @@ - - + + \ No newline at end of file diff --git a/NuGet/BLToolkit.Informix.nuspec b/NuGet/BLToolkit.Informix.nuspec index 452c06548..af34a3b63 100644 --- a/NuGet/BLToolkit.Informix.nuspec +++ b/NuGet/BLToolkit.Informix.nuspec @@ -2,7 +2,7 @@ BLToolkit.Informix - 4.1.16 + 4.1.21 BLToolkit Informix Data Provider Igor Tkachev @@ -17,7 +17,7 @@ - - + + \ No newline at end of file diff --git a/NuGet/BLToolkit.MySql.nuspec b/NuGet/BLToolkit.MySql.nuspec index 629b6b1dc..546aeafe8 100644 --- a/NuGet/BLToolkit.MySql.nuspec +++ b/NuGet/BLToolkit.MySql.nuspec @@ -2,7 +2,7 @@ BLToolkit.MySql - 4.1.16 + 4.1.21 BLToolkit MySql Data Provider Igor Tkachev @@ -18,7 +18,7 @@ - - + + \ No newline at end of file diff --git a/NuGet/BLToolkit.Oracle.nuspec b/NuGet/BLToolkit.Oracle.nuspec index 16dce0207..d39525d57 100644 --- a/NuGet/BLToolkit.Oracle.nuspec +++ b/NuGet/BLToolkit.Oracle.nuspec @@ -2,7 +2,7 @@ BLToolkit.Oracle - 4.1.16 + 4.1.21 BLToolkit Oracle Data Provider Igor Tkachev @@ -17,7 +17,7 @@ - - + + \ No newline at end of file diff --git a/NuGet/BLToolkit.PostgreSql.nuspec b/NuGet/BLToolkit.PostgreSql.nuspec index 68fd44e67..a75f28126 100644 --- a/NuGet/BLToolkit.PostgreSql.nuspec +++ b/NuGet/BLToolkit.PostgreSql.nuspec @@ -2,7 +2,7 @@ BLToolkit.PostgreSql - 4.1.16 + 4.1.21 BLToolkit PostgreSql Data Provider Igor Tkachev @@ -18,7 +18,7 @@ - - + + \ No newline at end of file diff --git a/NuGet/BLToolkit.SQLite.nuspec b/NuGet/BLToolkit.SQLite.nuspec index 3998ad76f..179a5fdd4 100644 --- a/NuGet/BLToolkit.SQLite.nuspec +++ b/NuGet/BLToolkit.SQLite.nuspec @@ -2,7 +2,7 @@ BLToolkit.SQLite - 4.1.16 + 4.1.21 BLToolkit SQLite Data Provider Igor Tkachev @@ -18,7 +18,7 @@ - - + + \ No newline at end of file diff --git a/NuGet/BLToolkit.SqlCe.nuspec b/NuGet/BLToolkit.SqlCe.nuspec index 2ba79cfb6..d9fd31df0 100644 --- a/NuGet/BLToolkit.SqlCe.nuspec +++ b/NuGet/BLToolkit.SqlCe.nuspec @@ -2,7 +2,7 @@ BLToolkit.SqlCe - 4.1.16 + 4.1.21 BLToolkit SqlCe Data Provider Igor Tkachev @@ -17,7 +17,7 @@ - - + + \ No newline at end of file diff --git a/NuGet/BLToolkit.Sybase.nuspec b/NuGet/BLToolkit.Sybase.nuspec index 3d6fa64e3..2c3263810 100644 --- a/NuGet/BLToolkit.Sybase.nuspec +++ b/NuGet/BLToolkit.Sybase.nuspec @@ -2,7 +2,7 @@ BLToolkit.Sybase - 4.1.16 + 4.1.21 BLToolkit Sybase Data Provider Igor Tkachev @@ -17,7 +17,7 @@ - - + + \ No newline at end of file diff --git a/NuGet/BLToolkit.nuspec b/NuGet/BLToolkit.nuspec index 2ff638217..1a542e30a 100644 --- a/NuGet/BLToolkit.nuspec +++ b/NuGet/BLToolkit.nuspec @@ -2,7 +2,7 @@ BLToolkit - 4.1.16 + 4.1.21 Business Logic Toolkit for .NET Igor Tkachev diff --git a/NuGet/BLToolkit.symbols.nuspec b/NuGet/BLToolkit.symbols.nuspec index a7602abbe..14ce42084 100644 --- a/NuGet/BLToolkit.symbols.nuspec +++ b/NuGet/BLToolkit.symbols.nuspec @@ -2,7 +2,7 @@ BLToolkit - 4.1.16 + 4.1.21 Business Logic Toolkit for .NET Igor Tkachev diff --git a/Redist/Castle/Castle.Core.dll b/Redist/Castle/Castle.Core.dll deleted file mode 100644 index 2c8811072..000000000 Binary files a/Redist/Castle/Castle.Core.dll and /dev/null differ diff --git a/Redist/Castle/Castle.Windsor.XML b/Redist/Castle/Castle.Windsor.XML deleted file mode 100644 index f6bc29dc1..000000000 --- a/Redist/Castle/Castle.Windsor.XML +++ /dev/null @@ -1,7741 +0,0 @@ - - - - Castle.Windsor - - - - - Attempts to dynamically load a UserControl by invoking Page.LoadControl. - There are two uses of this class. - - 1) Add a component to the Kernel and add a VirtualPath attribute specifying - the relative path of the .ascx file for the associated UserControl. (easy) - - - - <component id="BasketView" - service="Castle.ShoppingCart.IBasketView, Castle.ShoppingCart" - type="Castle.ShoppingCart.BasketView, Castle.ShoppingCart" - lifestyle="transient" - virtualPath="~/Views/BasketView.ascx" - /> - - - - 2) Precompile a UserControl and add the pre-compiled class to the Kernel. (hard) - Has not been tested with proxies. - - - - - - Standard implementation of . - Handles the selection of the best constructor, fills the - writable properties the component exposes, run the commission - and decommission lifecycles, etc. - - - Custom implementors can just override the CreateInstance method. - Please note however that the activator is responsible for the proxy creation - when needed. - - - - - Abstract implementation of . - The implementors must only override the InternalCreate and - InternalDestroy methods in order to perform their creation and - destruction logic. - - - - - Implements the instance creation logic. The default - implementation should rely on an ordinary call to - Activator.CreateInstance(). - - - This interface is provided in order to allow custom components - to be created using a different logic, such as using a specific factory - or builder. - - The constructor for implementation has the following signature: - - - ComponentModel model, IKernel kernel, - ComponentInstanceDelegate onCreation, - ComponentInstanceDelegate onDestruction - - - The Activator should raise the events onCreation and onDestruction - in order to correctly implement the contract. Usually the best - way of creating a custom activator is by extending the existing ones. - - - - - - - - Should return a new component instance. - - - - - - Should perform all necessary work to dispose the instance - and/or any resource related to it. - - - - - - Constructs an AbstractComponentActivator - - - - - Initializes a new instance of the class. - - - - - - - - - Initializes a new instance of the class. - - The model. - The kernel. - The on creation. - The on destruction. - - - - Creates the instance. - - The context. - The arguments. - The signature. - - - - - Implements a Lifestyle Manager for Web Apps that - create at most one object per web request. - - - - - Summary description for AbstractLifestyleManager. - - - - - The ILifestyleManager implements - a strategy for a given lifestyle, like singleton, per-thread - and transient. - - - The responsibility of ILifestyleManager - is only the management of lifestyle. It should rely on - to obtain a new component instance - - - - - Initializes the ILifestyleManager with the - - - - - - - - - Implementors should return the component instance based - on the lifestyle semantic. - - - - - - Implementors should release the component instance based - on the lifestyle semantic, for example, singleton components - should not be released on a call for release, instead they should - release them when disposed is invoked. - - - - - - This attribute is useful only when you want to register all components - on an assembly as a batch process. - By doing so, the batch register will look - for this attribute to distinguish components from other classes. - - - - - Base for Attributes that want to express lifestyle - chosen by the component. - - - - - Initializes a new instance of the class. - - The type. - - - - Gets or sets the lifestyle. - - The lifestyle. - - - - Associates a custom component with a component - - - - - Initializes a new instance of the class. - - Type of the component activator. - - - - Gets the type of the component activator. - - The type of the component activator. - - - - Specifies the proxying behavior for a component. - - - - - Gets or sets a value indicating whether the generated - interface proxy should inherit from . - - - - - Determines if the component requires a single interface proxy. - - true if the component requires a single interface proxy. - - - - Gets or sets the additional interfaces used during proxy generation. - - - - - Marks as property to be skipped and not be wired - by the IoC container - - - - - Represents a concern that will be applied to a component instance - during commission or decommission phase. - - - - - Implementors should act on the instance in response to - a decommission or commission phase. - - The model. - The component. - - - - Lifecycle interface. If implemented by a component, - the method Initialized will be invoked by the container - before making the component available to the external world. - - - - - Implementors should perform any initialization logic. - - - - - Used to declare that a component wants interceptors acting on it. - - - - - Constructs the InterceptorAttribute pointing to - a key to a interceptor - - - - - - Constructs the InterceptorAttribute pointing to - a service - - - - - - Marker class used to denote components that have late bound type - That is the actual type is not known exactly at the time when - is created. Those are for example components instantiated via abstract factory. - - - - - If the extended type is a Foo[] or IEnumerable{Foo} which is assignable from Foo[] this method will return typeof(Foo) - otherwise null. - - - - - - - Indicates that the target components wants a - singleton lifestyle. - - - - - Initializes a new instance of the class. - - - - - Indicates that the target components wants a - transient lifestyle. - - - - - Initializes a new instance of the class. - - - - - Indicates that the target components wants a - per thread lifestyle. - - - - - Initializes a new instance of the class. - - - - - Indicates that the target components wants a - per web request lifestyle. - - - - - Indicates that the target components wants a - pooled lifestyle. - - - - - Initializes a new instance of the class - using the default initial pool size (5) and the max pool size (15). - - - - - Initializes a new instance of the class. - - Initial size of the pool. - Max pool size. - - - - Gets the initial size of the pool. - - The initial size of the pool. - - - - Gets the maximum pool size. - - The size of the max pool. - - - - Indicates that the target components wants a - custom lifestyle. - - - - - Initializes a new instance of the class. - - The lifestyle handler. - - - - Gets the type of the lifestyle handler. - - The type of the lifestyle handler. - - - - Enumeration used to mark the component's lifestyle. - - - - - No lifestyle specified. - - - - - Singleton components are instantiated once, and shared - between all clients. - - - - - Thread components have a unique instance per thread. - - - - - Transient components are created on demand. - - - - - Optimization of transient components that keeps - instance in a pool instead of always creating them. - - - - - PerWebRequest components are created once per Http Request - - - - - Any other logic to create/release components. - - - - - Collects information about subscribers for given event - - - - - Extracts MethodInfo of metho invoked in delegate. Based on ILReader class from http://www.gocosmos.org project - - - - - Implementors must inspect the component for - a given information or parameter. - - - - - Usually the implementation will look in the configuration property - of the model or the service interface, or the implementation looking for - something. - - The kernel instance - The component model - - - - Selects one or both of component name and type, for given method - called on given typed factory type. - When component should be requested by type only, - componentName should be null. - When component should be requested by name only, - componentType should be null. - - - - - - - - - Builds for given call. - By default if is a collection - returns for the collection's item type, - otherwise standard . - - - - - - - - - - Selects arguments to be passed to resolution pipeline. - By default passes all given - keyed by names of their corresponding parameters. - - - - - - - - Selects name of the component to resolve. - If Name is GetFoo returns "Foo", otherwise null. - - - - - - - - Selects type of the component to resolve. Uses return type. - - - - - - - - Provides lazy registration capabilities to the container. - - - When a component is requested from a container and it was not registered, - container loads up all registered implementers of this interface and asks - them in turn whether they can provide that component, until it finds one that will. - - - - - Used by container to allow the loader to register component for given and to the container at the time when it is requested - - Key of the requested component or null - Type of requested service or null - User supplied arguments or null - Registration that registers component for given key and/or service or null. - - While either key or service can be null reference it is guaranteed that at least one of them will not be null. - When implementer opts in to provide the requested component (by returning not-null registration) it is required - to register component for requested key/service combination (when one of the elements is null, it should be ignored as well). - When implementer does not want to register the requested component it must return null. - - - - - Summary description for ComponentActivatorException. - - - - - - - - - - Represents collection of arguments used when resolving a component. - - - - - Exception thrown when component has no resolvable constructor that can be used to create an instance. - - - - - Default arguments store used to store items where no specialized store exists - - - - - Extends adding and - information. The MemberInfo is only useful to provide detailed information - on exceptions. - The ComponentModel is required so we can get resolve an object that takes as a parameter itself, but - with difference model. (See IoC 51 for the details) - - - - - Represents a dependency (other component or a - fixed value available through external configuration). - - - - - Initializes a new instance of the class. - - The type. - The dependency key. - Type of the target. - if set to true [is optional]. - - - - Returns a that represents the current . - - - A that represents the current . - - - - - Gets or sets the dependency key. - - The dependency key. - - - - Gets or sets the type of the dependency. - - The type of the dependency. - - - - Gets or sets whether this dependency is optional. - - - true if this dependency is optional; otherwise, false. - - - - - Gets the service type of the dependency. - This is the same type as or if is by ref, - then it's the element type of the reference. (in other words if dependency - is out IFoo foo this will be IFoo, while will be &IFoo); - - - - - Gets the type of the target. - - The type of the target. - - - - Summary description for DefaultHandler. - - - - - Implements the basis of - - - - - - Contract for the IHandler, which manages an - component state and coordinates its creation - and destruction (dispatching to activators, lifestyle managers) - - - - - Implementors should use a strategy to obtain - valid references to properties and/or services - requested in the dependency model. - - - - - Should return an instance of a service or property values as - specified by the dependency model instance. - It is also the responsibility of - to throw an exception in the case a non-optional dependency - could not be resolved. - - Creation context, which is a resolver itself - Parent resolver - normally the IHandler implementation - Model of the component that is requesting the dependency - The dependency model - The dependency resolved value or null - - - - Returns true if the resolver is able to satisfy this dependency. - - Creation context, which is a resolver itself - Parent resolver - normally the IHandler implementation - Model of the component that is requesting the dependency - The dependency model - true if the dependency can be satisfied - - - - Initializes the handler with a reference to the - kernel. - - - - - - Implementors should return a valid instance - for the component the handler is responsible. - It should throw an exception in the case the component - can't be created for some reason - - - - - - Implementors should return a valid instance - for the component the handler is responsible. - It should return null in the case the component - can't be created for some reason - - - - - - Implementors should dispose the component instance - - - true if destroyed. - - - - Dictionary of String/object used to - associate data with a component dependency. - For example, if you component SmtpServer depends on - host and port, you can add those to this - dictionary and the handler will be able to use them. - - - TODO: Document this - - - - - TODO: Document this - - - - - - TODO: Document this - - - - - - - Tests whether the handler is already being resolved in given context. - - - - - Gets the state of the handler - - - - - Gets the model of the component being - managed by this handler. - - - - - The service that this handler handles - - - - - Allow to track state changes of a handler that is modified directly. - This can happen if the client calls AddCustomDependencyValue or - RemoveCustomDependencyValue - - - - - Might be implemented by a handler - so it can expose access to dependency information - which is used to construct meaningful error messages - - - - - Returns human readable list of dependencies - this handler is waiting for. - list of the dependencies that was already checked, used to avoid cycles. - - - - - Lifestyle manager instance - - - - - Custom dependencies values associated with the handler - - - - - Dictionary of key (string) to - - - - - - Dictionary of Type to a list of - - - - - - Constructs and initializes the handler - - - - - - Should be implemented by derived classes: - disposes the component instance (or recycle it) - - - true if destroyed. - - - - Should be implemented by derived classes: - returns an instance of the component this handler - is responsible for - - - - When false, handler can not create valid instance and return null instead. - - - - - Returns human readable list of dependencies - this handler is waiting for. - - - - - - Saves the kernel instance, subscribes to - - event, - creates the lifestyle manager instance and computes - the handler state. - - - - - - disposes the component instance (or recycle it). - - - - - - - Returns an instance of the component this handler - is responsible for - - - - - - - Invoked by - - in order to check if a dependency can be satisfied. - If not, the handler is set to a 'waiting dependency' state. - - - This method registers the dependencies within the correct collection - or dictionary and changes the handler state to - - - - - - - Creates an implementation of - - based - on - - and invokes - - to initialize the newly created manager. - - - - - - - Invoked by the kernel - when one of registered dependencies were satisfied by - new components registered. - - - Handler for the event - - - - - - - Checks if the handler is able to, at very least, satisfy - the dependencies for the constructor with less parameters - - - For each non*optional dependency, the implementation will invoke - - - - - - Invoked when the container receives a parent container reference. - - - This method implementation checks whether the parent container - is able to supply the dependencies for this handler. - - - - - - - Returns an instance of the component this handler - is responsible for - - - when false, handler can not create valid instance and return null instead - - - - - Handler for the event - - - - - - - - Gets the component model. - - - - - Gets the handler state. - - - - - Initializes a new instance of the class. - - - - - - Returns an instance of the component this handler - is responsible for - - - - - - - - - disposes the component instance (or recycle it) - - - true if destroyed - - - - Used during a component request, passed along to the whole process. - This allow some data to be passed along the process, which is used - to detected cycled dependency graphs and now it's also being used - to provide arguments to components. - - - - - Holds the scoped dependencies being resolved. - If a dependency appears twice on the same scope, we'd have a cycle. - - - - - The list of handlers that are used to resolve - the component. - We track that in order to try to avoid attempts to resolve a service - with itself. - - - - - Initializes a new instance of the class. - - The type to extract generic arguments. - The parent context. - When set to true will clone . - - - - Initializes a new instance of the class. - - The handler. - The release policy. - The type to extract generic arguments. - The additional arguments. - The conversion manager. - Parent context - - - - Initializes a new instance of the class. - - - - - Method used by handlers to test whether they are being resolved in the context. - - - - - This method is provided as part of double dispatch mechanism for use by handlers. - Outside of handlers, call instead. - - - - - Creates a new, empty instance. - - - A new CreationContext should be created every time, as the contexts keeps some state related to dependency resolution. - - - - - Default implementation of . - This implementation is complete and also support a kernel - hierarchy (sub containers). - - - Default implementation of . - This implementation is complete and also support a kernel - hierarchy (sub containers). - - - - - The IKernel interface exposes all the functionality - the MicroKernel implements. - - - It allows you to register components and - request them by the key or the service they implemented. - It also allow you to register facilities and subsystem, thus - augmenting the functionality exposed by the kernel alone to fits - your needs. - - - - - - - Summary description for IKernelEvents. - - - - - Event fired when a new component is registered - on the kernel. - - - - - Event fired when a component is removed from the kernel. - - - - - Event fired after the ComponentModel is created. - Allows customizations that may affect the handler. - - - - - Event fired when the kernel was added as child of - another kernel. - - - - - Event fired when the kernel was removed from being a child - of another kernel. - - - - - Event fired before the component is created. - - - - - Event fired when a component instance destroyed. - - - - - Event fired when a new handler is registered - (it might be in a valid or waiting dependency state) - - - - - Event fired when a new handler is registered - (it might be in a valid or waiting dependency state) - - - - - Event fired when a dependency is being resolved, - it allows the dependency to be changed, - but the client ComponentModel must not be changed. - - - - - Registers the components provided by the s - with the . - - Create a new registration using .For() or . - - - - kernel.Register(Component.For<IService>().ImplementedBy<DefaultService>()); - - - The component registrations. - The kernel. - - - - Returns true if the specified component was - found and could be removed (i.e. no other component depends on it) - - The component's key - - - - - Returns true if the specified key was registered - - - - - - - Returns true if the specified service was registered - - - - - - - Associates objects with a component handler, - allowing it to use the specified dictionary - when resolving dependencies - - - - - - - Associates objects with a component handler, - allowing it to use the specified dictionary - when resolving dependencies - - - - - - - Associates objects with a component handler, - allowing it to use the specified dictionary - when resolving dependencies - - - - - - - Associates objects with a component handler, - allowing it to use the specified dictionary - when resolving dependencies - - - - - - - Releases a component instance. This allows - the kernel to execute the proper decommission - lifecycles on the component instance. - - - - - - Returns the - for the specified component key. - - - - - - - Returns the - for the specified service. - - - - - - - Return handlers for components that - implements the specified service. - - - - - - - Return handlers for components that - implements the specified service. - The check is made using IsAssignableFrom - - - - - - - Adds a to the kernel. - - - - - - - - Creates and adds an facility to the kernel. - - The facility type. - - - - - Creates and adds an facility to the kernel. - - The facility type. - - The callback for creation. - - - - Creates and adds an facility to the kernel. - - The facility type. - - The callback for creation. - - - - Creates and adds an facility to the kernel. - - The facility type. - - - - - Creates and adds an facility to the kernel. - - The facility type. - The callback for creation. - - - - - Creates and adds an facility to the kernel. - - The facility type. - The callback for creation. - - - - - Returns the facilities registered on the kernel. - - - - - - Adds (or replaces) an - - - - - - - Returns an implementation of - for the specified key. - - - - - - - - Support for kernel hierarchy - - - - - - Remove child kernel - - - - - - Register a new component resolver that can take part in the decision - making about which handler to resolve - - - - - Returns the component instance by the service type - - - - - Returns all the valid component instances by - the service type - - The service type - - - - Returns all the valid component instances by - the service type - - The service type - Arguments to resolve the services - - - - Returns all the valid component instances by - the service type - - The service type - Arguments to resolve the services - - - - Returns the component instance by the service type - using dynamic arguments - - - - - - - - Returns the component instance by the component key - using dynamic arguments - - - - - - - - Returns the component instance by the service type - using dynamic arguments - - Service to resolve - Arguments to resolve the services - - - - - Returns the component instance by the component key - using dynamic arguments - - Key to resolve - Arguments to resolve the services - - - - - Returns a component instance by the key - - - - - - - - Returns the component instance by the service type - using dynamic arguments - - - - - - - Returns the component instance by the service type - using dynamic arguments - - Arguments to resolve the services - - - - - Returns the component instance by the component key - - - - - - Returns a component instance by the key - - Component's key - Service type - The Component instance - - - - Returns a component instance by the key - - Service type - Component's key - - The Component instance - - - - Returns component instances that implement TService - - - - - - - Returns component instances that implement TService - - - - - - - Returns component instances that implement TService - - - - - - - Returns a component instance by the key - - - - - - - - - Returns the implementation of - - - - - Returns the implementation of - - - - - Gets or sets the implementation of - - - - - Gets or sets the implementation for - - - - - Returns the implementation for - - - - - Gets or sets the implementation of - allowing different strategies for proxy creation. - - - - - Returns the parent kernel - - - - - Graph of components and interactions. - - - - - Returns the component instance by the key - - - - - Returns the component instance by the service type - - - - - Extended contract of kernel, used internally. - - - - - Constructs an implementation of - for the given - - - - - - - Raise the handler registered event, required so - dependant handlers will be notified about their dependant moving - to valid state. - - - - - - Registers the to be forwarded - to the component registered with . - - The service type that gets forwarded. - The name of the component to forward to. - - - - Adds a custom made . - Used by facilities. - - - - - - List of sub containers. - - - - - List of registered. - - - - - The implementation of - - - - - The dependency resolver. - - - - - Map of subsystems registered. - - - - - The parent kernel, if exists. - - - - - Holds the implementation of - - - - - Implements a policy to control component's - disposal that the user forgot. - - - - - Constructs a DefaultKernel with no component - proxy support. - - - - - Constructs a DefaultKernel with the specified - implementation of and - - - - - - - Constructs a DefaultKernel with the specified - implementation of - - - - - Starts the process of component disposal. - - - - - Return handlers for components that - implements the specified service. - The check is made using IsAssignableFrom - - - - - - - Returns the facilities registered on the kernel. - - - - - - Return handlers for components that - implements the specified service. - - - - - - - Registers the components described by the s - with the . - The component registrations. - The kernel. - - - - - Associates objects with a component handler, - allowing it to use the specified dictionary - when resolving dependencies - - - - - - - Associates objects with a component handler, - allowing it to use the specified dictionary - when resolving dependencies - - - - - - - Associates objects with a component handler, - allowing it to use the specified dictionary - when resolving dependencies - - - - - - - Associates objects with a component handler, - allowing it to use the specified dictionary - when resolving dependencies - - - - - - - Releases a component instance. This allows - the kernel to execute the proper decommission - lifecycles on the component instance. - - - - - - Returns true if the specified component was - found and could be removed (i.e. no other component depends on it) - - The component's key - - - - - Gets the service object of the specified type. - - - A service object of type serviceType. - - An object that specifies the type of service object to get. - - - - Gets the service object of the specified type. - - - A service object of type serviceType. - - - - - Returns a component instance by the key - - - - - - - - Returns a component instance by the key - - - - - - - - - Returns the component instance by the service type - using dynamic arguments - - - - - - - Returns the component instance by the service type - using dynamic arguments - - - - - - - Returns the component instance by the component key - - - - - - Returns a component instance by the key - - Component's key - Service type - - The Component instance - - - - - Returns a component instance by the key - - Service type - Component's key - - - The Component instance - - - - - Returns the component instance by the service type - - - - - Returns the component instance by the service type - using dynamic arguments - - - - - - - - Returns the component instance by the service type - using dynamic arguments - - - - - - - - Returns the component instance by the component key - using dynamic arguments - - - - - - - - Returns the component instance by the component key - using dynamic arguments - - - - - - - - Returns all the valid component instances by - the service type - - The service type - - - - Returns all the valid component instances by - the service type - - The service type - - Arguments to resolve the services - - - - - Returns all the valid component instances by - the service type - - The service type - - Arguments to resolve the services - - - - - Returns component instances that implement TService - - - - - - - - Returns component instances that implement TService - - - - - - - - Returns component instances that implement TService - - - - - - - Graph of components and interactions. - - - - - Exception throw when a circular dependency is detected - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The message. - - - - Initializes a new instance of the class. - - The message. - The inner exception. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is . - The class name is or is zero (0). - - - - Exception threw when a request for a component - cannot be satisfied because the component does not - exist in the container - - - - - Initializes a new instance of the - - class. - - The name. - - - - Initializes a new instance of the - - class. - - The name. - Exception message. - - - - Initializes a new instance of the - - class. - - The service. - Exception message. - - - - Initializes a new instance of the - - class. - - The service. - - - - Initializes a new instance of the - - class. - - The object that holds the serialized object data. - The contextual information about the source or destination. - - - - Exception threw when there is a problem - registering a component - - - - - Initializes a new instance of the class. - - The message. - - - - Initializes a new instance of the class. - - The object that holds the serialized object data. - The contextual information about the source or destination. - - - - Exception threw by Kernel operations that failed - for some reason. - - - - - Initializes a new instance of the class. - - The message. - - - - Initializes a new instance of the class. - - The message. - The inner exception. - - - - Initializes a new instance of the class. - - The object that holds the serialized object data. - The contextual information about the source or destination. - - - - Base class for facilities. - - - - - Unit of extension. A facility should use - the extension points offered by the kernel - to augment its functionality. - - - - - - - - - - - - - - - - - The custom initialization for the Facility. - - - It must be overridden. - - - - - Performs the tasks associated with freeing, releasing, or resetting - the facility resources. - - - It can be overriden. - - - - - Initializes the facility. First it performs the initialization common for all - facilities, setting the and the - . After it, the Init method is invoked - and the custom initilization is perfomed. - - - - - - - Terminates the Facility, invokes the method and sets - the Kernel to a null reference. - - - - - Gets the facility configuration. - - The representing - the facility configuration. - - - - Gets the where the facility is registered. - - The . - - - - Exception that is thrown when a error occurs during the Event Wiring process - - - - - Base exception to be used by facilities. - - - - - Initializes a new instance of the class. - - The message. - - - - Initializes a new instance of the class. - - The message. - The inner exception. - - - - Initializes a new instance of the class. - - The object that holds the serialized object data. - The contextual information about the source or destination. - - - - Facility to allow components to dynamically subscribe to events offered by - other components. We call the component that offers events publishers and - the components that uses them, subscribers. - - - A component that wish to subscribe to an event must use the external configuration - adding a node subscribers on the publisher. This node can have multiple entries using the - subscriber node. - - - This example shows two simple components: one is the event publisher and the other is the - subscriber. The subscription will be done by the facility, using the publisher associated configuration. - The Publisher class: - - public class SimplePublisher - { - public event PublishEventHandler Event; - - public void Trigger() - { - if (Event != null) - { - Event(this, new EventArgs()); - } - } - } - - The Subscriber class: - - public class SimpleListener - { - private bool _listened; - private object _sender; - - public void OnPublish(object sender, EventArgs e) - { - _sender = sender; - _listened = sender != null; - } - - public bool Listened - { - get { return _listened; } - } - - public object Sender - { - get { return _sender; } - } - } - - The configuration file: - - - - - - - - - - - - - - - - - - ]]> - - - - - - Overridden. Initializes the facility, subscribing to the , - , Kernel events. - - - - - Checks if the component we're dealing is a publisher. If it is, - parses the configuration (the subscribers node) getting the event wiring info. - - The component model. - Invalid and/or a error in the configuration - - - - Checks if the component we're dealing is a publisher. If it is, - iterates the subscribers starting them and wiring the events. - - The component model. - The instance representing the component. - When the subscriber is not found -
or
- The handler method isn't found -
or
- The event isn't found -
-
- - - Represents the information about an event. - - - - - Initializes a new instance of the class. - - Name of the event. - The name of the handler method. - - - - Serves as a hash function for a particular type. - - - A hash code for the current . - - - - - Determines whether the specified is equal to the current . - - The to compare with the current . - - true if the specified is equal to the current ; otherwise, false. - - - - - Gets the name of the event. - - The name of the event. - - - - Gets the handler method name. - - The handler. - - - - - - - - - Activates a object connecting to the remote server. - - - - - Initializes a new instance of the class. - - The model. - The kernel. - The oncreation event handler. - The ondestruction event handler. - - - - Activates a client connecting to the remote server, enforcing the uri and the server activation. - - - - - Initializes a new instance of the class. - - The model. - The kernel. - The oncreation event handler. - The ondestruction event handler. - - - - Activates a client connecting to the remote server through the . - - - - - Initializes a new instance of the class. - - The model. - The kernel. - The oncreation event handler. - The ondestruction event handler. - - - - Activates a client activated object. - - - - - Initializes a new instance of the class. - - The model. - The kernel. - The oncreation event handler. - The ondestruction event handler. - - - - Activates and publishes a server object. - - - - - Initializes a new instance of the class. - - The model. - The kernel. - The oncreation event handler. - The ondestruction event handler. - - - - Facility to allow the communication with remote kernel, using the .NET Remoting infrastructure. - - - TODO - - - TODO - - - - - Used for client side (Expand explanation) - - - - - Used for server side. - Holds the local registry - - - - - Used for client side. - Holds a remote proxy to the server registry - - - - - Performs the tasks associated with freeing, releasing, or resetting - the facility resources. - - - It can be overridden. - - - - - Inspects the model looking for remote component configuration. If found, - do the component Remoting configuration. - - - - - Initializes a new instance of the class. - - The converter. - if set to true is a server. - if set to true is a client. - The base URI. - The remote registry. - The local registry. - - - - Client components are not created by the container - so there's no point collecting constructor dependencies - - - - - - Used in case of generics: - - - - - - - This method changes behavior of the facility. Deferred mode should be used when you - have single call to and register all your components there. - Enabling this mode will optimize the behavior of the facility so that it will wait 'till the end of - installation and only after all s were ran it will instantiate and - start all the startable components. An exception will be thrown if a startable component can't be - instantiated and started. This will help you fail fast and diagnose issues quickly. If you don't want - the exception to be thrown and you prefer the component to fail silently, use method instead. - - - It is recommended to use this method over method. - - - - - This method changes behavior of the facility. Deferred mode should be used when you - have single call to and register all your components there. - Enabling this mode will optimize the behavior of the facility so that it will wait 'till the end of - installation and only after all s were ran it will instantiate and - start all the startable components. No exception will be thrown if a startable component can't be - instantiated and started. If you'd rather fail fast and diagnose issues quickly, use method instead. - - - It is recommended to use method over this method. - - - - - For each new component registered, - some components in the WaitingDependency - state may have became valid, so we check them - - - - - Request the component instance - - - - - - Assigns the start method for the startable. - - - The start method. - - Be sure that you first added the - to the kernel, before registering this component. - - - - Assigns the start method for the startable. - - - Method to use. something like: StartUsingMethod(s => s.Start) - - Be sure that you first added the - to the kernel, before registering this component. - - - - Assigns the stop method for the startable. - - - The stop method. - - Be sure that you first added the - to the kernel, before registering this component. - - - - Assigns the stop method for the startable. - - - Method to use. something like: StartUsingMethod(s => s.Start) - - Be sure that you first added the - to the kernel, before registering this component. - - - - Legacy class from old impl. of the facility. Do not use it. - - - - - Legacy interceptor for old impl. of the facility. - - - - - Interceptors might implement this to receive the - ComponentModel on behalf of the component where the - interceptor is acting. - - - - - Represents a single component to be resolved via Typed Factory - - - - - Resolves the component(s) from given kernel. - - - Resolved component(s). - - - - Represents a set of components to be resolved via Typed Factory. Uses to resolve the components. - - - - - Creates new instance of . - - Collection type to resolve. Must be an array (SomeComponent[]) or IEnumerable{SomeComponent}. Type of the element of the collection will be used as first argument to - Additional arguents that will be passed as second argument to - - - - Provides automatically generated factories on top of interfaces or delegates that - you can use to pull components out of the container without ever referencing it - explicitly. - - - - - Marks the component as typed factory. - - - - - - Only interfaces are legal to use as typed factories. Methods with out parameters are not allowed. - When registering component as typed factory no implementation should be provided (in case there is any it will be ignored). - Typed factories rely on set internally, so users should not set interceptor selectors explicitly; - otherwise the factory will not function correctly. - - - - - Marks the component as typed factory. - - - - - - - Only interfaces are legal to use as typed factories. Methods with out parameters are not allowed. - When registering component as typed factory no implementation should be provided (in case there is any it will be ignored). - Typed factories rely on set internally, so users should not set interceptor selectors explicitly; - otherwise the factory will not function correctly. - - - - - Redirects resolution to the main resolver, and if not found uses - the parent handler. - - - - - Initializes a new instance of the class. - - The parent handler. - The child resolver. - - - - Summary description for DefaultGenericHandler. - - - TODO: Consider refactoring AbstractHandler moving lifestylemanager - creation to DefaultHandler - - - - - Initializes a new instance of the class. - - - - - - Clone some of the parent componentmodel properties to the generic subhandler. - - - The following properties are copied: - - - The - - - The - - - - the subhandler - - - - Summary description for DefaultHandlerFactory. - - - - - Extension point to allow the developer - to use his implementation of - - - - - Summary description for HandlerException. - - - - - Initializes a new instance of the class. - - The message. - - - - Initializes a new instance of the class. - - The object that holds the serialized object data. - The contextual information about the source or destination. - - - - Possible states for a IHandler instance - - - - - The component can be requested - - - - - The component can not be requested - as it still depending on a external - dependency not yet available - - - - - - - - - - - - Represents a delegate which holds basic information about a component. - - Key which identifies the component - handler that holds this component and is capable of - creating an instance of it. - - - - - Represents a delegate which holds basic information about a component - and its instance. - - Component meta information - Component instance - - - - Represents a delegate which holds the information about the - component - - - - - Represents a delegate which holds a handler - - handler that holds a component and is capable of - creating an instance of it. - - - - - - Represents a delegate which holds dependency - resolving information. - - - - - Abstract representation of a vertex. - - - - - The nodes that depends on this node - - - - - The nodes that this node depends - - - - - The node has not been visited yet - - - - - This node is in the process of being visited - - - - - This now was visited - - - - - Represents a collection of objects - which are guaranteed to be unique - and holds a color for them - - - - - Holds a timestamp (integer) - for a given item - - - - - Summary description for DisposalConcern. - - - - - Summary description for InitializationConcern. - - - - - Lifetime concern that works for components that don't have their actual type determined upfront - - - - - Summary description for SupportInitializeConcern. - - - - - Only called for components that - belongs to a pool when the component - comes back to the pool. - - - - - Implementors should perform any - initialization/clean up. - - - - - Interface for components that wish to be started by the container - - - - - Starts this instance. - - - - - Stops this instance. - - - - - Summary description for PerThreadLifestyleManager. - - - - - - - - - - Implements a Poolable Lifestyle Manager. - - - - - Pool implementation contract. - - - - - Implementors should return a component instance. - - - - - - Implementors should release the instance or put it - on the pool - - - - - - Initializes the pool to a initial size by requesting - n components and then releasing them. - - - - - Summary description for SingletonLifestyleManager. - - - - - Summary description for TransientLifestyleManager. - - - - - Summary description for DefaultComponentModelBuilder. - - - - - Implementors must construct a populated - instance of ComponentModel by inspecting the component - and|or the configuration. - - - - - Constructs a new ComponentModel by invoking - the registered contributors. - - - - - - - - - - "To give or supply in common with others; give to a - common fund or for a common purpose". The contributor - should inspect the component, or even the configuration - associated with the component, to add or change information - in the model that can be used later. - - - - - Removes the specified contributor - - - - - - Initializes a new instance of the class. - - The kernel. - - - - Constructs a new ComponentModel by invoking - the registered contributors. - - - - - - - - - - "To give or supply in common with others; give to a - common fund or for a common purpose". The contributor - should inspect the component, or even the configuration - associated with the component, to add or change information - in the model that can be used later. - - - - - - Removes the specified contributor - - - - - - Initializes the default contributors. - - - - - Gets the contributors. - - The contributors. - - - - Inspects the component configuration and the type looking for a - definition of component activator type. The configuration preceeds whatever - is defined in the component. - - - This inspector is not guarantee to always set up an component activator type. - If nothing could be found it wont touch the model. In this case is up to - the kernel to establish a default component activator for components. - - - - - Searches for the component activator in the configuration and, if unsuccessful - look for the component activator attribute in the implementation type. - - The kernel instance - The model instance - - - - Reads the attribute "componentActivatorType" associated with the - component configuration and verifies it implements the - interface. - - - If the type does not implement the proper interface - - - - - - - Check if the type expose one of the component activator attributes - defined in Castle.Core namespace. - - - - - - Validates that the provide type implements IComponentActivator - - The custom component activator. - - - - Inspects the component configuration and type looking for information - that can influence the generation of a proxy for that component. - - We specifically look for useSingleInterfaceProxy and marshalByRefProxy - on the component configuration or the - attribute. - - - - - - Searches for proxy behavior in the configuration and, if unsuccessful - look for the attribute in - the implementation type. - - - - - Reads the proxy behavior associated with the - component configuration/type and applies it to the model. - - - If the conversion fails - - - - - - - Returns a instance if the type - uses the attribute. Otherwise returns null. - - - - - - Uses the ConfigurationStore registered in the kernel to obtain - an associated with the component. - - - - - Queries the kernel's ConfigurationStore for a configuration - associated with the component name. - - - - - - - Check for a node 'parameters' within the component - configuration. For each child it, a ParameterModel is created - and added to ComponentModel's Parameters collection - - - - - Inspect the configuration associated with the component - and populates the parameter model collection accordingly - - - - - - - This implementation of - collects all available constructors and populates them in the model - as candidates. The Kernel will pick up one of the candidates - according to a heuristic. - - - - - Only to hold internal constants and get rid of - magic numbers and hardcode names. - - - - - Inspect the component for InterceptorAttribute and - the configuration for the interceptors node - - - - - Inspects the type looking for interfaces that constitutes - lifecycle interfaces, defined in the Castle.Model namespace. - - - - - Checks if the type implements and or - interfaces. - - - - - - - Inspects the component configuration and the type looking for a - definition of lifestyle type. The configuration preceeds whatever - is defined in the component. - - - This inspector is not guarantee to always set up an lifestyle type. - If nothing could be found it wont touch the model. In this case is up to - the kernel to establish a default lifestyle for components. - - - - - Searches for the lifestyle in the configuration and, if unsuccessful - look for the lifestyle attribute in the implementation type. - - - - - Reads the attribute "lifestyle" associated with the - component configuration and tries to convert to - enum type. - - - - - Check if the type expose one of the lifestyle attributes - defined in Castle.Model namespace. - - - - - Base for inspectors that want configuration associated with methods. - For each child a is created - and added to ComponentModel's methods collection - - - Implementors should override the return - the name of the node to be inspected. For example: - - - - - ]]> - - - - - - This implementation of - collects all potential writable public properties exposed by the component - implementation and populates the model with them. - The Kernel might be able to set some of these properties when the component - is requested. - - - - - Initializes a new instance of the class. - - - - - Adds the properties as optional dependencies of this component. - - - - - - - Represents the collection of information and - meta information collected about a component. - - - - Extended properties - - - Dependencies the kernel must resolve - - - All available constructors - - - All potential properties that can be setted by the kernel - - - Steps of lifecycle - - - External parameters - - - Interceptors associated - - - /// Custom dependencies/// - - - - Constructs a ComponentModel - - - - - Requires the selected property dependencies. - - The property selector. - - - - Requires the property dependencies of type . - - The dependency type. - - - - Sets or returns the component key - - - - - Gets or sets the service exposed. - - The service. - - - - Gets or sets the component implementation. - - The implementation. - - - - Gets or sets a value indicating whether the component requires generic arguments. - - - true if generic arguments are required; otherwise, false. - - - - - Gets or sets the extended properties. - - The extended properties. - - - - Gets the constructors candidates. - - The constructors. - - - - Gets the properties set. - - The properties. - - - - Gets or sets the configuration. - - The configuration. - - - - Gets the lifecycle steps. - - The lifecycle steps. - - - - Gets or sets the lifestyle type. - - The type of the lifestyle. - - - - Gets or sets the strategy for - inspecting public properties - on the components - - - - - Gets or sets the custom lifestyle. - - The custom lifestyle. - - - - Gets or sets the custom component activator. - - The custom component activator. - - - - Gets the interceptors. - - The interceptors. - - - - Gets the parameter collection. - - The parameters. - - - - Dependencies are kept within constructors and - properties. Others dependencies must be - registered here, so the kernel (as a matter - of fact the handler) can check them - - - - - Gets the custom dependencies. - - The custom dependencies. - - - - Represents a constructor of the component - that the container can use to initialize it properly. - - - - - Initializes a new instance of the class. - - The constructor info. - The dependencies. - - - - Gets the ConstructorInfo (from reflection). - - The constructor. - - - - Gets the dependencies this constructor candidate exposes. - - The dependencies. - - - - Collection of - - - - - Gets the fewer arguments candidate. - - The fewer arguments candidate. - - - - Collection of . - - - - - Represents an reference to a Interceptor component. - - - - - Represents obtained just in time object. - - - - - - Resolves object referenced by this reference, optionally using provided . - If object is resolved from the kernel, the should be used to guard - against against cyclic dependencies. - - - - - - - - If the reference introduces dependency on a component, should return for that dependency, otherwise null. - - - - - - - Initializes a new instance of the class. - - The component key. - - - - Initializes a new instance of the class. - - Type of the service. - - - - Gets an for the component key. - - The component key. - The - - - - Gets an for the service. - - The service. - The - - - - Gets an for the service. - - The service type. - The - - - - Collection of - - - - - Adds the specified interceptor as the first. - - The interceptor. - - - - Adds the interceptor to the end of the interceptors list if it does not exist already. - - The interceptor reference. - - - - Adds the specified interceptor as the last. - - The interceptor. - - - - Inserts the specified interceptor at the specified index. - - The index. - The interceptor. - - - - Adds the specified item. - - The interceptor. - - - - Returns an enumerator that can iterate through a collection. - - - An - that can be used to iterate through the collection. - - - - - Gets a value indicating whether this instance has interceptors. - - - true if this instance has interceptors; otherwise, false. - - - - - Gets the number of - elements contained in the . - - - - - - Represents a collection of ordered lifecycle concerns. - - - - - Returns all concerns for the commission phase - - - - - - Returns all concerns for the decommission phase - - - - - - Gets a value indicating whether this instance has commission steps. - - - true if this instance has commission steps; otherwise, false. - - - - - Gets a value indicating whether this instance has decommission steps. - - - true if this instance has decommission steps; otherwise, false. - - - - - Represents meta information associated with a method - (not yet defined) - - - - - Initializes a new instance of the class. - - The config node. - - - - Gets the config node. - - The config node. - - - - Collection of - - - - - Gets the method info2 model. - - The method info2 model. - - - - Represents a parameter. Usually the parameter - comes from the external world, ie, an external configuration. - - - - - Initializes a new instance of the class. - - The name. - The value. - - - - Initializes a new instance of the class. - - The name. - The value. - - - - Gets the name. - - The name. - - - - Gets the value. - - The value. - - - - Gets the config value. - - The config value. - - - - Collection of - - - - - Adds the specified name. - - The name. - The value. - - - - Adds the specified name. - - The name. - The config node. - - - - Determines whether this collection contains the specified key. - - The key. - - true if yes; otherwise, false. - - - - - Adds the specified key. - - - Not implemented - - The key. - The value. - - - - Clears this instance. - - - Not implemented - - - - - Removes the specified key. - - The key. - - Not implemented - - - - - Copy the content to the specified array - - target array - target index - - Not implemented - - - - - Returns an enumerator that can iterate through a collection. - - - An - that can be used to iterate through the collection. - - - - - Gets the keys. - - The keys. - - Not implemented - - - - - Gets the values. - - The values. - - Not implemented - - - - - Gets a value indicating whether this instance is read only. - - - true if this instance is read only; otherwise, false. - - - - - Gets a value indicating whether this instance is fixed size. - - - true if this instance is fixed size; otherwise, false. - - - - - Gets the with the specified key. - - - - - - Gets the count. - - The count. - - - - Gets the sync root. - - The sync root. - - - - Gets a value indicating whether this instance is synchronized. - - - true if this instance is synchronized; otherwise, false. - - - - - Represents a property and the respective dependency. - - - - - Initializes a new instance of the class. - - The property info. - The dependency. - - - - Gets the property. - - The property. - - - - Gets the dependency. - - The dependency. - - - - Collection of - - - - - Finds a PropertySet the by PropertyInfo. - - The info. - - - - - Reference to component obtained from a container. - - - - - - Select the appropriate interceptors based on the application specific - business logic - - - - - Determine whatever the specified has interceptors. - The selector should only return true from this method if it has determined that is - a model that it would likely add interceptors to. - - The model - Whatever this selector is likely to add interceptors to the specified model - - - - Select the appropriate interceptor references. - The interceptor references aren't necessarily registered in the model.Intereceptors - - The model to select the interceptors for - The interceptors selected by previous selectors in the pipeline or if this is the first interceptor in the pipeline. - The interceptor for this model (in the current context) or a null reference - - If the selector is not interested in modifying the interceptors for this model, it - should return and the next selector in line would be executed. - If the selector wants no interceptors to be used it can either return null or empty array. - However next interceptor in line is free to override this choice. - - - - - Represents a reference to an existing object. - - - - - - Defines the contract used by the kernel - to obtain proxies for components. The implementor - must return a proxied instance that dispatch - the invocation to the registered interceptors in the model - - - - - Implementors must create a proxy based on - the information exposed by ComponentModel - - The kernel instance - The component model - The component instance to be proxy (only required in some cases) - array of parameters to the constructor (if any) - The creation context - proxy instance - - - - Implementor should check the component model - and determine if the caller must pass on the component - instance to the proxy - - The kernel instance - The component model - true if an instance must be passed to - - - - Add the selector to the list of selectors that can affect interceptor's decisions - in the container. - - - - - Determines whatever we need to create a proxy for this model - - - - - - - This is a placeholder implementation of . - - - The decision to supply no implementation for - is supported by the fact that the MicroKernel should be a thin - assembly with the minimal set of features, although extensible. - Providing the support for this interface would obligate - the user to import another assembly, even if the large majority of - simple cases, no use use of interceptors will take place. - If you want to use however, see the Windsor container. - - - - - Holds the keys used by the proxy factories. - - - - - Key used to supply custom proxy options. - - - - - Represents options to configure proxies. - - - - - Initializes a new instance of the class. - - - - - - Adds the additional interfaces to proxy. - - The interfaces. - - - - Adds the additional mix ins to integrate. - - The mix ins. - - - - Adds the additional mix in to integrate. - - The mix in. - - - - Equals the specified obj. - - The obj. - true if equal. - - - - Gets the hash code. - - - - - - Gets the additional interfaces to proxy. - - The interfaces. - - - - Determines if the proxied component can change targets. - - - - - Determines if the interface proxied component should inherit - from - - - - - Gets or sets the proxy hook. - - - - - Gets the mix ins to integrate. - - The interfaces. - - - - Determines if the proxied component uses a target. - - - - - Gets or sets the interceptor selector. - - - - - Determines if the proxied component should only include - the service interface. - - - - - Helper support for proxy configuration. - - - - - Obtains the associated with the . - - The component model. - true if the options should be created if not present. - The associated proxy options for the component model. - - - - Constructs the descriptor with name and value. - - The attribute name. - The attribute value. - - - - Constructs the descriptor with name. - - The component. - The attribute name. - - - - Builds the with value. - - The attribute value. - The - - - - Factory for creating objects. - - - - - Creates a component registration for the - - Type of the service. - The component registration. - - - - Creates a component registration for the - - Types of the service. - The component registration.B - - - - Creates a component registration for the - - Types of the service. - The component registration.B - - - - Creates a component registration for the service type. - - The service type. - The component registration. - - - - Create a component registration for an existing - - The component model. - The component registration. - - - - Determines if the component is a Castle component, that is - if it has a . - - true if the service is a Castle Component. - - This method is usually used as argument for method. - - - - - Creates a predicate to check if a component is in a namespace. - - The namespace. - true if the component type is in the namespace. - - - - Creates a predicate to check if a component is in a namespace. - - The namespace. - If set to true, will also include types from subnamespaces. - true if the component type is in the namespace. - - - - Creates a predicate to check if a component shares a namespace with another. - - The component type to test namespace against. - true if the component is in the same namespace. - - - - Creates a predicate to check if a component shares a namespace with another. - - The component type to test namespace against. - If set to true, will also include types from subnamespaces. - true if the component is in the same namespace. - - - - Creates a predicate to check if a component shares a namespace with another. - - The component type to test namespace against. - true if the component is in the same namespace. - - - - Creates a predicate to check if a component shares a namespace with another. - - The component type to test namespace against. - If set to true, will also include types from subnamespaces. - true if the component is in the same namespace. - - - - Determines if the component service is already registered. - - The kernel. - The component model. - true if the service is already registered. - - - - Creates a component registration for the service types. - - The primary service type. - The forwarded type. - The component registration. - - - - Creates a component registration for the service types. - - The primary service type. - The first forwarded type. - The second forwarded type. - The component registration. - - - - Creates a component registration for the service types. - - The primary service type. - The first forwarded type. - The second forwarded type. - The third forwarded type. - The component registration. - - - - Creates a component registration for the service types. - - The primary service type. - The first forwarded type. - The second forwarded type. - The third forwarded type. - The fourth forwarded type. - The component registration. - - - - Inserts a new named argument with given key. If an argument for this name already exists, it will be overwritten. - - - - - Inserts a new typed argument with given type. If an argument for this type already exists, it will be overwritten. - - - - - Inserts a new typed argument with given type. If an argument for this type already exists, it will be overwritten. - - - - - Inserts a set of typed arguments. Property names of the anonymous type will be used as key. - - - - - Inserts a set of typed arguments. Actual type of the arguments will be used as key. - - - - - Delegate to filter component registration. - - The kernel. - The component model. - true if accepted. - - - - Registration for a single type as a component with the kernel. - - You can create a new registration with the factory. - - The service type - - - - The contract for all registrations with the kernel. - - - - - Performs the registration in the . - - The kernel. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with an existing . - - - - - Marks the components with one or more actors. - - The component actors. - - - - - Set a custom which creates and destroys the component. - - - - - - Adds the attribute descriptor. - - The key. - The value. - - - - - Adds the descriptor. - - The descriptor. - - - - - Creates an attribute descriptor. - - The attribute key. - - - - - Apply more complex configuration to this component registration. - - The config nodes. - - - - - Apply more complex configuration to this component registration. - - The configuration . - - - - - Obsolete, use instead. - - The dependencies. - - - - - Obsolete, use instead. - - The dependencies. - - - - - Obsolete, use instead. - - The dependencies. - - - - - Specify custom dependencies using or . - - You can pass s to specify the components - this component should be resolved with. - - The dependencies. - - - - - Uses a dictionary of key/value pairs, to specify custom dependencies. - - Use to specify the components - this component should be resolved with. - - The dependencies. - - - - - Uses an (anonymous) object as a dictionary, to specify custom dependencies. - - Use to specify the components - this component should be resolved with. - - The dependencies. - - - - - Allows custom dependencies to by defined dyncamically. - - The delegate used for providing dynamic parameters. - - - - - Allows custom dependencies to by defined dynamically with releasing capability. - - The delegate used for providing dynamic parameters. - - - - - Allows custom dependencies to by defined dynamically with releasing capability. - - The delegate used for providing dynamic parameters. - - - Use when resolving components from in order to detect cycles. - - - - - Sets for this component. - - The extended properties. - - - - - Sets for this component. - - The extendend properties as key/value pairs. - - - - - Registers the service types on behalf of this component. - - The types to forward. - - - - - Registers the service types on behalf of this component. - - The forwarded type. - The component registration. - - - - Registers the service types on behalf of this component. - - The first forwarded type. - The second forwarded type. - The component registration. - - - - Registers the service types on behalf of this component. - - The first forwarded type. - The second forwarded type. - The third forwarded type. - The component registration. - - - - Registers the service types on behalf of this component. - - The first forwarded type. - The second forwarded type. - The third forwarded type. - The fourth forwarded type. - The component registration. - - - - Registers the service types on behalf of this component. - - The types to forward. - - - - - Assigns a conditional predication which must be satisfied. - - The component will only be registered into the kernel - if this predicate is satisfied (or not assigned at all). - - The predicate to satisfy. - - - - - Sets the concrete type that implements the service to . - - If not set, the will be used as the implementation for this component. - - The type that is the implementation for the service. - - - - - Sets the concrete type that implements the service to . - - If not set, the will be used as the implementation for this component. - - The type that is the implementation for the service. - - - - - Assigns an existing instance as the component for this registration. - - The component instance. - - - - - Set the interceptors for this component. - - The interceptors. - - - - - Set the interceptors for this component. - - The interceptors. - - - - - Set the interceptor for this component. - - - - - - Set the interceptor for this component. - - - - - - Set the interceptor for this component. - - - - - - Change the name of this registration. - This will be the key for the component in the kernel. - - If not set, the of the - will be used as the key to register the component. - - The name of this registration. - - - - - Stores a set of which will be invoked when the component - is created and before it's returned from the container. - - A set of actions to be executed right after the component is created and before it's returned from the container. - - - - With the overwrite. - - - - - - Set configuration parameters with string or values. - - The parameters. - - - - - Sets the interceptor selector for this component. - - - - - - - Sets the interceptor selector for this component. - - - - - - - Override (some of) the services that this component needs. - Use to create an override. - - Each key represents the service dependency of this component, for example the name of a constructor argument or a property. - The corresponding value is the key of an other component registered to the kernel, and is used to resolve the dependency. - - To specify dependencies which are not services, use - - The service overrides. - - - - - Override (some of) the services that this component needs, using a dictionary. - - Each key represents the service dependency of this component, for example the name of a constructor argument or a property. - The corresponding value is the key of an other component registered to the kernel, and is used to resolve the dependency. - - To specify dependencies which are not services, use - - The service overrides. - - - - - Override (some of) the services that this component needs, using an (anonymous) object as a dictionary. - - Each key represents the service dependency of this component, for example the name of a constructor argument or a property. - The corresponding value is the key of an other component registered to the kernel, and is used to resolve the dependency. - - To specify dependencies which are not services, use - - The service overrides. - - - - - Assigns a conditional predication which must not be satisfied. - - The component will only be registered into the kernel - if this predicate is not satisfied (or not assigned at all). - - The predicate not to satisfy. - - - - - Uses a factory to instantiate the component - - Factory type. This factory has to be registered in the kernel. - Implementation type. - Factory invocation - - - - - Uses a factory method to instantiate the component. - - Implementation type - Factory method - - - - - Uses a factory method to instantiate the component. - - Implementation type - Factory method - - - - - Uses a factory method to instantiate the component. - - Implementation type - Factory method - - - - - Uses a factory method to instantiate the component. - - Implementation type - Factory method - - - - - Registers this component with the . - - The kernel. - - - - Gets the forwarded service types on behalf of this component. - - Add more types to forward using . - - The types of the forwarded services. - - - - The concrete type that implements the service. - - To set the implementation, use . - - The implementation of the service. - - - - Set the lifestyle of this component. - For example singleton and transient (also known as 'factory'). - - The with lifestyle. - - - - The name of the component. Will become the key for the component in the kernel. - - To set the name, use . - - If not set, the of the - will be used as the key to register the component. - - The name. - - - - Set proxy for this component. - - The proxy. - - - - The type of the service, the same as . - - This is the first type passed to . - - The type of the service. - - - - A non-generic . - - You can create a new registration with the factory. - - - - - Represents a configuration child. - - - - - Applies the configuration node. - - The configuration. - - - - Represents a configuration attribute. - - - - - Applies the configuration node. - - The configuration. - - - - Create a with name. - - The attribute name. - The new - - - - Represents a named attribute. - - - - - Builds the with name/value. - - The attribute value. - The new - - - - Builds the with name/value. - - The attribute value. - The new - - - - Represents a configuration child. - - - - - Create a with name. - - The child name. - The new - - - - Represents a named child. - - - - - Builds the with name/value. - - The child value. - The new - - - - Builds the with name/value. - - The child value. - The new - - - - Builds the with name/config. - - The child configuration. - The new - - - - Builds the with name/config. - - The child nodes. - The new - - - - Applies the configuration node. - - The configuration. - - - - Represents a simple child node. - - - - - Applies the configuration node. - - The configuration. - - - - Represents a complex child node. - - - - - Applies the configuration node. - - The configuration. - - - - Represents a compound child node. - - - - - Applies the configuration node. - - The configuration. - - - - The contract to install components in the container. - - - - - Performs the installation in the . - - The container. - The configuration store. - - - - Adds the actions to ExtendedProperties. - - - - - - Sets the lifestyle to the specified . - - The type. - - - - - Assign a custom lifestyle type, that implements . - - Type of the custom lifestyle. - - - - - Assign a custom lifestyle type, that implements . - - The type of the custom lifestyle - - - - - Represents a configuration parameter. - - - - - Create a with key. - - The parameter key. - The new - - - - Gets the parameter key. - - - - - Gets the parameter value. - - - - - Gets the parameter configuration. - - - - - Represents a parameter key. - - - - - Builds the with key/value. - - The parameter value. - The new - - - - Builds the with key/config. - - The parameter configuration. - The new - - - - The parameter key name. - - - - - Represents a key/value pair. - - - - - Create a with key. - - The property key. - The new - - - - Create a with key. - - The property key. - The new - - - - Create a with key. - - The property key. - The new - - - - Gets the property key. - - - - - Gets the property value. - - - - - Represents a property key. - - - - - Builds the with key/value. - - The property value. - The new - - - - Builds a service override using other component registered with given as value for dependency with given . - - - - - - - Builds a service override using other component registered with given and no explicit name, as value for dependency with given . - - - - - - Builds a service override using other component registered with given and no explicit name, as value for dependency with given . - - - - - - The property key key. - - - - - Represents a service override. - - - - - Creates a with key. - - The service override key. - The new - - - - Creates a with key. - - The service override key. - The new - - - - Creates a with key. - - The service override key. - The new - - - - Gets the optional value type specifier. - - - - - Represents a service override key. - - - - - Builds the with key/value. - - The service override value. - The new - - - - Builds the with key/values. - - The service override values. - The new - - - - Builds the with key/values. - - The service override values. - The new - The value type. - - - - Builds the with key/values. - - The service override values. - The new - - - - Builds the with key/values. - - The service override values. - The new - The value type. - - - - Describes a set of components to register in the kernel. - - - - - Describes all the types based on basedOn. - - The base type. - - - - - Describes all the types based on type T. - - The base type. - - - - - Describes any types that are supplied. - - - - - - Prepares to register types from an assembly. - - The assembly name. - The corresponding - - - - Prepares to register types from an assembly. - - The assembly. - The corresponding - - - - Prepares to register types from an assembly containing the type. - - The type belonging to the assembly. - The corresponding - - - - Prepares to register types from an assembly containing the type. - - The type belonging to the assembly. - The corresponding - - - - Prepares to register types from the assembly containing the code invoking this method. - - The corresponding - - - - Prepares to register types from assemblies found in a given directory that meet additional optional restrictions. - - - - - - - Prepares to register types from a list of types. - - The list of types. - The corresponding - - - - Prepares to register types from a list of types. - - The list of types. - The corresponding - - - - Prepares to register types from a list of types. - - The list of types. - The corresponding - - - - Describes a related group of components to register in the kernel. - - - - - Prepares to register types from an assembly. - - The assembly name. - The corresponding - - - - Prepares to register types from an assembly. - - The assembly. - The corresponding - - - - Prepares to register types from a list of types. - - The list of types. - The corresponding - - - - Prepares to register types from a list of types. - - The list of types. - The corresponding - - - - Prepares to register types from a list of types. - - The list of types. - The corresponding - - - - Describes a configuration. - - - - - Initializes a new instance of the ConfigureDescriptor. - - The - The configuration action. - - - - Initializes a new instance of the ConfigureDescriptor. - - The - The base type to match. - The configuration action. - - - - Allows customized configurations of each matching type. - - The configuration action. - - - - - Allows customized configurations of each matching type. - - The configuration action. - - - - - Allows customized configurations of each matching type that is - assignable to . - - The type assignable from. - The configuration action. - - - - - Allows customized configurations of each matching type that is - assignable to . - - The type assignable from. - The configuration action. - - - - - Performs the component configuration. - - The component registration. - - - - Selects a set of types from an assembly. - - - - - Describes the source of types to register. - - - - - Allows a type to be registered multiple times. - - - - - Returns the descriptor for accepting a type. - - The base type. - The descriptor for the type. - - - - Returns the descriptor for accepting a type. - - The base type. - The descriptor for the type. - - - - Returns the descriptor for accepting any type from given solutions. - - - - - - Returns the descriptor for accepting a type based on a condition. - - The accepting condition. - The descriptor for the type. - - - - Selects an existing set of types to register. - - - - - Describes how to select a types service. - - - - - Uses the base type matched on. - - - - - - Uses the type itself. - - - - - - Uses all interfaces implemented by the type (or its base types) as well as their base interfaces. - - - - - - Uses all interfaces that have names matched by implementation type name. - Matches Foo to IFoo, SuperFooExtended to IFoo and IFooExtended etc - - - - - - Uses the first interface of a type. This method has non-deterministic behavior when type implements more than one interface! - - - - - - Uses to lookup the sub interface. - For example: if you have IService and - IProductService : ISomeInterface, IService, ISomeOtherInterface. - When you call FromInterface(typeof(IService)) then IProductService - will be used. Useful when you want to register _all_ your services - and but not want to specify all of them. - - - - - - - Uses base type to lookup the sub interface. - - - - - - Assigns a custom service selection strategy. - - - - - - - Assigns the supplied service types. - - - - - - - This is a workaround for a CLR bug in - which GetInterfaces() returns interfaces - with no implementations. - - Type of the service. - - - - - Delegate for custom registration configuration. - - The component registration. - Not used. - - - - Describes how to register a group of related types. - - - - - Initializes a new instance of the BasedOnDescriptor. - - - - - Allows a type to be registered multiple times. - - - - - Returns the descriptor for accepting a new type. - - The base type. - The descriptor for the type. - - - - Returns the descriptor for accepting a new type. - - The base type. - The descriptor for the type. - - - - Allows customized configurations of each matching type. - - The configuration action. - - - - - Allows customized configurations of each matching type. - - The configuration action. - - - - - Allows customized configurations of each matching type that is - assignable to - - . - - The type assignable from. - The configuration action. - - - - - Allows customized configurations of each matching type that is - assignable to - - . - - The type assignable from. - The configuration action. - - - - - Assigns a conditional predication which must be satisfied. - - The predicate to satisfy. - - - - - Assigns a conditional predication which must not be satisfied. - - The predicate not to satisify. - - - - - Returns the descriptor for accepting a type based on a condition. - - The accepting condition. - The descriptor for the type. - - - - Gets the type all types must be based on. - - - - - Gets the service descriptor. - - - - - Policy managing lifetime of components, and in particular their release process. - - - - - Only tracks components that have decommission steps - registered or have pooled lifestyle. - - - - - No tracking of component instances are made. - - - - - Default implementation for . - This implementation is quite simple, but still should be useful - for 99% of situations. - - - - - Implementors should use a strategy to obtain - valid references to properties and/or services - requested in the dependency model. - - - - - This method is called with a delegate for firing the - IKernelEvents.DependencyResolving event. - - kernel - The delegate used to fire the event - - - - Registers a sub resolver instance - - The subresolver instance - - - - Unregisters a sub resolver instance previously registered - - The subresolver instance - - - - Initializes this instance with the specified dependency delegate. - - kernel - The dependency delegate. - - - - Registers a sub resolver instance - - The subresolver instance - - - - Unregisters a sub resolver instance previously registered - - The subresolver instance - - - - Returns true if the resolver is able to satisfy the specified dependency. - - Creation context, which is a resolver itself - Parent resolver - Model of the component that is requesting the dependency - The dependency model - - true - if the dependency can be satisfied - - - - Try to resolve the dependency by checking the parameters in - the model or checking the Kernel for the requested service. - - - The dependency resolver has the following precedence order: - - - The dependency is checked within the - - - - - The dependency is checked within the - - instance for the component - - - The dependency is checked within the registered - - s - - - Finally the resolver tries the normal flow - which is using the configuration - or other component to satisfy the dependency - - - - Creation context, which is a resolver itself - Parent resolver - Model of the component that is requesting the dependency - The dependency model - The dependency resolved value or null - - - - Extracts the component name from the a ref strings which is - ${something} - - - - - - - - This method rebuild the context for the parameter type. - Naive implementation. - - - - - Summary description for DependencyResolverException. - - - - - Initializes a new instance of the class. - - The message. - The inner exception. - - - - Initializes a new instance of the class. - - The message. - - - - Initializes a new instance of the class. - - The object that holds the serialized object data. - The contextual information about the source or destination. - - - - Handle dependencies of services in the format of typed arrays. - - - This is a complimentary implementation - that is capable of satisfying dependencies of services as typed arrays. - - Note that it will take precedence over service override for arrays defined - on the configuration. - - - - In order to install the resolver: - - var kernel = new DefaultKernel(); - kernel.Resolver.AddSubResolver(new ArrayResolver(kernel)); - - - - To use it, assuming that IService is on the container: - - - - public class Component - { - public Component(IService[] services) - { - } - } - - - - - - More generic alternative to and . - It supports arrays as well as any generic interface type assignable from arrays. - - - The collection instance that is provided is read only, even for interfaces like - - - - - Handle dependencies of services in the format of generic IList. - - - This is a complimentary implementation - that is capable of satisfying dependencies of services generic IList. - - Note that it will take precedence over service override for lists defined - on the configuration. - - - - In order to install the resolver: - - var kernel = new DefaultKernel(); - kernel.Resolver.AddSubResolver(new ListResolver(kernel)); - - - - To use it, assuming that IService is on the container: - - - - public class Component - { - public Component(IList<IService> services) - { - } - } - - - - - - A subsystem is used by the MicroKernel to deal - with a specific concern. - - - - - Initializes the subsystem - - - - - - Should perform the termination - of the subsystem instance. - - - - - This implementation of - does not try to obtain an external configuration by any means. - Its only purpose is to serve as a base class for subclasses - that might obtain the configuration node from anywhere. - - - - - The contract used by the kernel to obtain - external configuration for the components and - facilities. - - - - - Associates a configuration node with a facility key - - item key - Configuration node - - - - Associates a configuration node with a component key - - item key - Configuration node - - - - Associates a configuration node with a bootstrap component key - - item key - Configuration node - - - - Adds the child container configuration. - - The container's name. - The config. - - - - Returns the configuration node associated with - the specified child container key. Should return null - if no association exists. - - item key - - - - - Returns the configuration node associated with - the specified facility key. Should return null - if no association exists. - - item key - - - - - Returns the configuration node associated with - the specified component key. Should return null - if no association exists. - - item key - - - - - Returns the configuration node associated with - the specified component key. Should return null - if no association exists. - - item key - - - - - Returns all configuration nodes for facilities - - - - - - Returns all configuration nodes for components - - - - - - Returns all configuration nodes for installers - - - - - - Returns all configuration nodes for bootstrap components - - - - - - Gets the child containers configuration nodes. - - - - - - - - - - - - - - Initializes a new instance of the class. - - - - - Associates a configuration node with a facility key - - item key - Configuration node - - - - Associates a configuration node with a component key - - item key - Configuration node - - - - Associates a configuration node with a bootstrap component key - - - - - Adds the child container configuration. - - The key. - The config. - - - - Returns the configuration node associated with - the specified facility key. Should return null - if no association exists. - - item key - - - - - Returns the configuration node associated with - the specified child container key. Should return null - if no association exists. - - item key - - - - - Returns the configuration node associated with - the specified component key. Should return null - if no association exists. - - item key - - - - - Returns the configuration node associated with - the specified component key. Should return null - if no association exists. - - - - - - - Returns all configuration nodes for facilities - - - - - - Returns all configuration nodes for bootstrap components - - - - - - Returns all configuration nodes for child containers - - - - - - Returns all configuration nodes for components - - - - - - Base implementation of - - - - - Implements a conversion logic to a type of a - set of types. - - - - - Returns true if this instance of ITypeConverter - is able to handle the specified type. - - - - - - - Returns true if this instance of ITypeConverter - is able to handle the specified type with the specified - configuration - - - - - - - - Should perform the conversion from the - string representation specified to the type - specified. - - - - - - - - Should perform the conversion from the - configuration node specified to the type - specified. - - - - - - - - Returns true if this instance of ITypeConverter - is able to handle the specified type with the specified - configuration - - - - - - The default behavior is to just pass it to the normal CanHadnleType - peeking into the configuration is used for some advanced functionality - - - - - Summary description for ConverterException. - - - - - Initializes a new instance of the class. - - The message. - - - - Initializes a new instance of the class. - - The message. - The inner exception. - - - - Initializes a new instance of the class. - - The object that holds the serialized object data. - The contextual information about the source or destination. - - - - Looks for a on the type to be converted. - If found, the TypeConverter defined by the attribute is used to perform the conversion. - - - - - Marker interface that signals that a converter - depends on IKernel to be able to perform - the conversion. - - - - - Attempts to utilize an existing for conversion - - - - - Creates the target type instance. - - The type. - The configuration. - - - - - Chooses the first non default constructor. Throws an exception if more than - one non default constructor is found - - - The chosen constructor, or null if none was found - - - - Converts the constructor parameters. - - The constructor. - The configuration. - - - - - Converts the property values. - - The instance. - The type. - The configuration. - - - - Finds the child (case insensitive). - - The config. - The name. - - - - - Gets the conversion manager. - - The conversion manager. - - - - Converts a string representation to an enum value - - - - - Initializes a new instance of the class. - - - - - This interface is needed because we want to isolate ourself from - the generic parameters, so we can work type safe inside the implementations, - and still call from non generic types outside. - - - - - Implements all standard conversions. - - - - - Convert a type name to a Type instance. - - - - - Declares a type as being convertible by a and optionally defines the converter to be used - - - - - Defines the to be used to convert the type - - - - - Defines the to be used to convert the type - - - - - - Composition of all available conversion managers - - - - - Establish a composition interface and a subsystem. - Implementors should delegate the conversion to - a instance of a type converter. - - - - - Register a type converter instance. - - - - - - Method finds the next biggest node - It assumes Add puts lesser nodes on the right - - - - Node's left - - - Node's right - - - Node's parent - - - DA Linked List - - - - Creates a ComponentName using a name pattern like - "service:key=value,key2=value2" - - Complete name - - - - Creates a ComponentName with specified service and - properties. - - Service name - Property list. - - - - Serialization constructor. - - - - - - - Parses the full name extracting the service and properties. - - Full name. - - - - Sets up the service. Can be empty but can't be null. - - - - - - Parses and validate a properties list string like - "key=value,key2=value2" and so on. - - Property list. - - - - Validates a properties IDictionary. - - Property list. - - - - Default implementation. - Keeps services map as a simple hash table. - Keeps key map as a list dictionary to maintain order. - Does not support a query string. - - - - - Contract for SubSystem that wishes to keep and coordinate - component registration. - - - - - Register a new component resolver that can take part in the decision - making about which handler to resolve - - - - - Returns true if there is a component registered - for the specified key - - - - - - - Returns true if there is a component registered - for the specified service - - - - - - - Return s where components are compatible - with the specified service. - - - - - - - Returns the associated with - the specified key. - - - - - - - Returns the associated with - the specified service. - - - - - Returns the associated with - the specified key with the service type. - - It is expected that this will be used mainly to resolve a generic service - by its key. - - - - - - Returns an array of that - satisfies the specified query. - - - - - - - Returns an array of associated with - the specified service. - - - - - - - Returns all registered. - - - - - - List of handler by key - - - - - List of handler by service - - - - - Implementors should register the key and service pointing - to the specified handler - - - - - - - Unregister the handler by the given key - - - - - - Unregister the handler by the given service - - - - - - Returns the number of components registered. - - - - - Associates a with - the specified service - - - - - Associates a with - the specified key - - - - - Map(String, IHandler) to map component keys - to - Items in this dictionary are sorted in insertion order. - - - - - Map(Type, IHandler) to map a service - to . - If there is more than a single service of the type, only the first - registered services is stored in this dictionary. - It serve as a fast lookup for the common case of having a single handler for - a type. - - - - - Initializes a new instance of the class. - - - - - Implementors of this interface allow to extend the way the container perform - component resolution based on some application specific business logic. - - - This is the sibling interface to . - This is dealing strictly with root components, while the is dealing with - dependent components. - - - - - Whatever the selector has an opinion about resolving a component with the - specified service and key. - - The service key - can be null - The service interface that we want to resolve - - - - Select the appropriate handler from the list of defined handlers. - The returned handler should be a member from the array. - - The service key - can be null - The service interface that we want to resolve - The defined handlers - The selected handler, or null - - - - When requesting a component by service, KeySearchNamingSubSystem first - determines if more than one component has been registered for that service. - If not, Default resolution occurs. If so, all of the registered keys for - that service are processed through the provided Predicate to determine which - key to use for service resolution. If no Predicate matches, the default - resolution occurs. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The key predicate. - - - - Registers the given handler with the give key. - - The key. - The handler. - - - - Unregisters the handler associated with the given key - - The key. - - - - Unregisters the handler associated with the given service - - The service. - - - - Executes the Predicate against all keys for the registered service to - determine which component to return. - - The service. - - - - - Alternative implementation. - Extends the default implementation replacing the - key support with a more complete ComponentName. Supports - queries. - - - The user must register components using the following construction - - service:properties - - Where properties is a list of key value pairs (comma separated). Example: - - protocol:secure=true,version=1.2 - - The user can then query for components using the same construction: - - protocol:secure=true - - Or to return all: - - protocol:* - - - - - - Pendent - - - - - An implementation of a should - be able to return instances of - for a given resource identifier. - - - - - Holds the keys used by Kernel to register/request - a subsystem. - - - - - Key used for the configuration store subsystem - - - - - Key used for the conversion manager - - - - - Key used for the naming subsystem - - - - - Key used for the resource subsystem - - - - - Compares if the reference of two objects are equals. - - - - - Summary description for ReferenceExpressionUtil. - - - - - Integrates the to the System.ComponentModel - and System.ComponentMode.Design infrastructure. - - - - - - - - This interface should be implemented by classes - that are available in a bigger context, exposing - the container to different areas in the same application. - - For example, in Web application, the (global) HttpApplication - subclasses should implement this interface to expose - the configured container - - - - - - Custom activator to create the instance on demand. - - - - - Implementation of . - Do not support configuration inheritance. - - - - - Interpreter of a specific language to describe - configuration nodes in a hierarchical manner. - - - - - Should obtain the contents from the resource, - interpret it and populate the - accordingly. - - - - - - - Gets or sets the name of the environment. - - The name of the environment. - - - - Exposes the reference to - which the interpreter is likely to hold - - - - - Provides common methods for those who wants - to implement - - - - - Should obtain the contents from the resource, - interpret it and populate the - accordingly. - - - - - - - Exposes the reference to - which the interpreter is likely to hold - - - - - - Gets or sets the name of the environment. - - The name of the environment. - - - - Reads the configuration from a XmlFile. Sample structure: - - <configuration> - <facilities> - <facility id="myfacility"> - - </facility> - </facilities> - - <components> - <component id="component1"> - - </component> - </components> - </configuration> - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The filename. - - - - Initializes a new instance of the class. - - The source. - - - - Gets or sets the kernel. - - The kernel. - - - - Initializes a new instance of the class. - - Name of the environment. - - - - Initializes a new instance of the class. - - Name of the environment. - The resource sub system. - - - - Processes the element. - - The element. - - - - - Processes the element. - - The element. - - - - - Make a shallow copy of the nodeList. - - The nodeList to be copied. - - - - - Accepts the specified node. - Check if node has the same name as the processor and the node.NodeType - is in the AcceptNodeTypes List - - The node. - - - - - Convert and return child parameter into an XmlElement - An exception will be throw in case the child node cannot be converted - - Parent node - Node to be converted - child node as XmlElement - - - - - - - - - - - - attributeValue - - propertyValue - - - - - - - Processes the specified node list. - - The node list. - The engine. - - - - Processes element attributes. - if the attribute is include will append to the element - all contents from the file. - if the attribute has a property reference the reference will be - expanded - - The element. - - - - - Properties names can contain a-zA-Z0-9_. - i.e. #!{ my_node_name } || #{ my.node.name } - spaces are trimmed - - - - - Processes the string. - - The node. - The value. - The context. - - - - Accepts the specified node. - Check if node has the same name as the processor and the node.NodeType - is in the AcceptNodeTypes List - NOTE: since the BatchRegistrationFacility already uses an include - element we will distinguish between both by looking for the presence of an uri attribute - we should revisit this later by using xml-namespaces - - The node. - - - - - - - - - - - - - attributeValue - - propertyValue - - - - - - - Pendent - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - Name of the environment. - The resource sub system. - - - - Initializes a new instance of the class. - - - - - Gets the environment information (name). Implementors should - use to define their environments and how those affect the configuration. - - - - - Gets the name of the environment. - - - - - - Installs all the components from the App.Config file. - - - - - - Installs all the component from the xml configuration file. - - The xml configuration file. - - - - - Installs all the component from the xml configuration. - - The xml configuration resource. - - - - - Delegate to provide environment name. - - The environment name. - - - - Initializes a new instance of the ConfigurationInstaller class. - - - - - Sets the configuration environment name. - - The environment name. - - - - - Set the configuration environment strategy. - - The environment strategy. - - - - - Default implementation. - - - - - Installs the components and facilities based on the - information on the configuration store. - - - - - Perform installation. - - Target container - Configuration store - - - - Perform installation. - - Target container - Configuration store - - - - Scans the assembly containing specified type for types implementing , instantiates them and returns so that can install them. - - - - - - Scans the assembly containing specified type for types implementing , instantiates using given and returns so that can install them. - - - - - - Scans the assembly containing specified type for types implementing , instantiates them and returns so that can install them. - - - - - - Scans the assembly containing specified type for types implementing , instantiates using given and returns so that can install them. - - - - - - Scans the specified assembly with specified name for types implementing , instantiates them and returns so that can install them. - - - - - - Scans the specified assembly with specified name for types implementing , instantiates using given and returns so that can install them. - - - - - - Scans the assembly with specified name for types implementing , instantiates them and returns so that can install them. - - - - - - Scans the assembly with specified name for types implementing , instantiates using given and returns so that can install them. - - - - - - Scans assembly that contains code calling this method for types implementing , - instantiates them and returns so that can install them. - - - - - - Scans assembly that contains code calling this method for types implementing , instantiates using given and returns so that can install them. - - - - - - Scans assemblies in directory specified by for types implementing , instantiates and returns so that can install them. - - - - - - - Scans assemblies in directory specified by for types implementing , instantiates using given and returns so that can install them. - - - - - - - - Helper class used by to filter/order and instantiate implementations - - - - - Performs custom instantiation of given - - - Default implementation uses public parameterless constructor to create the instance. - - - - - Performs custom filtering/ordering of given set of types. - - Set of concrete class types implementing interface. - Transformed . - Default implementation simply returns types passed into it. - - - - The IWindsorContainer interface exposes all the - functionality the Windsor implements. - - - - - Registers a subcontainer. The components exposed - by this container will be accessible from subcontainers. - - - - - - Registers a facility within the container. - - The key by which the gets indexed. - The to add to the container. - - - - Creates and adds an facility to the container. - - The facility type. - - - - - - Creates and adds an facility to the container. - - The facility type. - - The callback for creation. - - - - - Creates and adds an facility to the container. - - The facility type. - - The callback for creation. - - - - - Creates and adds an facility to the container. - - The facility type. - - - - - Creates and adds an facility to the container. - - The facility type. - The callback for creation. - - - - - Creates and adds an facility to the container. - - The facility type. - The callback for creation. - - - - - Gets a child container instance by name. - - The container's name. - The child container instance or null - - - - Installs the components provided by the s - with the . - The component installers. - The container. - - - - - Registers the components provided by the s - with the . - - Create a new registration using .For() or . - - - - container.Register(Component.For<IService>().ImplementedBy<DefaultService>()); - - - The component registrations. - The container. - - - - Releases a component instance - - - - - - Remove a child container - - - - - - Returns a component instance by the key - - - - - - - - Returns a component instance by the key - - - - - - - - Returns a component instance by the key - - - - - - - - Returns a component instance by the service - - - - - - - Returns a component instance by the service - - - - - - - - Returns a component instance by the service - - - - - - - - Returns a component instance by the service - - Service type - The component instance - - - - Returns a component instance by the service - - Service type - - The component instance - - - - Returns a component instance by the service - - Service type - - The component instance - - - - Returns a component instance by the key - - Component's key - Service type - The Component instance - - - - Returns a component instance by the key - - Service type - Component's key - - The Component instance - - - - Returns a component instance by the key - - Service type - Component's key - - The Component instance - - - - Returns a component instance by the key - - - - - - - - - Returns a component instance by the key - - - - - - - - - Resolve all valid components that match this type. - - The service type - - - - Resolve all valid components that match this service - the service to match - - - - - Resolve all valid components that match this service - the service to match - Arguments to resolve the service - - - - - Resolve all valid components that match this service - the service to match - Arguments to resolve the service - - - - - Resolve all valid components that match this type. - The service type - Arguments to resolve the service - - - - - Resolve all valid components that match this type. - The service type - Arguments to resolve the service - - - - - Returns the inner instance of the MicroKernel - - - - - Gets the container's name - - - Only useful when child containers are being used - - The container's name. - - - - Gets or sets the parent container if this instance - is a sub container. - - - - - Obtains the interceptors associated with the component. - - The kernel instance - The component model - The creation context - interceptors array - - - - This implementation of relies - on DynamicProxy to expose proxy capabilities. - - - Note that only virtual methods can be intercepted in a - concrete class. However, if the component - was registered with a service interface, we proxy - the interface and the methods don't need to be virtual, - - - - - Constructs a DefaultProxyFactory - - - - - Creates the proxy for the supplied component. - - The kernel. - The target. - The model. - The constructor arguments. - The creation context - The component proxy. - - - - Determines if the component requires a target instance for proxying. - - The kernel. - The model. - true if an instance is required. - - - - Implementation of - which delegates to implementation. - - - - - Constructs a container without any external - configuration reference - - - - - Constructs a container using the specified - implementation. - - The instance of an implementation. - - - - Constructs a container using the specified - implementation. - - The instance of an implementation. - - - - Initializes a new instance of the class. - - The interpreter. - The environment info. - - - - Initializes a new instance of the class using a - xml file to configure it. - - Equivalent to the use of new WindsorContainer(new XmlInterpreter(xmlFile)) - - - The XML file. - - - - Constructs a container using the specified - implementation. Rarely used. - - - This constructs sets the Kernel.ProxyFactory property to - Proxy.DefaultProxyFactory - - Kernel instance - Installer instance - - - - Constructs a container using the specified - implementation. Rarely used. - - - This constructs sets the Kernel.ProxyFactory property to - Proxy.DefaultProxyFactory - - Container's name - Kernel instance - Installer instance - - - - Constructs with a given . - - A instance of an . - - - - Constructs a container assigning a parent container - before starting the dependency resolution. - - The instance of an - The instance of an implementation - - - - Initializes a new instance of the class. - - The container's name. - The parent. - The interpreter. - - - - Executes Dispose on underlying - - - - - Gets the service object of the specified type. - - - A service object of type serviceType. - - An object that specifies the type of service object to get. - - - - Gets the service object of the specified type. - - - A service object of type serviceType. - - - - - Registers a subcontainer. The components exposed - by this container will be accessible from subcontainers. - - - - - - Registers a facility within the kernel. - - - - - - - Creates and adds an facility to the container. - - The facility type. - - - - - - Creates and adds an facility to the container. - - The facility type. - - The callback for creation. - - - - - Creates and adds an facility to the container. - - The facility type. - - The callback for creation. - - - - - Creates and adds an facility to the container. - - The facility type. - - - - - Creates and adds an facility to the container. - - The facility type. - The callback for creation. - - - - - Creates and adds an facility to the container. - - The facility type. - The callback for creation. - - - - - Gets a child container instance by name. - - The container's name. - The child container instance or null - - - - Installs the components provided by the s - with the . - The component installers. - The container. - - - - - Registers the components described by the s - with the . - The component registrations. - The container. - - - - - Releases a component instance - - - - - - Removes (unregisters) a subcontainer. The components exposed by this container - will no longer be accessible to the child container. - - - - - - Returns a component instance by the service - - - - - - - - Returns a component instance by the service - - - - - - - - Returns a component instance by the key - - - - - - - - Returns a component instance by the key - - - - - - - - Returns a component instance by the service - - - - - - - Returns a component instance by the key - - - - - - - - Returns a component instance by the key - - - - - - - - - Returns a component instance by the key - - - - - - - - - Returns a component instance by the service - - - - - - - - Returns a component instance by the service - - - - - - - - Returns a component instance by the key - - - - - - - - Returns a component instance by the key - - - - - - - - Returns a component instance by the service - - - - - - - Returns a component instance by the key - - - - - - - Resolve all valid components that match this type. - - The service type - - - - Resolve all valid components that match this type. - The service type - Arguments to resolve the service - - - - - Resolve all valid components that match this type. - The service type - Arguments to resolve the service - - - - - Returns the inner instance of the MicroKernel - - - - - Gets the container's name - - - Only useful when child containers are being used - - The container's name. - - - - Gets or sets the parent container if this instance - is a sub container. - - - - - Implementation of that assumes ownership of the - wrapped . If this adapter is disposed, the underlying - is diposed as well. - - - - - Implementation of that does not assume ownership of the - wrapped . - - - - - Constructs an initial ContainerWrapper. - - The to adapt. - - - - Constructs an initial ContainerWrapper. - - The to adapt. - The parent . - - - - Adds the specified to the at the end of the list. - - The to add. - - - - Adds the specified to the at the end of the list, - and assigns a name to the component. - - The to add. - The unique, case-insensitive name to assign to the component, or null. - - - - Removes a component from the . - - The to remove - - - - Gets the service object of the specified type. - - The type of service. - An object implementing service, or null. - - - - Adds the specified service to the service container. - - The type of service to add. - The instance of the service to add. - - - - Adds the specified service to the service container. - - The type of service to add. - A callback object that is used to create the service. - - - - Adds the specified service to the service container, and optionally - promotes the service to any parent service containers. - - The type of service to add. - The instance of the service to add. - true to promote this request to any parent service containers. - - - - Adds the specified service to the service container, and optionally - promotes the service to parent service containers. - - The type of service to add. - A callback object that is used to create the service. - true to promote this request to any parent service containers. - - - - Removes the specified service type from the service container. - - The type of service to remove. - - - - Removes the specified service type from the service container, - and optionally promotes the service to parent service containers. - - The type of service to remove. - true to promote this request to any parent service containers. - - - - Determines if the service type represents an intrinsic service. - - The type of service to remove. - true if the service type is an intrinsic service. - - - - Determines if the specified service type exists in the service container. - - The type of service to remove. - true if the service type exists. - - - - Releases the resources used by the component. - - - - - Releases the resources used by the component. - - true if disposing. - - - - Gets or sets the associated with the . - - - - - Event that notifies the disposal of the . - - - - - Gets all the components in the . - - - - - Gets the adapted - - - - - Constructs a default ContainerAdapter. - - - - - Constructs a chained ContainerAdapter. - - The parent . - - - - Constructs an initial ContainerAdapter. - - The to adapt. - - - - Constructs an initial ContainerAdapter. - - The to adapt. - The parent . - -
-
diff --git a/Redist/Castle/Castle.Windsor.dll b/Redist/Castle/Castle.Windsor.dll deleted file mode 100644 index 6a85bd24d..000000000 Binary files a/Redist/Castle/Castle.Windsor.dll and /dev/null differ diff --git a/Redist/IBM/IBM.Data.DB2.dll b/Redist/IBM/IBM.Data.DB2.dll index f4d0623b1..09657a451 100644 Binary files a/Redist/IBM/IBM.Data.DB2.dll and b/Redist/IBM/IBM.Data.DB2.dll differ diff --git a/Redist/IBM/IBM.Data.Informix.dll b/Redist/IBM/IBM.Data.Informix.dll index a1a661f56..5ed7ae36f 100644 Binary files a/Redist/IBM/IBM.Data.Informix.dll and b/Redist/IBM/IBM.Data.Informix.dll differ diff --git a/Redist/Oracle/Oracle.DataAccess.dll b/Redist/Oracle/Oracle.DataAccess.dll deleted file mode 100644 index 24c4b294b..000000000 Binary files a/Redist/Oracle/Oracle.DataAccess.dll and /dev/null differ diff --git a/Redist/Oracle/url.txt b/Redist/Oracle/url.txt deleted file mode 100644 index 132dfe32b..000000000 --- a/Redist/Oracle/url.txt +++ /dev/null @@ -1,4 +0,0 @@ -http://download-llnw.oracle.com/otn/nt/oracle11g/111070/11107_w2k8_x64_production_client.zip - -Managed ODP.NET data provider -http://download.oracle.com/otn/other/ole-oo4o/ODP.NET_Managed_1120350_Beta.zip \ No newline at end of file diff --git a/Redist/Oracle/x64/Oracle.DataAccess.dll b/Redist/Oracle/x64/Oracle.DataAccess.dll new file mode 100644 index 000000000..389947e01 Binary files /dev/null and b/Redist/Oracle/x64/Oracle.DataAccess.dll differ diff --git a/Source/Aspects/CacheAspect.cs b/Source/Aspects/CacheAspect.cs index ee82163d9..c84fef9f8 100644 --- a/Source/Aspects/CacheAspect.cs +++ b/Source/Aspects/CacheAspect.cs @@ -1,502 +1,535 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Reflection; -using System.Threading; - -namespace BLToolkit.Aspects -{ - using Common; - - public delegate bool IsCacheableParameterType(Type parameterType); - - /// - /// http://www.bltoolkit.net/Doc/Aspects/index.htm - /// - [System.Diagnostics.DebuggerStepThrough] - public class CacheAspect : Interceptor - { - #region Init - - static CacheAspect() - { - MaxCacheTime = int.MaxValue; - IsEnabled = true; - - CleanupThread.Init(); - } - - public CacheAspect() - { - _registeredAspects.Add(this); - } - - private MethodInfo _methodInfo; - private int? _instanceMaxCacheTime; - private bool? _instanceIsWeak; - - public override void Init(CallMethodInfo info, string configString) - { - base.Init(info, configString); - - info.CacheAspect = this; - - _methodInfo = info.MethodInfo; - - var ps = configString.Split(';'); - - foreach (var p in ps) - { - var vs = p.Split('='); - - if (vs.Length == 2) - { - switch (vs[0].ToLower().Trim()) - { - case "maxcachetime": _instanceMaxCacheTime = int. Parse(vs[1].Trim()); break; - case "isweak": _instanceIsWeak = bool.Parse(vs[1].Trim()); break; - } - } - } - } - - private static readonly IList _registeredAspects = ArrayList.Synchronized(new ArrayList()); - private static IList RegisteredAspects - { - get { return _registeredAspects; } - } - - public static CacheAspect GetAspect(MethodInfo methodInfo) - { - lock (RegisteredAspects.SyncRoot) - foreach (CacheAspect aspect in RegisteredAspects) - if (aspect._methodInfo == methodInfo) - return aspect; - - return null; - } - - #endregion - - #region Overrides - - protected override void BeforeCall(InterceptCallInfo info) - { - if (!IsEnabled) - return; - - var cache = Cache; - - lock (cache.SyncRoot) - { - var key = GetKey(info); - var item = GetItem(cache, key); - - if (item != null && !item.IsExpired) - { - info.InterceptResult = InterceptResult.Return; - info.ReturnValue = item.ReturnValue; - - if (item.RefValues != null) - { - var pis = info.CallMethodInfo.Parameters; - var n = 0; - - for (var i = 0; i < pis.Length; i++) - if (pis[i].ParameterType.IsByRef) - info.ParameterValues[i] = item.RefValues[n++]; - } - - info.Cached = true; - } - else - { - info.Items["CacheKey"] = key; - } - } - } - - protected override void AfterCall(InterceptCallInfo info) - { - if (!IsEnabled) - return; - - var cache = Cache; - - lock (cache.SyncRoot) - { - var key = (CompoundValue)info.Items["CacheKey"]; - - if (key == null) - return; - - var maxCacheTime = _instanceMaxCacheTime ?? MaxCacheTime; - var isWeak = _instanceIsWeak ?? IsWeak; - - var item = new CacheAspectItem - { - ReturnValue = info.ReturnValue, - MaxCacheTime = maxCacheTime == int.MaxValue || maxCacheTime < 0 ? - DateTime.MaxValue : - DateTime.Now.AddMilliseconds(maxCacheTime), - }; - - var pis = info.CallMethodInfo.Parameters; - var n = 0; - - foreach (var pi in pis) - if (pi.ParameterType.IsByRef) - n++; - - if (n > 0) - { - item.RefValues = new object[n]; - - n = 0; - - for (var i = 0; i < pis.Length; i++) - if (pis[i].ParameterType.IsByRef) - item.RefValues[n++] = info.ParameterValues[i]; - } - - cache[key] = isWeak? (object)new WeakReference(item): item; - } - } - - #endregion - - #region Global Parameters - - public static bool IsEnabled { get; set; } - public static int MaxCacheTime { get; set; } - public static bool IsWeak { get; set; } - - #endregion - - #region IsCacheableParameterType - - private static IsCacheableParameterType _isCacheableParameterType = - IsCacheableParameterTypeInternal; - - public static IsCacheableParameterType IsCacheableParameterType - { - get { return _isCacheableParameterType; } - set { _isCacheableParameterType = value ?? IsCacheableParameterTypeInternal; } - } - - private static bool IsCacheableParameterTypeInternal(Type parameterType) - { - return parameterType.IsValueType || parameterType == typeof(string); - } - - #endregion - - #region Cache - - private IDictionary _cache; - public IDictionary Cache - { - get { return _cache ?? (_cache = CreateCache()); } - } - - protected virtual CacheAspectItem CreateCacheItem(InterceptCallInfo info) - { - return new CacheAspectItem(); - } - - protected virtual IDictionary CreateCache() - { - return Hashtable.Synchronized(new Hashtable()); - } - - protected static CompoundValue GetKey(InterceptCallInfo info) - { - var parInfo = info.CallMethodInfo.Parameters; - var parValues = info.ParameterValues; - var keyValues = new object[parValues.Length]; - var cacheParams = info.CallMethodInfo.CacheableParameters; - - if (cacheParams == null) - { - info.CallMethodInfo.CacheableParameters = cacheParams = new bool[parInfo.Length]; - - for (var i = 0; i < parInfo.Length; i++) - cacheParams[i] = IsCacheableParameterType(parInfo[i].ParameterType); - } - - for (var i = 0; i < parValues.Length; i++) - keyValues[i] = cacheParams[i] ? parValues[i] : null; - - return new CompoundValue(keyValues); - } - - protected static CacheAspectItem GetItem(IDictionary cache, CompoundValue key) - { - var obj = cache[key]; - - if (obj == null) - return null; - - var wr = obj as WeakReference; - - if (wr == null) - return (CacheAspectItem)obj; - - obj = wr.Target; - - if (obj != null) - return (CacheAspectItem)obj; - - cache.Remove(key); - - return null; - } - - /// - /// Clear a method call cache. - /// - /// The representing cached method. - public static void ClearCache(MethodInfo methodInfo) - { - if (methodInfo == null) - throw new ArgumentNullException("methodInfo"); - - var aspect = GetAspect(methodInfo); - - if (aspect != null) - CleanupThread.ClearCache(aspect.Cache); - } - - /// - /// Clear a method call cache. - /// - /// The method declaring type. - /// The method name. - /// An array of objects representing - /// the number, order, and type of the parameters for the method to get.-or- - /// An empty array of the type (for example, ) - /// to get a method that takes no parameters. - public static void ClearCache(Type declaringType, string methodName, params Type[] types) - { - ClearCache(GetMethodInfo(declaringType, methodName, types)); - } - - public static void ClearCache(Type declaringType) - { - if (declaringType == null) - throw new ArgumentNullException("declaringType"); - - if (declaringType.IsAbstract) - declaringType = TypeBuilder.TypeFactory.GetType(declaringType); - - lock (RegisteredAspects.SyncRoot) - foreach (CacheAspect aspect in RegisteredAspects) - if (aspect._methodInfo.DeclaringType == declaringType) - CleanupThread.ClearCache(aspect.Cache); - } - - public static MethodInfo GetMethodInfo(Type declaringType, string methodName, params Type[] parameterTypes) - { - if (declaringType == null) - throw new ArgumentNullException("declaringType"); - - if (declaringType.IsAbstract) - declaringType = TypeBuilder.TypeFactory.GetType(declaringType); - - if (parameterTypes == null) - parameterTypes = Type.EmptyTypes; - - var methodInfo = declaringType.GetMethod( - methodName, - BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, - null, - parameterTypes, - null); - - if (methodInfo == null) - { - methodInfo = declaringType.GetMethod( - methodName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - - if (methodInfo == null) - throw new ArgumentException(string.Format("Method '{0}.{1}' not found.", - declaringType.FullName, methodName)); - } - - return methodInfo; - } - - /// - /// Clear all cached method calls. - /// - public static void ClearCache() - { - CleanupThread.ClearCache(); - } - - #endregion - - #region Cleanup Thread - - public class CleanupThread - { - private CleanupThread() {} - - internal static void Init() - { - AppDomain.CurrentDomain.DomainUnload += CurrentDomain_DomainUnload; - Start(); - } - - static void CurrentDomain_DomainUnload(object sender, EventArgs e) - { - Stop(); - } - - static volatile Timer _timer; - static readonly object _syncTimer = new object(); - - private static void Start() - { - if (_timer == null) - lock (_syncTimer) - if (_timer == null) - { - var interval = TimeSpan.FromSeconds(10); - _timer = new Timer(Cleanup, null, interval, interval); - } - } - - private static void Stop() - { - if (_timer != null) - lock (_syncTimer) - if (_timer != null) - { - _timer.Dispose(); - _timer = null; - } - } - - private static void Cleanup(object state) - { - if (!Monitor.TryEnter(RegisteredAspects.SyncRoot, 10)) - { - // The Cache is busy, skip this turn. - // - return; - } - - var start = DateTime.Now; - var objectsInCache = 0; - - try - { - _workTimes++; - - var list = new List(); - - foreach (CacheAspect aspect in RegisteredAspects) - { - var cache = aspect.Cache; - - lock (cache.SyncRoot) - { - foreach (DictionaryEntry de in cache) - { - var wr = de.Value as WeakReference; - - bool isExpired; - - if (wr != null) - { - var ca = wr.Target as CacheAspectItem; - - isExpired = ca == null || ca.IsExpired; - } - else - { - isExpired = ((CacheAspectItem)de.Value).IsExpired; - } - - if (isExpired) - list.Add(de); - } - - foreach (var de in list) - { - cache.Remove(de.Key); - _objectsExpired++; - } - - list.Clear(); - - objectsInCache += cache.Count; - } - } - - _objectsInCache = objectsInCache; - } - finally - { - _workTime += DateTime.Now - start; - - Monitor.Exit(RegisteredAspects.SyncRoot); - } - } - - private static int _workTimes; - public static int WorkTimes - { - get { return _workTimes; } - } - - private static TimeSpan _workTime; - public static TimeSpan WorkTime - { - get { return _workTime; } - } - - private static int _objectsExpired; - public static int ObjectsExpired - { - get { return _objectsExpired; } - } - - private static int _objectsInCache; - public static int ObjectsInCache - { - get { return _objectsInCache; } - } - - public static void UnregisterCache(IDictionary cache) - { - lock (RegisteredAspects.SyncRoot) - RegisteredAspects.Remove(cache); - } - - public static void ClearCache(IDictionary cache) - { - lock (RegisteredAspects.SyncRoot) lock (cache.SyncRoot) - { - _objectsExpired += cache.Count; - cache.Clear(); - } - } - - public static void ClearCache() - { - lock (RegisteredAspects.SyncRoot) - { - foreach (CacheAspect aspect in RegisteredAspects) - { - _objectsExpired += aspect.Cache.Count; - aspect.Cache.Clear(); - } - } - } - } - - #endregion - } -} +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using System.Threading; + +namespace BLToolkit.Aspects +{ + using Common; + + public delegate bool IsCacheableParameterType(Type parameterType); + + /// + /// http://www.bltoolkit.net/Doc/Aspects/index.htm + /// + [System.Diagnostics.DebuggerStepThrough] + public class CacheAspect : Interceptor + { + #region Init + + static CacheAspect() + { + MaxCacheTime = int.MaxValue; + IsEnabled = true; + + CleanupThread.Init(); + } + + public CacheAspect() + { + _registeredAspects.Add(this); + } + + private MethodInfo _methodInfo; + private int? _instanceMaxCacheTime; + private bool? _instanceIsWeak; + + public override void Init(CallMethodInfo info, string configString) + { + base.Init(info, configString); + + info.CacheAspect = this; + + _methodInfo = info.MethodInfo; + + var ps = configString.Split(';'); + + foreach (var p in ps) + { + var vs = p.Split('='); + + if (vs.Length == 2) + { + switch (vs[0].ToLower().Trim()) + { + case "maxcachetime": _instanceMaxCacheTime = int. Parse(vs[1].Trim()); break; + case "isweak": _instanceIsWeak = bool.Parse(vs[1].Trim()); break; + } + } + } + } + + private static readonly IList _registeredAspects = ArrayList.Synchronized(new ArrayList()); + protected static IList RegisteredAspects + { + get { return _registeredAspects; } + } + + public static CacheAspect GetAspect(MethodInfo methodInfo) + { + lock (RegisteredAspects.SyncRoot) + foreach (CacheAspect aspect in RegisteredAspects) + if (aspect._methodInfo == methodInfo) + return aspect; + + return null; + } + + #endregion + + #region Overrides + + protected override void BeforeCall(InterceptCallInfo info) + { + if (!IsEnabled) + return; + + var cache = Cache; + + lock (cache.SyncRoot) + { + var key = GetKey(info); + var item = GetItem(cache, key); + + if (item != null && !item.IsExpired) + { + info.InterceptResult = InterceptResult.Return; + info.ReturnValue = item.ReturnValue; + + if (item.RefValues != null) + { + var pis = info.CallMethodInfo.Parameters; + var n = 0; + + for (var i = 0; i < pis.Length; i++) + if (pis[i].ParameterType.IsByRef) + info.ParameterValues[i] = item.RefValues[n++]; + } + + info.Cached = true; + } + else + { + info.Items["CacheKey"] = key; + } + } + } + + protected override void AfterCall(InterceptCallInfo info) + { + if (!IsEnabled) + return; + + var cache = Cache; + + lock (cache.SyncRoot) + { + var key = (CompoundValue)info.Items["CacheKey"]; + + if (key == null) + return; + + var maxCacheTime = _instanceMaxCacheTime ?? MaxCacheTime; + var isWeak = _instanceIsWeak ?? IsWeak; + + var item = new CacheAspectItem + { + ReturnValue = info.ReturnValue, + MaxCacheTime = maxCacheTime == int.MaxValue || maxCacheTime < 0 ? + DateTime.MaxValue : + DateTime.Now.AddMilliseconds(maxCacheTime), + }; + + var pis = info.CallMethodInfo.Parameters; + var n = 0; + + foreach (var pi in pis) + if (pi.ParameterType.IsByRef) + n++; + + if (n > 0) + { + item.RefValues = new object[n]; + + n = 0; + + for (var i = 0; i < pis.Length; i++) + if (pis[i].ParameterType.IsByRef) + item.RefValues[n++] = info.ParameterValues[i]; + } + + cache[key] = isWeak? (object)new WeakReference(item): item; + } + } + + #endregion + + #region Global Parameters + + public static bool IsEnabled { get; set; } + public static int MaxCacheTime { get; set; } + public static bool IsWeak { get; set; } + + #endregion + + #region IsCacheableParameterType + + private static IsCacheableParameterType _isCacheableParameterType = + IsCacheableParameterTypeInternal; + + public static IsCacheableParameterType IsCacheableParameterType + { + get { return _isCacheableParameterType; } + set { _isCacheableParameterType = value ?? IsCacheableParameterTypeInternal; } + } + + private static bool IsCacheableParameterTypeInternal(Type parameterType) + { + return parameterType.IsValueType || parameterType == typeof(string); + } + + #endregion + + #region Cache + + private IDictionary _cache; + public IDictionary Cache + { + get { return _cache ?? (_cache = CreateCache()); } + } + + protected virtual CacheAspectItem CreateCacheItem(InterceptCallInfo info) + { + return new CacheAspectItem(); + } + + protected virtual IDictionary CreateCache() + { + return Hashtable.Synchronized(new Hashtable()); + } + + protected static CompoundValue GetKey(InterceptCallInfo info) + { + var parInfo = info.CallMethodInfo.Parameters; + var parValues = info.ParameterValues; + var keyValues = new object[parValues.Length]; + var cacheParams = info.CallMethodInfo.CacheableParameters; + + if (cacheParams == null) + { + info.CallMethodInfo.CacheableParameters = cacheParams = new bool[parInfo.Length]; + + for (var i = 0; i < parInfo.Length; i++) + cacheParams[i] = IsCacheableParameterType(parInfo[i].ParameterType); + } + + for (var i = 0; i < parValues.Length; i++) + keyValues[i] = cacheParams[i] ? parValues[i] : null; + + return new CompoundValue(keyValues); + } + + protected static CacheAspectItem GetItem(IDictionary cache, CompoundValue key) + { + var obj = cache[key]; + + if (obj == null) + return null; + + var wr = obj as WeakReference; + + if (wr == null) + return (CacheAspectItem)obj; + + obj = wr.Target; + + if (obj != null) + return (CacheAspectItem)obj; + + cache.Remove(key); + + return null; + } + + /// + /// Clear a method call cache. + /// + /// The representing cached method. + public static void ClearCache(MethodInfo methodInfo) + { + if (methodInfo == null) + throw new ArgumentNullException("methodInfo"); + + var aspect = GetAspect(methodInfo); + + if (aspect != null) + CleanupThread.ClearCache(aspect.Cache); + } + + /// + /// Clear a method call cache. + /// + /// The method declaring type. + /// The method name. + /// An array of objects representing + /// the number, order, and type of the parameters for the method to get.-or- + /// An empty array of the type (for example, ) + /// to get a method that takes no parameters. + public static void ClearCache(Type declaringType, string methodName, params Type[] types) + { + ClearCache(GetMethodInfo(declaringType, methodName, types)); + } + + /// + /// Clear a method call cache. + /// + /// The method declaring type. + /// The method name. + /// An array of objects representing + /// the number, order, and type of the parameters for the method to get.-or- + /// An empty array of the type (for example, ) + /// to get a method that takes no parameters. + /// An array of values of the parameters for the method to get + public static void ClearCache(Type declaringType, string methodName, Type[] types, object[] values) + { + var methodInfo = GetMethodInfo(declaringType, methodName, types); + + if (methodInfo == null) + throw new ArgumentNullException("methodInfo"); + + var aspect = GetAspect(methodInfo); + + if (aspect != null) + CleanupThread.ClearCache(aspect.Cache, new CompoundValue(values)); + } + + public static void ClearCache(Type declaringType) + { + if (declaringType == null) + throw new ArgumentNullException("declaringType"); + + if (declaringType.IsAbstract) + declaringType = TypeBuilder.TypeFactory.GetType(declaringType); + + lock (RegisteredAspects.SyncRoot) + foreach (CacheAspect aspect in RegisteredAspects) + if (aspect._methodInfo.DeclaringType == declaringType) + CleanupThread.ClearCache(aspect.Cache); + } + + public static MethodInfo GetMethodInfo(Type declaringType, string methodName, params Type[] parameterTypes) + { + if (declaringType == null) + throw new ArgumentNullException("declaringType"); + + if (declaringType.IsAbstract) + declaringType = TypeBuilder.TypeFactory.GetType(declaringType); + + if (parameterTypes == null) + parameterTypes = Type.EmptyTypes; + + var methodInfo = declaringType.GetMethod( + methodName, + BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, + null, + parameterTypes, + null); + + if (methodInfo == null) + { + methodInfo = declaringType.GetMethod( + methodName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + + if (methodInfo == null) + throw new ArgumentException(string.Format("Method '{0}.{1}' not found.", + declaringType.FullName, methodName)); + } + + return methodInfo; + } + + /// + /// Clear all cached method calls. + /// + public static void ClearCache() + { + CleanupThread.ClearCache(); + } + + #endregion + + #region Cleanup Thread + + public class CleanupThread + { + private CleanupThread() {} + + internal static void Init() + { + AppDomain.CurrentDomain.DomainUnload += CurrentDomain_DomainUnload; + Start(); + } + + static void CurrentDomain_DomainUnload(object sender, EventArgs e) + { + Stop(); + } + + static volatile Timer _timer; + static readonly object _syncTimer = new object(); + + private static void Start() + { + if (_timer == null) + lock (_syncTimer) + if (_timer == null) + { + var interval = TimeSpan.FromSeconds(10); + _timer = new Timer(Cleanup, null, interval, interval); + } + } + + private static void Stop() + { + if (_timer != null) + lock (_syncTimer) + if (_timer != null) + { + _timer.Dispose(); + _timer = null; + } + } + + private static void Cleanup(object state) + { + if (!Monitor.TryEnter(RegisteredAspects.SyncRoot, 10)) + { + // The Cache is busy, skip this turn. + // + return; + } + + var start = DateTime.Now; + var objectsInCache = 0; + + try + { + _workTimes++; + + var list = new List(); + + foreach (CacheAspect aspect in RegisteredAspects) + { + var cache = aspect.Cache; + + lock (cache.SyncRoot) + { + foreach (DictionaryEntry de in cache) + { + var wr = de.Value as WeakReference; + + bool isExpired; + + if (wr != null) + { + var ca = wr.Target as CacheAspectItem; + + isExpired = ca == null || ca.IsExpired; + } + else + { + isExpired = ((CacheAspectItem)de.Value).IsExpired; + } + + if (isExpired) + list.Add(de); + } + + foreach (var de in list) + { + cache.Remove(de.Key); + _objectsExpired++; + } + + list.Clear(); + + objectsInCache += cache.Count; + } + } + + _objectsInCache = objectsInCache; + } + finally + { + _workTime += DateTime.Now - start; + + Monitor.Exit(RegisteredAspects.SyncRoot); + } + } + + private static int _workTimes; + public static int WorkTimes + { + get { return _workTimes; } + } + + private static TimeSpan _workTime; + public static TimeSpan WorkTime + { + get { return _workTime; } + } + + private static int _objectsExpired; + public static int ObjectsExpired + { + get { return _objectsExpired; } + } + + private static int _objectsInCache; + public static int ObjectsInCache + { + get { return _objectsInCache; } + } + + public static void UnregisterCache(IDictionary cache) + { + lock (RegisteredAspects.SyncRoot) + RegisteredAspects.Remove(cache); + } + + public static void ClearCache(IDictionary cache) + { + lock (RegisteredAspects.SyncRoot) lock (cache.SyncRoot) + { + _objectsExpired += cache.Count; + cache.Clear(); + } + } + + public static void ClearCache(IDictionary cache, CompoundValue key) + { + lock (RegisteredAspects.SyncRoot) + lock (cache.SyncRoot) + { + _objectsExpired += 1; + cache.Remove(key); + } + } + + public static void ClearCache() + { + lock (RegisteredAspects.SyncRoot) + { + foreach (CacheAspect aspect in RegisteredAspects) + { + _objectsExpired += aspect.Cache.Count; + aspect.Cache.Clear(); + } + } + } + } + + #endregion + } +} diff --git a/Source/Aspects/CounterAspect.cs b/Source/Aspects/CounterAspect.cs index 4786b5ed8..24eb4c5f5 100644 --- a/Source/Aspects/CounterAspect.cs +++ b/Source/Aspects/CounterAspect.cs @@ -16,8 +16,8 @@ public class CounterAspect : Interceptor public override void Init(CallMethodInfo info, string configString) { base.Init(info, configString); - - _counters.Add(_counter = CreateCounter(info) ?? CreateCounterInternal(info)); + + _counters.Add(_counter = CreateCounter(info) ?? CreateCounterInternal(info)); } private MethodCallCounter _counter; diff --git a/Source/BLToolkit.3.csproj b/Source/BLToolkit.3.csproj index 4dde38157..4879fd0b6 100644 --- a/Source/BLToolkit.3.csproj +++ b/Source/BLToolkit.3.csproj @@ -135,7 +135,12 @@ Convert.tt + + + + + @@ -198,8 +203,12 @@ + + + + True diff --git a/Source/BLToolkit.4.csproj b/Source/BLToolkit.4.csproj index 5cb388911..6a584459e 100644 --- a/Source/BLToolkit.4.csproj +++ b/Source/BLToolkit.4.csproj @@ -172,6 +172,9 @@ DataProviderBase.cs + + DataProviderBase.cs + @@ -196,17 +199,32 @@ + - + + + + + + + + + + + + Component + + + @@ -242,6 +260,9 @@ + + + @@ -278,7 +299,7 @@ - + @@ -337,7 +358,17 @@ + + + + + + + + + + @@ -346,6 +377,11 @@ True MemberMapper.tt + + + + + @@ -512,6 +548,8 @@ + + diff --git a/Source/BLToolkit.CP.4.csproj b/Source/BLToolkit.CP.4.csproj index b22a23c0f..125270a05 100644 --- a/Source/BLToolkit.CP.4.csproj +++ b/Source/BLToolkit.CP.4.csproj @@ -195,14 +195,29 @@ + + + + + + + + + + + + Component + + + @@ -236,8 +251,12 @@ + + + + @@ -274,7 +293,6 @@ - @@ -333,6 +351,7 @@ + @@ -492,6 +511,8 @@ + + diff --git a/Source/BLToolkit.Data.4.csproj b/Source/BLToolkit.Data.4.csproj index 22a8f36fd..897d6a281 100644 --- a/Source/BLToolkit.Data.4.csproj +++ b/Source/BLToolkit.Data.4.csproj @@ -256,14 +256,29 @@ + + + + + + + + + + + + Component + + + @@ -297,8 +312,12 @@ + + + + @@ -335,7 +354,6 @@ - @@ -394,6 +412,7 @@ + diff --git a/Source/BLToolkit.SL.4.csproj b/Source/BLToolkit.SL.4.csproj index ece0fa23a..52b020a54 100644 --- a/Source/BLToolkit.SL.4.csproj +++ b/Source/BLToolkit.SL.4.csproj @@ -111,6 +111,7 @@ + @@ -118,6 +119,7 @@ + @@ -177,7 +179,7 @@ - + @@ -227,6 +229,7 @@ + @@ -240,6 +243,7 @@ + @@ -254,6 +258,7 @@ + diff --git a/Source/BLToolkit.mono.csproj b/Source/BLToolkit.mono.csproj index d06b1c493..cc71dc941 100644 --- a/Source/BLToolkit.mono.csproj +++ b/Source/BLToolkit.mono.csproj @@ -159,9 +159,13 @@ + + + + @@ -170,6 +174,7 @@ + @@ -199,6 +204,7 @@ + diff --git a/Source/Common/CompatibilitySL.cs b/Source/Common/CompatibilitySL.cs index 6c72332d5..78a766a89 100644 --- a/Source/Common/CompatibilitySL.cs +++ b/Source/Common/CompatibilitySL.cs @@ -3,7 +3,6 @@ using System.Linq; using System.Runtime.InteropServices; using System.Runtime.Serialization; -using System.Security.Permissions; using System.Text; using JetBrains.Annotations; @@ -297,10 +296,10 @@ public override string ToString() private bool EqualsTo(Binary binary) { - if ((object)this == (object)binary) return true; - if ((object)binary == null) return false; - if (_bytes.Length != binary._bytes.Length) return false; - if (_hashCode != binary._hashCode) return false; + if ((object)this == (object)binary) return true; + if ((object)binary == null) return false; + if (_bytes.Length != binary._bytes.Length) return false; + if (_hashCode != binary._hashCode) return false; for (int i = 0; i < _bytes.Length; i++) if (_bytes[i] != binary._bytes[i]) diff --git a/Source/Common/Configuration.cs b/Source/Common/Configuration.cs index fb44aec94..8ba546337 100644 --- a/Source/Common/Configuration.cs +++ b/Source/Common/Configuration.cs @@ -6,19 +6,22 @@ namespace BLToolkit.Common public static class Configuration { + static Configuration() + { + NotifyOnEqualSet = true; + TrimDictionaryKey = true; + CheckNullReturnIfNull = NullEquivalent.DBNull; + OpenNewConnectionToDiscoverParameters = true; + } + public enum NullEquivalent { DBNull, Null, Value } - private static NullEquivalent _checkNullReturnIfNull = NullEquivalent.DBNull; /// /// Specifies what value should be returned by TypeAccessor.CheckNull /// if was specified and interpreted current property /// value as null. Default is: . /// - public static NullEquivalent CheckNullReturnIfNull - { - get { return _checkNullReturnIfNull; } - set { _checkNullReturnIfNull = value; } - } + public static NullEquivalent CheckNullReturnIfNull { get; set; } /// /// Controls global trimming behaviour of mapper. Specifies whether trailing spaces @@ -27,29 +30,19 @@ public static NullEquivalent CheckNullReturnIfNull /// public static bool TrimOnMapping { get; set; } - private static bool _trimDictionaryKey = true; /// /// Controls global trimming behaviour of mapper for dictionary keys. Specifies whether trailing spaces /// should be trimmed when adding keys to dictionaries. Default is: true. /// - public static bool TrimDictionaryKey - { - get { return _trimDictionaryKey; } - set { _trimDictionaryKey = value; } - } + public static bool TrimDictionaryKey { get; set; } - private static bool _notifyOnEqualSet = true; /// /// Specifies default behavior for PropertyChange generation. If set to true, /// is invoked even when current value is same as new one. If set to false, /// is invoked only when new value is being assigned. To specify notification behaviour other than default, please see /// /// - public static bool NotifyOnEqualSet - { - get { return _notifyOnEqualSet; } - set { _notifyOnEqualSet = value; } - } + public static bool NotifyOnEqualSet { get; set; } /// /// Controls whether attributes specified on base types should be always added to list of attributes @@ -61,7 +54,6 @@ public static bool NotifyOnEqualSet /// public static bool FilterOutBaseEqualAttributes { get; set; } - private static bool _openNewConnectionToDiscoverParameters = true; /// /// Controls whether attributes specified on base types should be always added to list of attributes /// when scanning hierarchy tree or they should be compared to attributes found on derived classes @@ -70,10 +62,11 @@ public static bool NotifyOnEqualSet /// use only when side effects are noticed with attribute being present on derived and base classes. /// For builder attributes use provided attribute compatibility mechanism. /// - public static bool OpenNewConnectionToDiscoverParameters + public static bool OpenNewConnectionToDiscoverParameters { get; set; } + + public static class ExpressionMapper { - get { return _openNewConnectionToDiscoverParameters; } - set { _openNewConnectionToDiscoverParameters = value; } + public static bool IncludeComplexMapping { get; set; } } public static class Linq diff --git a/Source/Data/DataException.cs b/Source/Data/DataException.cs index f55d83740..cf31edbf6 100644 --- a/Source/Data/DataException.cs +++ b/Source/Data/DataException.cs @@ -119,6 +119,16 @@ public int? Number } } + public DataExceptionType DataExceptionType + { + get + { + if (_dbManager == null || Number == null) + return DataExceptionType.Undefined; + return _dbManager.DataProvider.ConvertErrorNumberToDataExceptionType(Number.Value); + } + } + #endregion } } diff --git a/Source/Data/DataExceptionType.cs b/Source/Data/DataExceptionType.cs new file mode 100644 index 000000000..cd287e4ff --- /dev/null +++ b/Source/Data/DataExceptionType.cs @@ -0,0 +1,14 @@ +using System; + +namespace BLToolkit.Data +{ + public enum DataExceptionType + { + Undefined, + Deadlock, + Timeout, + ForeignKeyViolation, + UniqueIndexViolation, + ConstraintViolation, + } +} diff --git a/Source/Data/DataProvider/DB2DataProvider.cs b/Source/Data/DataProvider/DB2DataProvider.cs index 61c64b3d7..d296b22b9 100644 --- a/Source/Data/DataProvider/DB2DataProvider.cs +++ b/Source/Data/DataProvider/DB2DataProvider.cs @@ -8,7 +8,7 @@ namespace BLToolkit.Data.DataProvider { using Sql.SqlProvider; - class DB2DataProvider : DataProviderBase + public class DB2DataProvider : DataProviderBase { public override IDbConnection CreateConnectionObject () { return new DB2Connection (); } public override DbDataAdapter CreateDataAdapterObject() { return new DB2DataAdapter(); } @@ -16,7 +16,6 @@ class DB2DataProvider : DataProviderBase public override Type ConnectionType { get { return typeof(DB2Connection); } } public override string Name { get { return DataProvider.ProviderName.DB2; } } - public override string EndOfSql { get { return ";"; } } public override bool DeriveParameters(IDbCommand command) { @@ -67,5 +66,21 @@ public override void PrepareCommand(ref CommandType commandType, ref string comm } } } + + /* + public override int ExecuteArray(IDbCommand command, int iterations) + { + var cmd = (DB2Command)command; + try + { + cmd.ArrayBindCount = iterations; + return cmd.ExecuteNonQuery(); + } + finally + { + cmd.ArrayBindCount = 0; + } + } + */ } } diff --git a/Source/Data/DataProvider/DataProviderBase.cs b/Source/Data/DataProvider/DataProviderBase.cs index 6b3d9a423..8acf77382 100644 --- a/Source/Data/DataProvider/DataProviderBase.cs +++ b/Source/Data/DataProvider/DataProviderBase.cs @@ -3,8 +3,7 @@ using System.Data; using System.Data.Common; using System.Data.Linq; -using BLToolkit.Data.Linq; -using BLToolkit.Data.Sql; +using System.Linq; namespace BLToolkit.Data.DataProvider { @@ -173,21 +172,26 @@ public virtual bool InitParameter(IDbDataParameter parameter) #region Virtual Members - /// - /// Open an into the given RefCursor object - /// - /// The refcursor to open an to - /// The into the refcursor - public virtual IDataReader GetRefCursorDataReader(object refCursor) - { - throw new NotSupportedException("Operation not supported on this DataProvider"); - } + /// + /// Open an into the given RefCursor object + /// + /// The refcursor to open an to + /// The into the refcursor + public virtual IDataReader GetRefCursorDataReader(object refCursor) + { + throw new NotSupportedException("Operation not supported on this DataProvider"); + } public virtual object Convert(object value, ConvertType convertType) { return SqlProvider.Convert(value, convertType); } + public virtual DataExceptionType ConvertErrorNumberToDataExceptionType(int number) + { + return DataExceptionType.Undefined; + } + public virtual void InitDbManager(DbManager dbManager) { var schema = MappingSchema; @@ -228,6 +232,89 @@ public virtual bool CanReuseCommand(IDbCommand command, CommandType newCommandTy return true; } + public virtual int ExecuteArray(IDbCommand command, int iterations) + { + // save parameter values + var parameters = command.Parameters + .OfType() + .Select(param => new + { + Parameter = param, + Value = param.Value as Array + }) + .ToArray(); + + var outParameters = parameters + .Where(p => + p.Parameter.Direction == ParameterDirection.InputOutput || + p.Parameter.Direction == ParameterDirection.Output) + .ToArray(); + + // validate parameter values + foreach (var p in parameters) + { + if (p.Value == null) + { + throw new InvalidOperationException("ExecuteArray requires that all " + + "parameter values are arrays. Parameter name: " + p.Parameter.ParameterName); + } + + if (p.Value.GetLength(0) != iterations) + { + throw new InvalidOperationException("ExecuteArray requires that array sizes are " + + "equal to the number of iterations. Parameter name: " + p.Parameter.ParameterName); + } + } + + try + { + // run iterations + int rowsAffected = 0; + for (int iteration = 0; iteration < iterations; iteration++) + { + // copy input parameter values + foreach (var param in parameters) + { + SetParameterValue(param.Parameter, param.Value.GetValue(iteration)); + } + + rowsAffected += command.ExecuteNonQuery(); + + // return output parameter values + foreach (var param in outParameters) + { + var outputValue = param.Parameter.Value; + param.Value.SetValue(outputValue, iteration); + } + } + + return rowsAffected; + } + finally + { + // restore parameter values + foreach (var param in parameters) + { + param.Parameter.Value = param.Value; + } + } + } + + public virtual string GetSequenceQuery(string sequenceName) + { + return null; + } + + public virtual string NextSequenceQuery(string sequenceName) + { + return null; + } + + public virtual string GetReturningInto(string columnName) + { + return null; + } + public virtual void SetParameterValue(IDbDataParameter parameter, object value) { if (value is System.Data.Linq.Binary) @@ -255,6 +342,11 @@ public virtual IDataReader GetDataReader(MappingSchema schema, IDataReader dataR return dataReader; } + public virtual IDataReader GetDataReader(IDbCommand command, CommandBehavior commandBehavior) + { + return command.ExecuteReader(commandBehavior); + } + public virtual bool ParameterNamesEqual(string paramName1, string paramName2) { // default implementation is case-insensitive, because if we make it @@ -304,11 +396,21 @@ public void Dispose() #endregion #region Implementation of IDataRecord - + public string GetName (int i) { return DataReader.GetName (i); } public string GetDataTypeName(int i) { return DataReader.GetDataTypeName(i); } public Type GetFieldType (int i) { return DataReader.GetFieldType (i); } - public object GetValue (int i) { return DataReader.GetValue (i); } + + /// + /// GetValue method is virtual since it can be overridden by some data provider + /// (For instance, OdbDataProvider uses special methodes for clob data fetching) + /// + /// + /// + public virtual object GetValue (int i) + { + return DataReader.GetValue (i); + } public int GetValues (object[] values) { return DataReader.GetValues (values); } public int GetOrdinal (string name) { return DataReader.GetOrdinal (name); } public bool GetBoolean (int i) { return DataReader.GetBoolean (i); } @@ -322,7 +424,10 @@ public void Dispose() public double GetDouble (int i) { return DataReader.GetDouble (i); } public string GetString (int i) { return DataReader.GetString (i); } public decimal GetDecimal (int i) { return DataReader.GetDecimal (i); } - public DateTime GetDateTime (int i) { return DataReader.GetDateTime (i); } + public DateTime GetDateTime (int i) + { + return DataReader.GetDateTime (i); + } public IDataReader GetData (int i) { return DataReader.GetData (i); } public bool IsDBNull (int i) { return DataReader.IsDBNull (i); } @@ -346,7 +451,10 @@ public long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, i #region Implementation of IDataReader public void Close () { DataReader.Close (); } - public DataTable GetSchemaTable() { return DataReader.GetSchemaTable(); } + public DataTable GetSchemaTable() + { + return DataReader.GetSchemaTable(); + } public bool NextResult () { return DataReader.NextResult (); } public bool Read () { return DataReader.Read (); } public int Depth { get { return DataReader.Depth; } } @@ -373,19 +481,49 @@ protected DataReaderEx(T rd) : base(rd) #endregion #region InsertBatch + + public virtual int InsertBatchWithIdentity( + DbManager db, + string insertText, + IEnumerable collection, + MemberMapper[] members, + int maxBatchSize, + DbManager.ParameterProvider getParameters) + { + throw new NotImplementedException("Insert batch with identity is not implemented!"); + } public virtual int InsertBatch( - DbManager db, - string insertText, - IEnumerable collection, - MemberMapper[] members, - int maxBatchSize, - DbManager.ParameterProvider getParameters) + DbManager db, + string insertText, + IEnumerable collection, + MemberMapper[] members, + int maxBatchSize, + DbManager.ParameterProvider getParameters) { db.SetCommand(insertText); return db.ExecuteForEach(collection, members, maxBatchSize, getParameters); } #endregion + + protected int ExecuteSqlList(DbManager db, IEnumerable sqlList, List parameters) + { + var cnt = 0; + + foreach (string sql in sqlList) + { + cnt += db + .SetCommand(sql, parameters.Count > 0 ? parameters.ToArray() : null) + .ExecuteNonQuery(); + } + + return cnt; + } + + public virtual DbType GetParameterDbType(DbType dbType) + { + return dbType; + } } } diff --git a/Source/Data/DataProvider/DataProviderInterpreterBase.cs b/Source/Data/DataProvider/DataProviderInterpreterBase.cs new file mode 100644 index 000000000..191e2e249 --- /dev/null +++ b/Source/Data/DataProvider/DataProviderInterpreterBase.cs @@ -0,0 +1,68 @@ +#region + +using System.Collections.Generic; +using System.Data; +using System.Data.Linq; +using BLToolkit.Mapping; + +#endregion + +namespace BLToolkit.Data.DataProvider +{ + /// + /// BasicSqlProvider equivalent for the non-linq DAL + /// + public abstract class DataProviderInterpreterBase + { + public virtual void SetParameterValue(IDbDataParameter parameter, object value) + { + if (value is Binary) + { + var arr = ((Binary) value).ToArray(); + + parameter.Value = arr; + parameter.DbType = DbType.Binary; + parameter.Size = arr.Length; + } + else + parameter.Value = value; + } + + public virtual List GetInsertBatchSqlList( + string insertText, + IEnumerable collection, + MemberMapper[] members, + int maxBatchSize, + bool withIdentity, + DbManager db, + List parameters) + { + return new List(); + } + + public virtual string GetSequenceQuery(string sequenceName) + { + return null; + } + + public virtual DbType GetParameterDbType(DbType dbType) + { + return dbType; + } + + public virtual string NextSequenceQuery(string sequenceName) + { + return null; + } + + public virtual string GetReturningInto(string columnName) + { + return null; + } + + public abstract void SetCollectionIds( + DbManager db, + IEnumerable members, + IEnumerable collection); + } +} \ No newline at end of file diff --git a/Source/Data/DataProvider/EnumerableExtensions.cs b/Source/Data/DataProvider/EnumerableExtensions.cs new file mode 100644 index 000000000..ff73608a3 --- /dev/null +++ b/Source/Data/DataProvider/EnumerableExtensions.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using System.Linq; + +namespace BLToolkit.Data.DataProvider +{ + public static class EnumerableExtensions + { + public static IEnumerable> ToPages(this IEnumerable source, int pageSize) + { + var page = new List(pageSize); + foreach (var x in source) + { + page.Add(x); + if (page.Count < pageSize) continue; + + yield return page; + page = new List(pageSize); + } + + // Last page + if (page.Any()) + yield return page; + } + } +} \ No newline at end of file diff --git a/Source/Data/DataProvider/GenericDataProvider.cs b/Source/Data/DataProvider/GenericDataProvider.cs new file mode 100644 index 000000000..033ae2f8f --- /dev/null +++ b/Source/Data/DataProvider/GenericDataProvider.cs @@ -0,0 +1,220 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.Common; +using System.Transactions; +using BLToolkit.Data.DataProvider.Interpreters; +using BLToolkit.Data.Sql.SqlProvider; +using BLToolkit.Emit; + +namespace BLToolkit.Data.DataProvider +{ + /// + /// Creates an instance of a db provider for a specified provider name. + /// + public sealed class GenericDataProvider : DataProviderBase + { + private readonly string _providerName; + private readonly DbProviderFactory _factory; + private readonly DataProviderInterpreterBase _dataProviderInterpreter; + + public GenericDataProvider(string providerName) + { + _providerName = providerName; + using (new TransactionScope()) + { + _factory = DbProviderFactories.GetFactory(providerName); + } + + // When Provider is Oracle, we should call the OdpDataProvider typeTable mapping initialization + + switch (Name) + { + case ProviderFullName.Oracle: + case ProviderFullName.OracleNet: + _dataProviderInterpreter = new OracleDataProviderInterpreter(); + break; + case ProviderFullName.SQLite: + _dataProviderInterpreter = new SqliteDataProviderInterpreter(); + break; + default: + throw new Exception(string.Format("The sql provider {0} isnt supported in the DataProviderInterpreterBase", Name)); + } + } + + #region Overrides of DataProviderBase + + public override Type ConnectionType + { + get + { + var dbConnection = _factory.CreateConnection(); + if (dbConnection != null) + return dbConnection.GetType(); + return null; + } + } + + public override string Name + { + get { return _providerName; } + } + + public override IDbConnection CreateConnectionObject() + { + return _factory.CreateConnection(); + } + + public override DbDataAdapter CreateDataAdapterObject() + { + return _factory.CreateDataAdapter(); + } + + /// + /// Populates the specified IDbCommand object's Parameters collection with + /// parameter information for the stored procedure specified in the IDbCommand. + /// + public override bool DeriveParameters(IDbCommand command) + { + return false; + } + + public override ISqlProvider CreateSqlProvider() + { + switch (Name) + { + case ProviderFullName.OracleNet: + return new OracleSqlProvider(); + case ProviderFullName.SQLite: + return new SQLiteSqlProvider(); + case ProviderFullName.Oracle: + return new OracleSqlProvider(); + default: + throw new Exception(string.Format("The sql provider {0} isnt supported in the GenericDataProvider", Name)); + } + } + + private object _nVarchar2EnumValue; +#if !DATA + private SetHandler _oracleDbTypeSetHandler; +#endif + + public override void SetParameterValue(IDbDataParameter parameter, object value) + { + if (Name == ProviderFullName.Oracle) + { + if (value is string) + { + // We need NVarChar2 in order to insert UTF8 string values. The default Odp VarChar2 dbtype doesnt work + // with UTF8 values. Note : Microsoft oracle client uses NVarChar value by default. + + if (_nVarchar2EnumValue == null) + { + const string typeName = "Oracle.DataAccess.Client.OracleDbType"; + + var nvarCharType = parameter.GetType().Assembly.GetType(typeName); + var enumValue = Enum.Parse(nvarCharType, "NVarchar2"); + _nVarchar2EnumValue = enumValue; + +#if !DATA + _oracleDbTypeSetHandler = FunctionFactory.Il.CreateSetHandler(parameter.GetType(), "OracleDbType"); +#endif + } +#if !DATA + _oracleDbTypeSetHandler(parameter, _nVarchar2EnumValue); +#endif + } + } + + _dataProviderInterpreter.SetParameterValue(parameter, value); + } + + public override DbType GetParameterDbType(DbType dbType) + { + return _dataProviderInterpreter.GetParameterDbType(dbType); + } + + public override string GetSequenceQuery(string sequenceName) + { + return _dataProviderInterpreter.GetSequenceQuery(sequenceName); + } + + public override string NextSequenceQuery(string sequenceName) + { + return _dataProviderInterpreter.NextSequenceQuery(sequenceName); + } + + public override string GetReturningInto(string columnName) + { + return _dataProviderInterpreter.GetReturningInto(columnName); + } + + public override object Convert(object value, ConvertType convertType) + { + if (Name == ProviderFullName.Oracle) + { + switch (convertType) + { + case ConvertType.NameToQueryParameter: + var qname = (string) value; + + // + // Avoid "ORA-00972: identifier is too long" error + // Cause error : You tried to reference a table, cluster, view, index, synonym, tablespace, or username with a value that was longer than 30 characters. + // Resolution : Names for tables, clusters, views, indexes, synonyms, tablespaces, and usernames must be 30 characters or less. + // You must shorten the name to no more than 30 characters for these objects. + // + if (qname.Length > 30) + { + qname = qname.Substring(0, 30); + return SqlProvider.Convert(qname, convertType); + } + return SqlProvider.Convert(value, convertType); + } + } + + return base.Convert(value, convertType); + } + + public override int InsertBatchWithIdentity( + DbManager db, + string insertText, + IEnumerable collection, + Mapping.MemberMapper[] members, + int maxBatchSize, + DbManager.ParameterProvider getParameters) + { + if (db.UseQueryText && Name == ProviderFullName.Oracle) + { + var parameters = new List(); + List sqlList = _dataProviderInterpreter.GetInsertBatchSqlList(insertText, collection, members, maxBatchSize, true, db, parameters); + return ExecuteSqlList(db, sqlList, parameters); + } + + throw new NotImplementedException("Insert batch with identity is not implemented! If you use the GenericDataProvider and Oracle make sure to set UseQueryText to true"); + } + + public override int InsertBatch( + DbManager db, + string insertText, + IEnumerable collection, + Mapping.MemberMapper[] members, + int maxBatchSize, + DbManager.ParameterProvider getParameters) + { + if (Name == ProviderFullName.Oracle) + { + if (db.UseQueryText) + { + var parameters = new List(); + List sqlList = _dataProviderInterpreter.GetInsertBatchSqlList(insertText, collection, members, maxBatchSize, false, db, parameters); + return ExecuteSqlList(db, sqlList, parameters); + } + throw new NotSupportedException("Set UseQueryText = true on the current generic data provider!"); + } + return base.InsertBatch(db, insertText, collection, members, maxBatchSize, getParameters); + } + + #endregion + } +} diff --git a/Source/Data/DataProvider/InformixDataProvider.cs b/Source/Data/DataProvider/InformixDataProvider.cs index 118231090..427267b71 100644 --- a/Source/Data/DataProvider/InformixDataProvider.cs +++ b/Source/Data/DataProvider/InformixDataProvider.cs @@ -10,7 +10,7 @@ namespace BLToolkit.Data.DataProvider { using Sql.SqlProvider; - class InformixDataProvider : DataProviderBase + public class InformixDataProvider : DataProviderBase { public override IDbConnection CreateConnectionObject () { return new IfxConnection (); } public override DbDataAdapter CreateDataAdapterObject() { return new IfxDataAdapter (); } @@ -18,7 +18,6 @@ class InformixDataProvider : DataProviderBase public override Type ConnectionType { get { return typeof(IfxConnection); } } public override string Name { get { return DataProvider.ProviderName.Informix; } } - public override string EndOfSql { get { return ";"; } } public override bool DeriveParameters(IDbCommand command) { @@ -78,6 +77,22 @@ public override void PrepareCommand(ref CommandType commandType, ref string comm } } + /* + public override int ExecuteArray(IDbCommand command, int iterations) + { + var cmd = (IfxCommand)command; + try + { + cmd.ArrayBindCount = iterations; + return cmd.ExecuteNonQuery(); + } + finally + { + cmd.ArrayBindCount = 0; + } + } + */ + #region GetDataReader public override IDataReader GetDataReader(Mapping.MappingSchema schema, IDataReader dataReader) diff --git a/Source/Data/DataProvider/Interpreters/OracleDataProviderInterpreter.cs b/Source/Data/DataProvider/Interpreters/OracleDataProviderInterpreter.cs new file mode 100644 index 000000000..183895b63 --- /dev/null +++ b/Source/Data/DataProvider/Interpreters/OracleDataProviderInterpreter.cs @@ -0,0 +1,569 @@ +#region + +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using BLToolkit.Data.Sql.SqlProvider; +using BLToolkit.DataAccess; +using BLToolkit.Mapping; + +#endregion + +namespace BLToolkit.Data.DataProvider.Interpreters +{ + public class OracleDataProviderInterpreter : DataProviderInterpreterBase + { + public override DbType GetParameterDbType(DbType dbType) + { + /* + * In the OracleParameter class, DbType, OracleDbType, and Value properties are linked. Specifying the value of any of these properties infers the value of one or more of the other properties. + */ + + /*See how the DbType values map to OracleDbType + * In the OracleParameter class, specifying the value of DbType infers the value of OracleDbType +AnsiString => Varchar2 +Binary => Raw +Byte => Byte +Boolean => Value does not fall within the expected range. +Currency => Value does not fall within the expected range. +Date => Date +DateTime => TimeStamp +Decimal => Decimal +Double => Double +Guid => Value does not fall within the expected range. +Int16 => Int16 +Int32 => Int32 +Int64 => Int64 +Object => Object +SByte => Value does not fall within the expected range. +Single => Single +String => Varchar2 +Time => TimeStamp +UInt16 => Value does not fall within the expected range. +UInt32 => Value does not fall within the expected range. +UInt64 => Value does not fall within the expected range. +VarNumeric => Value does not fall within the expected range. +AnsiStringFixedLength => Char +StringFixedLength => Char +Xml => Specified argument was out of the range of valid values. +DateTime2 => Specified argument was out of the range of valid values. +DateTimeOffset => Specified argument was out of the range of valid values. + * */ + + /*See how the OracleDbType values map to DbType + * In the OracleParameter class, specifying the value of OracleDbType infers the value of DbType +BFile => Object +Blob => Object +Byte => Byte +Char => StringFixedLength +Clob => Object +Date => Date +Decimal => Decimal +Double => Double +Long => String +LongRaw => Binary +Int16 => Int16 +Int32 => Int32 +Int64 => Int64 +IntervalDS => Object +IntervalYM => Int64 +NClob => Object +NChar => StringFixedLength +NVarchar2 => String +Raw => Binary +RefCursor => Object +Single => Single +TimeStamp => DateTime +TimeStampLTZ => DateTime +TimeStampTZ => DateTime +Varchar2 => String +XmlType => String +Array => Object +Object => Object +Ref => Object +BinaryDouble => Double +BinaryFloat => Single + */ + switch (dbType) + { + case DbType.UInt16: + return DbType.Int16; + case DbType.DateTime2: + return DbType.DateTime; + + // TODO Add the other cases ... + + default: + return base.GetParameterDbType(dbType); + } + } + + public override void SetParameterValue(IDbDataParameter parameter, object value) + { + if (null != value) + { + if (value is Guid) + { + // Fix Oracle.Net bug #6: guid type is not handled + // + value = ((Guid) value).ToByteArray(); + } + else if (parameter.DbType == DbType.Date && value is DateTime) + { + var dt = (DateTime)value; + value = new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0, 0, dt.Kind); + } + else if (parameter.DbType == DbType.DateTime && value is DateTime) + { + var dt = (DateTime)value; + value = new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, 0, dt.Kind); + } + //// This case is treated in OracleParameterWrap set method of Value property + //else if (value is Array && !(value is byte[] || value is char[])) + //{ + // _oracleParameter.CollectionType = OracleCollectionType.PLSQLAssociativeArray; + //} + else if (value is IConvertible) + { + var convertible = (IConvertible) value; + var typeCode = convertible.GetTypeCode(); + + switch (typeCode) + { + case TypeCode.Boolean: + // Fix Oracle.Net bug #7: bool type is handled wrong + // + value = convertible.ToByte(null); + break; + + case TypeCode.SByte: + case TypeCode.UInt16: + case TypeCode.UInt32: + case TypeCode.UInt64: + // Fix Oracle.Net bug #8: some integer types are handled wrong + // + value = convertible.ToDecimal(null); + break; + + // Fix Oracle.Net bug #10: zero-length string can not be converted to + // ORAXML type, but null value can be. + // + case TypeCode.String: + if (((string) value).Length == 0) + value = null; + break; + + default: + // Fix Oracle.Net bug #5: Enum type is not handled + // + if (value is Enum) + { + // Convert a Enum value to it's underlying type. + // + value = System.Convert.ChangeType(value, typeCode); + } + break; + } + } + } + + if (value is TimeSpan) + { + parameter.Value = ((TimeSpan) value).ToString(); + } + else + base.SetParameterValue(parameter, value); + } + + public override List GetInsertBatchSqlList( + string insertText, + IEnumerable collection, + MemberMapper[] members, + int maxBatchSize, + bool withIdentity, + DbManager db, + List parameters) + { + //const InsertBatchMethod method = InsertBatchMethod.InsertAllWithPks; + const InsertBatchMethod method = InsertBatchMethod.UnionAll; + switch (method) + { + case InsertBatchMethod.InsertAllWithPks: + SetCollectionIds(db, members, collection); + return GetInsertBatchSqlListWithInsertAllWithPks(insertText, collection, members, maxBatchSize, db, parameters); + break; + case InsertBatchMethod.InsertAll: + // Note : Can this work? + return GetInsertBatchSqlListWithInsertAll(insertText, collection, members, maxBatchSize, db.MappingSchema); + break; + case InsertBatchMethod.UnionAll: + default: + return GetInsertBatchSqlListUnionAll(insertText, collection, members, maxBatchSize, withIdentity, db.MappingSchema); + } + } + + public override string GetSequenceQuery(string sequenceName) + { + return string.Format("SELECT {0}.NEXTVAL FROM DUAL", sequenceName); + } + + public override string NextSequenceQuery(string sequenceName) + { + return string.Format("{0}.NEXTVAL", sequenceName); + } + + public override string GetReturningInto(string columnName) + { + return string.Format("returning {0} into :IDENTITY_PARAMETER", columnName); + } + + public override void SetCollectionIds( + DbManager db, + IEnumerable members, + IEnumerable collection) + { + MemberMapper primaryKeyMapper = null; + SequenceKeyGenerator keyGenerator = null; + + foreach (var mapper in members) + { + keyGenerator = mapper.MapMemberInfo.KeyGenerator as SequenceKeyGenerator; + if (keyGenerator != null) + { + primaryKeyMapper = mapper; + break; + } + } + + if (primaryKeyMapper == null) + throw new Exception("The class mapping should contain a pk column!"); + + var rowCount = collection.Count(); + var sequenceIds = ReserveSequenceValues(db, rowCount, NextSequenceQuery(keyGenerator.Sequence)); + + int i = 0; + foreach (var element in collection) + { + primaryKeyMapper.SetInt64(element, sequenceIds[i]); + i++; + } + } + + #region Private methods + + private List ReserveSequenceValues(DbManager db, int count, string sequenceName) + { + //var sql2 = new StringBuilder("SELECT level," + sequenceName + " Id from DUAL connect by level <= " + count); + + //db.SetCommand(sql2.ToString()); + + //return db.ExecuteScalarList(); + + var results = new List(); + + foreach (var page in Enumerable.Range(1, count).ToPages(1000)) + { + var sql = new StringBuilder("SELECT " + sequenceName + " FROM ("); + for (int i = 1; i < page.Count(); i++) + sql.Append("SELECT 0 FROM DUAL UNION ALL "); + + sql.Append("SELECT 0 FROM DUAL)"); + + db.SetCommand(sql.ToString()); + + var result = db.ExecuteScalarList(); + results.AddRange(result); + } + + return results; + } + + private List GetInsertBatchSqlListUnionAll( + string insertText, + IEnumerable collection, + MemberMapper[] members, + int maxBatchSize, + bool withIdentity, + MappingSchema mappingSchema) + { + var sp = new OracleSqlProvider(); + var n = 0; + var sqlList = new List(); + + var indexValuesWord = insertText.IndexOf(" VALUES (", StringComparison.Ordinal); + var initQuery = insertText.Substring(0, indexValuesWord) + Environment.NewLine; + var valuesQuery = insertText.Substring(indexValuesWord + 9); + var indexEndValuesQuery = valuesQuery.IndexOf(")"); + valuesQuery = valuesQuery.Substring(0, indexEndValuesQuery) + .Replace("\r", "") + .Replace("\n", "") + .Replace("\t", ""); + + // 1 = Number of primary keys generated by sequence + var valuesWithoutSequence = withIdentity ? valuesQuery.Substring(valuesQuery.IndexOf(",") + 1) : valuesQuery; + + var sb = new StringBuilder(initQuery); + sb.Append(" SELECT "); + sb.AppendFormat(valuesQuery, members.Select(m => m.Name).ToArray()); + sb.AppendLine(" FROM ("); + + initQuery = sb.ToString(); + + sb = new StringBuilder(initQuery); + bool isFirstValues = true; + + foreach (var item in collection) + { + if (!isFirstValues) + sb.AppendLine(" UNION ALL "); + + sb.Append("SELECT "); + + var values = new List(); + foreach (var member in members) + { + var sbItem = new StringBuilder(); + + var value = member.GetValue(item); + + if (value != null && value.GetType().IsEnum) + value = mappingSchema.MapEnumToValue(value, true); + + if (value is DateTime?) + value = ((DateTime?) value).Value; + + //if (value is string && ((string)value).Length >= 2000) + //{ + // var par = db.Parameter("p" + ++pn, value); + // parameters.Add(par); + // sb.Append(":" + par.ParameterName); + //} + + sp.BuildValue(sbItem, value); + + values.Add(sbItem + " " + member.Name); + } + + sb.AppendFormat(valuesWithoutSequence, values.ToArray()); + sb.Append(" FROM DUAL"); + + isFirstValues = false; + + n++; + if (n > maxBatchSize) + { + sb.Append(")"); + sqlList.Add(sb.ToString()); + sb = new StringBuilder(initQuery); + isFirstValues = true; + n = 0; + } + } + + if (n > 0) + { + sb.Append(")"); + sqlList.Add(sb.ToString()); + } + return sqlList; + } + + private List GetInsertBatchSqlListWithInsertAllWithPks( + string insertText, + IEnumerable collection, + MemberMapper[] members, + int maxBatchSize, + DbManager db, + List parameters) + { + MappingSchema mappingSchema = db.MappingSchema; + + var queries = new List(); + + var sb = new StringBuilder(); + var sp = new OracleSqlProvider(); + var pn = 0; + var n = 0; + var cnt = 0; + var str = "\t" + insertText + .Substring(0, insertText.IndexOf(") VALUES (")) + .Substring(7) + .Replace("\r", "") + .Replace("\n", "") + .Replace("\t", " ") + .Replace("( ", "(") + //.Replace(" ", " ") + + ") VALUES ("; + + foreach (var item in collection) + { + if (sb.Length == 0) + sb.AppendLine("INSERT ALL"); + + sb.Append(str); + + foreach (var member in members) + { + var value = member.GetValue(item); + + if (value != null && value.GetType().IsEnum) + value = mappingSchema.MapEnumToValue(value, true); + + if (value is Nullable) + value = ((DateTime?) value).Value; + + if (value is DateTime) + { + var dt = (DateTime) value; + sb.Append(string.Format("to_timestamp('{0:dd.MM.yyyy HH:mm:ss.ffffff}', 'DD.MM.YYYY HH24:MI:SS.FF6')", dt)); + } + else if (value is string && ((string)value).Length >= 2000) + { + var par = db.Parameter("p" + ++pn, value); + parameters.Add(par); + sb.Append(":" + par.ParameterName); + } + else + sp.BuildValue(sb, value); + + sb.Append(", "); + } + + sb.Length -= 2; + sb.AppendLine(")"); + + n++; + + if (n >= maxBatchSize) + { + sb.AppendLine("SELECT * FROM dual"); + + var sql = sb.ToString(); + + if (DbManager.TraceSwitch.TraceInfo) + DbManager.WriteTraceLine("\n" + sql.Replace("\r", ""), DbManager.TraceSwitch.DisplayName); + + queries.Add(sql); + + parameters.Clear(); + pn = 0; + n = 0; + sb.Length = 0; + } + } + + if (n > 0) + { + sb.AppendLine("SELECT * FROM dual"); + + var sql = sb.ToString(); + + if (DbManager.TraceSwitch.TraceInfo) + DbManager.WriteTraceLine("\n" + sql.Replace("\r", ""), DbManager.TraceSwitch.DisplayName); + + queries.Add(sql); + } + + return queries; + } + + /// + /// Note : Can this work? + /// + private List GetInsertBatchSqlListWithInsertAll( + string insertText, + IEnumerable collection, + MemberMapper[] members, + int maxBatchSize, + MappingSchema mappingSchema) + { + var sb = new StringBuilder(); + var sp = new OracleSqlProvider(); + var n = 0; + var sqlList = new List(); + + foreach (var item in collection) + { + if (sb.Length == 0) + sb.AppendLine("INSERT ALL"); + + string strItem = "\t" + insertText + .Replace("INSERT INTO", "INTO") + .Replace("\r", "") + .Replace("\n", "") + .Replace("\t", " ") + .Replace("( ", "("); + + var values = new List(); + foreach (var member in members) + { + var sbItem = new StringBuilder(); + + var keyGenerator = member.MapMemberInfo.KeyGenerator as SequenceKeyGenerator; + if (keyGenerator != null) + { + values.Add(NextSequenceQuery(keyGenerator.Sequence)); + } + else + { + var value = member.GetValue(item); + + if (value != null && value.GetType().IsEnum) + value = mappingSchema.MapEnumToValue(value, true); + + if (value is DateTime?) + value = ((DateTime?) value).Value; + + if (value is DateTime) + { + var dt = (DateTime) value; + //sb.Append(string.Format("to_timestamp('{0:dd.MM.yyyy HH:mm:ss.ffffff}', 'DD.MM.YYYY HH24:MI:SS.FF6')", dt)); + sp.BuildValue(sbItem, string.Format("to_timestamp('{0:dd.MM.yyyy HH:mm:ss.ffffff}', 'DD.MM.YYYY HH24:MI:SS.FF6')", dt)); + } + else + sp.BuildValue(sbItem, value); + + values.Add(sbItem.ToString()); + } + } + + sb.AppendFormat(strItem, values.ToArray()); + sb.AppendLine(); + + n++; + + if (n >= maxBatchSize) + { + sb.AppendLine("SELECT * FROM dual"); + + var sql = sb.ToString(); + sqlList.Add(sql); + + n = 0; + sb.Length = 0; + } + } + + if (n > 0) + { + sb.AppendLine("SELECT * FROM dual"); + + var sql = sb.ToString(); + sqlList.Add(sql); + } + + return sqlList; + } + + #endregion + + private enum InsertBatchMethod + { + UnionAll, + InsertAll, + InsertAllWithPks, + } + } +} \ No newline at end of file diff --git a/Source/Data/DataProvider/Interpreters/SqliteDataProviderInterpreter.cs b/Source/Data/DataProvider/Interpreters/SqliteDataProviderInterpreter.cs new file mode 100644 index 000000000..ceca58d71 --- /dev/null +++ b/Source/Data/DataProvider/Interpreters/SqliteDataProviderInterpreter.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; +using System.Data; +using BLToolkit.Mapping; + +namespace BLToolkit.Data.DataProvider.Interpreters +{ + public class SqliteDataProviderInterpreter : DataProviderInterpreterBase + { + public override void SetParameterValue(IDbDataParameter parameter, object value) + { + if (parameter.DbType == DbType.DateTime2) + parameter.DbType = DbType.DateTime; + + base.SetParameterValue(parameter, value); + } + + public override void SetCollectionIds(DbManager db, IEnumerable members, IEnumerable collection) + { + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/Source/Data/DataProvider/MySqlDataProvider.cs b/Source/Data/DataProvider/MySqlDataProvider.cs index d945bac58..a98151c25 100644 --- a/Source/Data/DataProvider/MySqlDataProvider.cs +++ b/Source/Data/DataProvider/MySqlDataProvider.cs @@ -121,7 +121,7 @@ public override IDbDataParameter GetParameter( // if we have a stored procedure, then maybe command paramaters were formatted // (SprocParameterPrefix added). In this case we need to format given parameter name first // and only then try to take parameter by formatted parameter name - string parameterName = command.CommandType == CommandType.StoredProcedure + var parameterName = command.CommandType == CommandType.StoredProcedure ? Convert(nameOrIndex.Name, ConvertType.NameToSprocParameter).ToString() : nameOrIndex.Name; @@ -151,6 +151,20 @@ public override object Convert(object value, ConvertType convertType) return SqlProvider.Convert(value, convertType); } + public override DataExceptionType ConvertErrorNumberToDataExceptionType(int number) + { + switch (number) + { + case 1213: return DataExceptionType.Deadlock; + case 1205: return DataExceptionType.Timeout; + case 1216: + case 1217: return DataExceptionType.ForeignKeyViolation; + case 1169: return DataExceptionType.UniqueIndexViolation; + } + + return DataExceptionType.Undefined; + } + public override Type ConnectionType { get { return typeof(MySqlConnection); } @@ -168,7 +182,7 @@ public override ISqlProvider CreateSqlProvider() public override void Configure(System.Collections.Specialized.NameValueCollection attributes) { - string paremeterPrefix = attributes["ParameterPrefix"]; + var paremeterPrefix = attributes["ParameterPrefix"]; if (paremeterPrefix != null) CommandParameterPrefix = SprocParameterPrefix = paremeterPrefix; @@ -180,7 +194,7 @@ public override void Configure(System.Collections.Specialized.NameValueCollectio if (paremeterPrefix != null) SprocParameterPrefix = paremeterPrefix; - string configName = attributes["ParameterSymbolConfig"]; + var configName = attributes["ParameterSymbolConfig"]; if (configName != null) { switch (configName) @@ -194,15 +208,15 @@ public override void Configure(System.Collections.Specialized.NameValueCollectio } } - string parameterSymbol = attributes["ParameterSymbol"]; + var parameterSymbol = attributes["ParameterSymbol"]; if (parameterSymbol != null && parameterSymbol.Length == 1) ParameterSymbol = parameterSymbol[0]; - string convertParameterSymbols = attributes["ConvertParameterSymbols"]; + var convertParameterSymbols = attributes["ConvertParameterSymbols"]; if (convertParameterSymbols != null) ConvertParameterSymbols = new List(convertParameterSymbols.ToCharArray()); - string tryConvertParameterSymbol = attributes["TryConvertParameterSymbol"]; + var tryConvertParameterSymbol = attributes["TryConvertParameterSymbol"]; if (tryConvertParameterSymbol != null) TryConvertParameterSymbol = BLToolkit.Common.Convert.ToBoolean(tryConvertParameterSymbol); diff --git a/Source/Data/DataProvider/OdbcDataProvider.cs b/Source/Data/DataProvider/OdbcDataProvider.cs index 939bdb9d7..e48fb2c2d 100644 --- a/Source/Data/DataProvider/OdbcDataProvider.cs +++ b/Source/Data/DataProvider/OdbcDataProvider.cs @@ -2,10 +2,11 @@ using System.Data; using System.Data.Common; using System.Data.Odbc; -using BLToolkit.Data.Sql.SqlProvider; namespace BLToolkit.Data.DataProvider { + using Sql.SqlProvider; + /// /// Implements access to the Data Provider for ODBC. /// diff --git a/Source/Data/DataProvider/OdpDataProvider.cs b/Source/Data/DataProvider/OdpDataProvider.cs index a4d89adfa..3c856eec2 100644 --- a/Source/Data/DataProvider/OdpDataProvider.cs +++ b/Source/Data/DataProvider/OdpDataProvider.cs @@ -1,1617 +1,1837 @@ -// Odp.Net Data Provider. -// http://www.oracle.com/technology/tech/windows/odpnet/index.html -// -using System; -using System.Collections; -using System.Collections.Generic; -using System.Data; -using System.Data.Common; -using System.Globalization; -using System.IO; -using System.Reflection; -using System.Text; -using System.Xml; - -using BLToolkit.Aspects; -using BLToolkit.Common; -using BLToolkit.Mapping; -using BLToolkit.Reflection; - -#if MANAGED -using Oracle.ManagedDataAccess.Client; -using Oracle.ManagedDataAccess.Types; -#else -using Oracle.DataAccess.Client; -using Oracle.DataAccess.Types; -#endif - -namespace BLToolkit.Data.DataProvider -{ - using Sql.SqlProvider; - - /// - /// Implements access to the Data Provider for Oracle. - /// - /// - /// See the method to find an example. - /// - /// AddDataManager Method -#if !MANAGED - public class OdpDataProvider : DataProviderBase - { - public OdpDataProvider() - { - MappingSchema = new OdpMappingSchema(); - } - - public const string NameString = DataProvider.ProviderName.Oracle; - - private const string DbTypeTableName = "Oracle.DataAccess.Client.OraDb_DbTypeTable"; - - static OdpDataProvider() - { -#else - public class OdpManagedDataProvider : DataProviderBase - { - public OdpManagedDataProvider() - { - MappingSchema = new OdpMappingSchema(); - } - - public const string NameString = DataProvider.ProviderName.OracleManaged; - - private const string DbTypeTableName = "Oracle.ManagedDataAccess.Client.OraDb_DbTypeTable"; - - static OdpManagedDataProvider() - { -#endif - // Fix Oracle.Net bug #1: Array types are not handled. - // - var oraDbDbTypeTableType = typeof(OracleParameter).Assembly.GetType(DbTypeTableName); - - if (null != oraDbDbTypeTableType) - { - var typeTable = (Hashtable)oraDbDbTypeTableType.InvokeMember( - "s_table", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.GetField, - null, null, Type.EmptyTypes); - - if (null != typeTable) - { - typeTable[typeof(DateTime[])] = OracleDbType.TimeStamp; - typeTable[typeof(Int16[])] = OracleDbType.Int16; - typeTable[typeof(Int32[])] = OracleDbType.Int32; - typeTable[typeof(Int64[])] = OracleDbType.Int64; - typeTable[typeof(Single[])] = OracleDbType.Single; - typeTable[typeof(Double[])] = OracleDbType.Double; - typeTable[typeof(Decimal[])] = OracleDbType.Decimal; - typeTable[typeof(TimeSpan[])] = OracleDbType.IntervalDS; - typeTable[typeof(String[])] = OracleDbType.Varchar2; - typeTable[typeof(OracleBFile[])] = OracleDbType.BFile; - typeTable[typeof(OracleBinary[])] = OracleDbType.Raw; - typeTable[typeof(OracleBlob[])] = OracleDbType.Blob; - typeTable[typeof(OracleClob[])] = OracleDbType.Clob; - typeTable[typeof(OracleDate[])] = OracleDbType.Date; - typeTable[typeof(OracleDecimal[])] = OracleDbType.Decimal; - typeTable[typeof(OracleIntervalDS[])] = OracleDbType.IntervalDS; - typeTable[typeof(OracleIntervalYM[])] = OracleDbType.IntervalYM; - typeTable[typeof(OracleRefCursor[])] = OracleDbType.RefCursor; - typeTable[typeof(OracleString[])] = OracleDbType.Varchar2; - typeTable[typeof(OracleTimeStamp[])] = OracleDbType.TimeStamp; - typeTable[typeof(OracleTimeStampLTZ[])]= OracleDbType.TimeStampLTZ; - typeTable[typeof(OracleTimeStampTZ[])] = OracleDbType.TimeStampTZ; -#if !MANAGED - typeTable[typeof(OracleXmlType[])] = OracleDbType.XmlType; -#endif - - typeTable[typeof(Boolean)] = OracleDbType.Byte; - typeTable[typeof(Guid)] = OracleDbType.Raw; - typeTable[typeof(SByte)] = OracleDbType.Decimal; - typeTable[typeof(UInt16)] = OracleDbType.Decimal; - typeTable[typeof(UInt32)] = OracleDbType.Decimal; - typeTable[typeof(UInt64)] = OracleDbType.Decimal; - - typeTable[typeof(Boolean[])] = OracleDbType.Byte; - typeTable[typeof(Guid[])] = OracleDbType.Raw; - typeTable[typeof(SByte[])] = OracleDbType.Decimal; - typeTable[typeof(UInt16[])] = OracleDbType.Decimal; - typeTable[typeof(UInt32[])] = OracleDbType.Decimal; - typeTable[typeof(UInt64[])] = OracleDbType.Decimal; - - typeTable[typeof(Boolean?)] = OracleDbType.Byte; - typeTable[typeof(Guid?)] = OracleDbType.Raw; - typeTable[typeof(SByte?)] = OracleDbType.Decimal; - typeTable[typeof(UInt16?)] = OracleDbType.Decimal; - typeTable[typeof(UInt32?)] = OracleDbType.Decimal; - typeTable[typeof(UInt64?)] = OracleDbType.Decimal; - typeTable[typeof(DateTime?[])] = OracleDbType.TimeStamp; - typeTable[typeof(Int16?[])] = OracleDbType.Int16; - typeTable[typeof(Int32?[])] = OracleDbType.Int32; - typeTable[typeof(Int64?[])] = OracleDbType.Int64; - typeTable[typeof(Single?[])] = OracleDbType.Single; - typeTable[typeof(Double?[])] = OracleDbType.Double; - typeTable[typeof(Decimal?[])] = OracleDbType.Decimal; - typeTable[typeof(TimeSpan?[])] = OracleDbType.IntervalDS; - typeTable[typeof(Boolean?[])] = OracleDbType.Byte; - typeTable[typeof(Guid?[])] = OracleDbType.Raw; - typeTable[typeof(SByte?[])] = OracleDbType.Decimal; - typeTable[typeof(UInt16?[])] = OracleDbType.Decimal; - typeTable[typeof(UInt32?[])] = OracleDbType.Decimal; - typeTable[typeof(UInt64?[])] = OracleDbType.Decimal; - - typeTable[typeof(XmlReader)] = OracleDbType.XmlType; - typeTable[typeof(XmlDocument)] = OracleDbType.XmlType; - typeTable[typeof(MemoryStream)] = OracleDbType.Blob; - typeTable[typeof(XmlReader[])] = OracleDbType.XmlType; - typeTable[typeof(XmlDocument[])] = OracleDbType.XmlType; - typeTable[typeof(MemoryStream[])] = OracleDbType.Blob; - } - } - } - - /// - /// Creates the database connection object. - /// - /// - /// See the method to find an example. - /// - /// AddDataManager Method - /// The database connection object. - public override IDbConnection CreateConnectionObject() - { - return new OracleConnection(); - } - - public override IDbCommand CreateCommandObject(IDbConnection connection) - { - var oraConnection = connection as OracleConnection; - - if (null != oraConnection) - { - var oraCommand = oraConnection.CreateCommand(); - - // Fix Oracle.Net bug #2: Empty arrays can not be sent to the server. - // - oraCommand.BindByName = true; - - return oraCommand; - } - - return base.CreateCommandObject(connection); - } - - public override IDbDataParameter CloneParameter(IDbDataParameter parameter) - { - var oraParameter = (parameter is OracleParameterWrap)? - (parameter as OracleParameterWrap).OracleParameter: parameter as OracleParameter; - - if (null != oraParameter) - { - var oraParameterClone = (OracleParameter)oraParameter.Clone(); - - // Fix Oracle.Net bug #3: CollectionType property is not cloned. - // - oraParameterClone.CollectionType = oraParameter.CollectionType; - - // Fix Oracle.Net bug #8423178 - // See http://forums.oracle.com/forums/thread.jspa?threadID=975902&tstart=0 - // - if (oraParameterClone.OracleDbType == OracleDbType.RefCursor) - { - // Set OracleDbType to itself to reset m_bSetDbType and m_bOracleDbTypeExSet - // - oraParameterClone.OracleDbType = OracleDbType.RefCursor; - } - - return OracleParameterWrap.CreateInstance(oraParameterClone); - } - - return base.CloneParameter(parameter); - } - - public override void SetUserDefinedType(IDbDataParameter parameter, string typeName) - { - var oraParameter = (parameter is OracleParameterWrap) ? - (parameter as OracleParameterWrap).OracleParameter : parameter as OracleParameter; - - if (oraParameter == null) - throw new ArgumentException("OracleParameter expected.", "parameter"); - - oraParameter.UdtTypeName = typeName; - } - - /// - /// Creates the data adapter object. - /// - /// - /// See the method to find an example. - /// - /// AddDataManager Method - /// A data adapter object. - public override DbDataAdapter CreateDataAdapterObject() - { - return new OracleDataAdapter(); - } - - /// - /// Populates the specified IDbCommand object's Parameters collection with - /// parameter information for the stored procedure specified in the IDbCommand. - /// - /// - /// See the method to find an example. - /// - /// AddDataManager Method - /// The IDbCommand referencing the stored procedure for which the parameter - /// information is to be derived. The derived parameters will be populated into - /// the Parameters of this command. - public override bool DeriveParameters(IDbCommand command) - { - var oraCommand = command as OracleCommand; - - if (null != oraCommand) - { - try - { - OracleCommandBuilder.DeriveParameters(oraCommand); - } - catch (Exception ex) - { - // Make Oracle less laconic. - // - throw new DataException(string.Format("{0}\nCommandText: {1}", ex.Message, oraCommand.CommandText), ex); - } - - return true; - } - - return false; - } - - /// - /// Open an into the given object - /// - /// an to perform GetDataReader() on - /// The into the returned by GetDataReader() - public override IDataReader GetRefCursorDataReader(object refCursor) - { - OracleRefCursor oracleRefCursor = refCursor as OracleRefCursor; - if (oracleRefCursor == null) - { - throw new ArgumentException("Argument must be of type 'OracleRefCursor'", "refCursor"); - } - return oracleRefCursor.GetDataReader(); - } - - public override object Convert(object value, ConvertType convertType) - { - switch (convertType) - { - case ConvertType.NameToCommandParameter: - case ConvertType.NameToSprocParameter: - return ParameterPrefix == null? value: ParameterPrefix + value; - - case ConvertType.SprocParameterToName: - var name = (string)value; - - if (name.Length > 0) - { - if (name[0] == ':') - return name.Substring(1); - - if (ParameterPrefix != null && - name.ToUpper(CultureInfo.InvariantCulture).StartsWith(ParameterPrefix)) - { - return name.Substring(ParameterPrefix.Length); - } - } - - break; - - case ConvertType.ExceptionToErrorNumber: - if (value is OracleException) - return ((OracleException)value).Number; - break; - } - - return SqlProvider.Convert(value, convertType); - } - - public override void PrepareCommand(ref CommandType commandType, ref string commandText, ref IDbDataParameter[] commandParameters) - { - base.PrepareCommand(ref commandType, ref commandText, ref commandParameters); - - if (commandType == CommandType.Text) - { - // Fix Oracle bug #11 '\r' is not a valid character! - // - commandText = commandText.Replace('\r', ' '); - } - } - - public override void AttachParameter(IDbCommand command, IDbDataParameter parameter) - { - var oraParameter = (parameter is OracleParameterWrap)? - (parameter as OracleParameterWrap).OracleParameter: parameter as OracleParameter; - - if (null != oraParameter) - { - if (oraParameter.CollectionType == OracleCollectionType.PLSQLAssociativeArray) - { - if (oraParameter.Direction == ParameterDirection.Input - || oraParameter.Direction == ParameterDirection.InputOutput) - { - var ar = oraParameter.Value as Array; - - if (null != ar && !(ar is byte[] || ar is char[])) - { - oraParameter.Size = ar.Length; - - if (oraParameter.DbType == DbType.String - && oraParameter.Direction == ParameterDirection.InputOutput) - { - var arrayBindSize = new int[oraParameter.Size]; - - for (var i = 0; i < oraParameter.Size; ++i) - { - arrayBindSize[i] = 1024; - } - - oraParameter.ArrayBindSize = arrayBindSize; - } - } - - if (oraParameter.Size == 0) - { - // Skip this parameter. - // Fix Oracle.Net bug #2: Empty arrays can not be sent to the server. - // - return; - } - - if (oraParameter.Value is Stream[]) - { - var streams = (Stream[]) oraParameter.Value; - - for (var i = 0; i < oraParameter.Size; ++i) - { - if (streams[i] is OracleBFile || streams[i] is OracleBlob || streams[i] is OracleClob -#if !MANAGED - || streams[i] is OracleXmlStream -#endif - ) - { - // Known Oracle type. - // - continue; - } - - streams[i] = CopyStream(streams[i], (OracleCommand)command); - } - } - else if (oraParameter.Value is XmlDocument[]) - { - var xmlDocuments = (XmlDocument[]) oraParameter.Value; - var values = new object[oraParameter.Size]; - - switch (oraParameter.OracleDbType) - { - case OracleDbType.XmlType: -#if !MANAGED - for (var i = 0; i < oraParameter.Size; ++i) - { - values[i] = xmlDocuments[i].DocumentElement == null? - (object) DBNull.Value: - new OracleXmlType((OracleConnection)command.Connection, xmlDocuments[i]); - } - - oraParameter.Value = values; - break; -#else - throw new NotSupportedException(); -#endif - // Fix Oracle.Net bug #9: XmlDocument.ToString() returns System.Xml.XmlDocument, - // so m_value.ToString() is not enought. - // - case OracleDbType.Clob: - case OracleDbType.NClob: - case OracleDbType.Varchar2: - case OracleDbType.NVarchar2: - case OracleDbType.Char: - case OracleDbType.NChar: - for (var i = 0; i < oraParameter.Size; ++i) - { - values[i] = xmlDocuments[i].DocumentElement == null? - (object) DBNull.Value: - xmlDocuments[i].InnerXml; - } - - oraParameter.Value = values; - - break; - - // Or convert to bytes if need. - // - case OracleDbType.Blob: - case OracleDbType.BFile: - case OracleDbType.Raw: - case OracleDbType.Long: - case OracleDbType.LongRaw: - for (var i = 0; i < oraParameter.Size; ++i) - { - if (xmlDocuments[i].DocumentElement == null) - values[i] = DBNull.Value; - else - using (var s = new MemoryStream()) - { - xmlDocuments[i].Save(s); - values[i] = s.GetBuffer(); - } - } - - oraParameter.Value = values; - - break; - } - } - } - else if (oraParameter.Direction == ParameterDirection.Output) - { - // Fix Oracle.Net bug #4: ArrayBindSize must be explicitly specified. - // - if (oraParameter.DbType == DbType.String) - { - oraParameter.Size = 1024; - var arrayBindSize = new int[oraParameter.Size]; - for (var i = 0; i < oraParameter.Size; ++i) - { - arrayBindSize[i] = 1024; - } - - oraParameter.ArrayBindSize = arrayBindSize; - } - else - { - oraParameter.Size = 32767; - } - } - } - else if (oraParameter.Value is Stream) - { - var stream = (Stream) oraParameter.Value; - - if (!(stream is OracleBFile) && !(stream is OracleBlob) && - !(stream is OracleClob) -#if !MANAGED - && !(stream is OracleXmlStream) -#endif - ) - { - oraParameter.Value = CopyStream(stream, (OracleCommand)command); - } - } - else if (oraParameter.Value is Byte[]) - { - var bytes = (Byte[]) oraParameter.Value; - - if (bytes.Length > 32000) - { - oraParameter.Value = CopyStream(bytes, (OracleCommand)command); - } - } - else if (oraParameter.Value is XmlDocument) - { - var xmlDocument = (XmlDocument)oraParameter.Value; - if (xmlDocument.DocumentElement == null) - oraParameter.Value = DBNull.Value; - else - { - - switch (oraParameter.OracleDbType) - { - case OracleDbType.XmlType: -#if !MANAGED - oraParameter.Value = new OracleXmlType((OracleConnection)command.Connection, xmlDocument); - break; -#else - throw new NotSupportedException(); -#endif - - // Fix Oracle.Net bug #9: XmlDocument.ToString() returns System.Xml.XmlDocument, - // so m_value.ToString() is not enought. - // - case OracleDbType.Clob: - case OracleDbType.NClob: - case OracleDbType.Varchar2: - case OracleDbType.NVarchar2: - case OracleDbType.Char: - case OracleDbType.NChar: - using (TextWriter w = new StringWriter()) - { - xmlDocument.Save(w); - oraParameter.Value = w.ToString(); - } - break; - - // Or convert to bytes if need. - // - case OracleDbType.Blob: - case OracleDbType.BFile: - case OracleDbType.Raw: - case OracleDbType.Long: - case OracleDbType.LongRaw: - using (var s = new MemoryStream()) - { - xmlDocument.Save(s); - oraParameter.Value = s.GetBuffer(); - } - break; - } - } - } - - parameter = oraParameter; - } - - base.AttachParameter(command, parameter); - } - - private static Stream CopyStream(Stream stream, OracleCommand cmd) - { - return CopyStream(Common.Convert.ToByteArray(stream), cmd); - } - - private static Stream CopyStream(Byte[] bytes, OracleCommand cmd) - { - var ret = new OracleBlob(cmd.Connection); - ret.Write(bytes, 0, bytes.Length); - return ret; - } - - public override bool IsValueParameter(IDbDataParameter parameter) - { - var oraParameter = (parameter is OracleParameterWrap)? - (parameter as OracleParameterWrap).OracleParameter: parameter as OracleParameter; - - if (null != oraParameter) - { - if (oraParameter.OracleDbType == OracleDbType.RefCursor - && oraParameter.Direction == ParameterDirection.Output) - { - // Ignore out ref cursors, while out parameters of other types are o.k. - return false; - } - } - - return base.IsValueParameter(parameter); - } - - public override IDbDataParameter CreateParameterObject(IDbCommand command) - { - var parameter = base.CreateParameterObject(command); - - if (parameter is OracleParameter) - parameter = OracleParameterWrap.CreateInstance(parameter as OracleParameter); - - return parameter; - } - - public override IDbDataParameter GetParameter(IDbCommand command, NameOrIndexParameter nameOrIndex) - { - var parameter = base.GetParameter(command, nameOrIndex); - - if (parameter is OracleParameter) - parameter = OracleParameterWrap.CreateInstance(parameter as OracleParameter); - - return parameter; - } - - /// - /// Returns connection type. - /// - /// - /// See the method to find an example. - /// - /// AddDataManager Method - /// An instance of the class. - public override Type ConnectionType - { - get { return typeof(OracleConnection); } - } - - /// - /// Returns the data provider name. - /// - /// - /// See the method to find an example. - /// - /// AddDataProvider Method - /// Data provider name. - public override string Name - { - get { return NameString; } - } - - public override int MaxBatchSize - { - get { return 0; } - } - - public override ISqlProvider CreateSqlProvider() - { - return new OracleSqlProvider(); - } - - public override IDataReader GetDataReader(MappingSchema schema, IDataReader dataReader) - { - return dataReader is OracleDataReader ? - new OracleDataReaderEx((OracleDataReader)dataReader) : - base.GetDataReader(schema, dataReader); - } - - class OracleDataReaderEx: DataReaderEx - { - public OracleDataReaderEx(OracleDataReader rd) - : base(rd) - { - } - - public override DateTimeOffset GetDateTimeOffset(int i) - { - var ts = DataReader.GetOracleTimeStampTZ(i); - return new DateTimeOffset(ts.Value, ts.GetTimeZoneOffset()); - } - } - - private string _parameterPrefix = "P"; - public string ParameterPrefix - { - get { return _parameterPrefix; } - set - { - _parameterPrefix = string.IsNullOrEmpty(value)? null: - value.ToUpper(CultureInfo.InvariantCulture); - } - } - - /// - /// One time initialization from a configuration file. - /// - /// Provider specific attributes. - public override void Configure(System.Collections.Specialized.NameValueCollection attributes) - { - var val = attributes["ParameterPrefix"]; - if (val != null) - ParameterPrefix = val; - - base.Configure(attributes); - } - - #region Inner types - - public class OdpMappingSchema : MappingSchema - { - public override DataReaderMapper CreateDataReaderMapper(IDataReader dataReader) - { - return new OracleDataReaderMapper(this, dataReader); - } - - public override DataReaderMapper CreateDataReaderMapper( - IDataReader dataReader, - NameOrIndexParameter nip) - { - return new OracleScalarDataReaderMapper(this, dataReader, nip); - } - - #region Convert - - #region Primitive Types - - [CLSCompliant(false)] - public override SByte ConvertToSByte(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? DefaultSByteNullValue: (SByte)oraDecimal.Value; - } - - return base.ConvertToSByte(value); - } - - public override Int16 ConvertToInt16(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? DefaultInt16NullValue: oraDecimal.ToInt16(); - } - - return base.ConvertToInt16(value); - } - - public override Int32 ConvertToInt32(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? DefaultInt32NullValue: oraDecimal.ToInt32(); - } - - return base.ConvertToInt32(value); - } - - public override Int64 ConvertToInt64(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? DefaultInt64NullValue: oraDecimal.ToInt64(); - } - - return base.ConvertToInt64(value); - } - - public override Byte ConvertToByte(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? DefaultByteNullValue: oraDecimal.ToByte(); - } - - return base.ConvertToByte(value); - } - - [CLSCompliant(false)] - public override UInt16 ConvertToUInt16(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? DefaultUInt16NullValue: (UInt16)oraDecimal.Value; - } - - return base.ConvertToUInt16(value); - } - - [CLSCompliant(false)] - public override UInt32 ConvertToUInt32(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? DefaultUInt32NullValue: (UInt32)oraDecimal.Value; - } - - return base.ConvertToUInt32(value); - } - - [CLSCompliant(false)] - public override UInt64 ConvertToUInt64(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? DefaultUInt64NullValue: (UInt64)oraDecimal.Value; - } - - return base.ConvertToUInt64(value); - } - - public override Single ConvertToSingle(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? DefaultSingleNullValue: oraDecimal.ToSingle(); - } - - return base.ConvertToSingle(value); - } - - public override Double ConvertToDouble(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? DefaultDoubleNullValue: oraDecimal.ToDouble(); - } - - return base.ConvertToDouble(value); - } - - public override Boolean ConvertToBoolean(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? DefaultBooleanNullValue: (oraDecimal.Value != 0); - } - - return base.ConvertToBoolean(value); - } - - public override DateTime ConvertToDateTime(object value) - { - if (value is OracleDate) - { - var oraDate = (OracleDate)value; - return oraDate.IsNull? DefaultDateTimeNullValue: oraDate.Value; - } - - return base.ConvertToDateTime(value); - } - - public override Decimal ConvertToDecimal(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? DefaultDecimalNullValue: oraDecimal.Value; - } - - return base.ConvertToDecimal(value); - } - - public override Guid ConvertToGuid(object value) - { - if (value is OracleString) - { - var oraString = (OracleString)value; - return oraString.IsNull? DefaultGuidNullValue: new Guid(oraString.Value); - } - - if (value is OracleBlob) - { - var oraBlob = (OracleBlob)value; - return oraBlob.IsNull? DefaultGuidNullValue: new Guid(oraBlob.Value); - } - - return base.ConvertToGuid(value); - } - - public override String ConvertToString(object value) - { - if (value is OracleString) - { - var oraString = (OracleString)value; - return oraString.IsNull? DefaultStringNullValue: oraString.Value; - } -#if !MANAGED - if (value is OracleXmlType) - { - var oraXmlType = (OracleXmlType)value; - return oraXmlType.IsNull ? DefaultStringNullValue : oraXmlType.Value; - } -#endif - if (value is OracleClob) - { - var oraClob = (OracleClob)value; - return oraClob.IsNull? DefaultStringNullValue: oraClob.Value; - } - - return base.ConvertToString(value); - } - -#if !MANAGED - public override Stream ConvertToStream(object value) - { - if (value is OracleXmlType) - { - var oraXml = (OracleXmlType)value; - return oraXml.IsNull? DefaultStreamNullValue: oraXml.GetStream(); - } - - return base.ConvertToStream(value); - } - - public override XmlReader ConvertToXmlReader(object value) - { - if (value is OracleXmlType) - { - var oraXml = (OracleXmlType)value; - return oraXml.IsNull? DefaultXmlReaderNullValue: oraXml.GetXmlReader(); - } - - return base.ConvertToXmlReader(value); - } - - public override XmlDocument ConvertToXmlDocument(object value) - { - if (value is OracleXmlType) - { - var oraXml = (OracleXmlType)value; - return oraXml.IsNull? DefaultXmlDocumentNullValue: oraXml.GetXmlDocument(); - } - - return base.ConvertToXmlDocument(value); - } -#endif - - public override Byte[] ConvertToByteArray(object value) - { - if (value is OracleBlob) - { - var oraBlob = (OracleBlob)value; - return oraBlob.IsNull? null: oraBlob.Value; - } - - if (value is OracleBinary) - { - var oraBinary = (OracleBinary)value; - return oraBinary.IsNull? null: oraBinary.Value; - } - - if (value is OracleBFile) - { - var oraBFile = (OracleBFile)value; - return oraBFile.IsNull? null: oraBFile.Value; - } - - return base.ConvertToByteArray(value); - } - - public override Char[] ConvertToCharArray(object value) - { - if (value is OracleString) - { - var oraString = (OracleString)value; - return oraString.IsNull? null: oraString.Value.ToCharArray(); - } - - if (value is OracleClob) - { - var oraClob = (OracleClob)value; - return oraClob.IsNull? null: oraClob.Value.ToCharArray(); - } - - return base.ConvertToCharArray(value); - } - - #endregion - - #region Nullable Types - - [CLSCompliant(false)] - public override SByte? ConvertToNullableSByte(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? null: (SByte?)oraDecimal.Value; - } - - return base.ConvertToNullableSByte(value); - } - - public override Int16? ConvertToNullableInt16(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? null: (Int16?)oraDecimal.ToInt16(); - } - - return base.ConvertToNullableInt16(value); - } - - public override Int32? ConvertToNullableInt32(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? null: (Int32?)oraDecimal.ToInt32(); - } - - return base.ConvertToNullableInt32(value); - } - - public override Int64? ConvertToNullableInt64(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? null: (Int64?)oraDecimal.ToInt64(); - } - - return base.ConvertToNullableInt64(value); - } - - public override Byte? ConvertToNullableByte(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? null: (Byte?)oraDecimal.ToByte(); - } - - return base.ConvertToNullableByte(value); - } - - [CLSCompliant(false)] - public override UInt16? ConvertToNullableUInt16(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? null: (UInt16?)oraDecimal.Value; - } - - return base.ConvertToNullableUInt16(value); - } - - [CLSCompliant(false)] - public override UInt32? ConvertToNullableUInt32(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? null: (UInt32?)oraDecimal.Value; - } - - return base.ConvertToNullableUInt32(value); - } - - [CLSCompliant(false)] - public override UInt64? ConvertToNullableUInt64(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? null: (UInt64?)oraDecimal.Value; - } - - return base.ConvertToNullableUInt64(value); - } - - public override Single? ConvertToNullableSingle(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? null: (Single?)oraDecimal.ToSingle(); - } - - return base.ConvertToNullableSingle(value); - } - - public override Double? ConvertToNullableDouble(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? null: (Double?)oraDecimal.ToDouble(); - } - - return base.ConvertToNullableDouble(value); - } - - public override Boolean? ConvertToNullableBoolean(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? null: (Boolean?)(oraDecimal.Value != 0); - } - - return base.ConvertToNullableBoolean(value); - } - - public override DateTime? ConvertToNullableDateTime(object value) - { - if (value is OracleDate) - { - var oraDate = (OracleDate)value; - return oraDate.IsNull? null: (DateTime?)oraDate.Value; - } - - return base.ConvertToNullableDateTime(value); - } - - public override Decimal? ConvertToNullableDecimal(object value) - { - if (value is OracleDecimal) - { - var oraDecimal = (OracleDecimal)value; - return oraDecimal.IsNull? null: (Decimal?)oraDecimal.Value; - } - - return base.ConvertToNullableDecimal(value); - } - - public override Guid? ConvertToNullableGuid(object value) - { - if (value is OracleString) - { - var oraString = (OracleString)value; - return oraString.IsNull? null: (Guid?)new Guid(oraString.Value); - } - - if (value is OracleBlob) - { - var oraBlob = (OracleBlob)value; - return oraBlob.IsNull? null: (Guid?)new Guid(oraBlob.Value); - } - - return base.ConvertToNullableGuid(value); - } - - #endregion - - #endregion - - public override object MapValueToEnum(object value, Type type) - { - if (value is OracleString) - { - var oracleValue = (OracleString)value; - value = oracleValue.IsNull? null: oracleValue.Value; - } - else if (value is OracleDecimal) - { - var oracleValue = (OracleDecimal)value; - if (oracleValue.IsNull) - value = null; - else - value = oracleValue.Value; - } - - return base.MapValueToEnum(value, type); - } - - public override object ConvertChangeType(object value, Type conversionType) - { - // Handle OracleDecimal with IsNull == true case - // - return base.ConvertChangeType(IsNull(value)? null: value, conversionType); - } - - public override bool IsNull(object value) - { - // ODP 10 does not expose this interface to public. - // - // return value is INullable && ((INullable)value).IsNull; - - return - value is OracleDecimal? ((OracleDecimal) value).IsNull: - value is OracleString? ((OracleString) value).IsNull: - value is OracleDate? ((OracleDate) value).IsNull: - value is OracleTimeStamp? ((OracleTimeStamp) value).IsNull: - value is OracleTimeStampTZ? ((OracleTimeStampTZ) value).IsNull: - value is OracleTimeStampLTZ? ((OracleTimeStampLTZ)value).IsNull: -#if !MANAGED - value is OracleXmlType? ((OracleXmlType) value).IsNull: -#endif - value is OracleBlob? ((OracleBlob) value).IsNull: - value is OracleClob? ((OracleClob) value).IsNull: - value is OracleBFile? ((OracleBFile) value).IsNull: - value is OracleBinary? ((OracleBinary) value).IsNull: - value is OracleIntervalDS? ((OracleIntervalDS) value).IsNull: - value is OracleIntervalYM? ((OracleIntervalYM) value).IsNull: - base.IsNull(value); - } - } - - // TODO: implement via IDataReaderEx / DataReaderEx - // - public class OracleDataReaderMapper : DataReaderMapper - { - public OracleDataReaderMapper(MappingSchema mappingSchema, IDataReader dataReader) - : base(mappingSchema, dataReader) - { - _dataReader = dataReader is OracleDataReaderEx? - ((OracleDataReaderEx)dataReader).DataReader: - (OracleDataReader)dataReader; - } - - private readonly OracleDataReader _dataReader; - - public override Type GetFieldType(int index) - { - var fieldType = _dataReader.GetProviderSpecificFieldType(index); - - if (fieldType != typeof(OracleBlob) -#if !MANAGED - && fieldType != typeof(OracleXmlType) -#endif - ) - fieldType = _dataReader.GetFieldType(index); - - return fieldType; - } - - public override object GetValue(object o, int index) - { - var fieldType = _dataReader.GetProviderSpecificFieldType(index); - -#if !MANAGED - if (fieldType == typeof(OracleXmlType)) - { - var xml = _dataReader.GetOracleXmlType(index); - return MappingSchema.ConvertToXmlDocument(xml); - } -#endif - if (fieldType == typeof(OracleBlob)) - { - var blob = _dataReader.GetOracleBlob(index); - return MappingSchema.ConvertToStream(blob); - } - - return _dataReader.IsDBNull(index)? null: - _dataReader.GetValue(index); - } - - public override Boolean GetBoolean(object o, int index) { return MappingSchema.ConvertToBoolean(GetValue(o, index)); } - public override Char GetChar (object o, int index) { return MappingSchema.ConvertToChar (GetValue(o, index)); } - public override Guid GetGuid (object o, int index) { return MappingSchema.ConvertToGuid (GetValue(o, index)); } - - [CLSCompliant(false)] - public override SByte GetSByte (object o, int index) { return (SByte)_dataReader.GetDecimal(index); } - [CLSCompliant(false)] - public override UInt16 GetUInt16 (object o, int index) { return (UInt16)_dataReader.GetDecimal(index); } - [CLSCompliant(false)] - public override UInt32 GetUInt32 (object o, int index) { return (UInt32)_dataReader.GetDecimal(index); } - [CLSCompliant(false)] - public override UInt64 GetUInt64 (object o, int index) { return (UInt64)_dataReader.GetDecimal(index); } - - public override Decimal GetDecimal(object o, int index) { return OracleDecimal.SetPrecision(_dataReader.GetOracleDecimal(index), 28).Value; } - - public override Boolean? GetNullableBoolean(object o, int index) { return MappingSchema.ConvertToNullableBoolean(GetValue(o, index)); } - public override Char? GetNullableChar (object o, int index) { return MappingSchema.ConvertToNullableChar (GetValue(o, index)); } - public override Guid? GetNullableGuid (object o, int index) { return MappingSchema.ConvertToNullableGuid (GetValue(o, index)); } - - [CLSCompliant(false)] - public override SByte? GetNullableSByte (object o, int index) { return _dataReader.IsDBNull(index)? null: (SByte?)_dataReader.GetDecimal(index); } - [CLSCompliant(false)] - public override UInt16? GetNullableUInt16 (object o, int index) { return _dataReader.IsDBNull(index)? null: (UInt16?)_dataReader.GetDecimal(index); } - [CLSCompliant(false)] - public override UInt32? GetNullableUInt32 (object o, int index) { return _dataReader.IsDBNull(index)? null: (UInt32?)_dataReader.GetDecimal(index); } - [CLSCompliant(false)] - public override UInt64? GetNullableUInt64 (object o, int index) { return _dataReader.IsDBNull(index)? null: (UInt64?)_dataReader.GetDecimal(index); } - - public override Decimal? GetNullableDecimal(object o, int index) { return _dataReader.IsDBNull(index)? (decimal?)null: OracleDecimal.SetPrecision(_dataReader.GetOracleDecimal(index), 28).Value; } - } - - public class OracleScalarDataReaderMapper : ScalarDataReaderMapper - { - private readonly OracleDataReader _dataReader; - - public OracleScalarDataReaderMapper( - MappingSchema mappingSchema, - IDataReader dataReader, - NameOrIndexParameter nameOrIndex) - : base(mappingSchema, dataReader, nameOrIndex) - { - _dataReader = dataReader is OracleDataReaderEx? - ((OracleDataReaderEx)dataReader).DataReader: - (OracleDataReader)dataReader; - - _fieldType = _dataReader.GetProviderSpecificFieldType(Index); - - if (_fieldType != typeof(OracleBlob) -#if !MANAGED - && _fieldType != typeof(OracleXmlType) -#endif - ) - _fieldType = _dataReader.GetFieldType(Index); - } - - private readonly Type _fieldType; - - public override Type GetFieldType(int index) - { - return _fieldType; - } - - public override object GetValue(object o, int index) - { -#if !MANAGED - if (_fieldType == typeof(OracleXmlType)) - { - var xml = _dataReader.GetOracleXmlType(Index); - return MappingSchema.ConvertToXmlDocument(xml); - } -#endif - if (_fieldType == typeof(OracleBlob)) - { - var blob = _dataReader.GetOracleBlob(Index); - return MappingSchema.ConvertToStream(blob); - } - - return _dataReader.IsDBNull(index)? null: - _dataReader.GetValue(Index); - } - - public override Boolean GetBoolean(object o, int index) { return MappingSchema.ConvertToBoolean(GetValue(o, Index)); } - public override Char GetChar (object o, int index) { return MappingSchema.ConvertToChar (GetValue(o, Index)); } - public override Guid GetGuid (object o, int index) { return MappingSchema.ConvertToGuid (GetValue(o, Index)); } - - [CLSCompliant(false)] - public override SByte GetSByte (object o, int index) { return (SByte)_dataReader.GetDecimal(Index); } - [CLSCompliant(false)] - public override UInt16 GetUInt16 (object o, int index) { return (UInt16)_dataReader.GetDecimal(Index); } - [CLSCompliant(false)] - public override UInt32 GetUInt32 (object o, int index) { return (UInt32)_dataReader.GetDecimal(Index); } - [CLSCompliant(false)] - public override UInt64 GetUInt64 (object o, int index) { return (UInt64)_dataReader.GetDecimal(Index); } - - public override Decimal GetDecimal(object o, int index) { return OracleDecimal.SetPrecision(_dataReader.GetOracleDecimal(Index), 28).Value; } - - public override Boolean? GetNullableBoolean(object o, int index) { return MappingSchema.ConvertToNullableBoolean(GetValue(o, Index)); } - public override Char? GetNullableChar (object o, int index) { return MappingSchema.ConvertToNullableChar (GetValue(o, Index)); } - public override Guid? GetNullableGuid (object o, int index) { return MappingSchema.ConvertToNullableGuid (GetValue(o, Index)); } - - [CLSCompliant(false)] - public override SByte? GetNullableSByte (object o, int index) { return _dataReader.IsDBNull(index)? null: (SByte?)_dataReader.GetDecimal(Index); } - [CLSCompliant(false)] - public override UInt16? GetNullableUInt16 (object o, int index) { return _dataReader.IsDBNull(index)? null: (UInt16?)_dataReader.GetDecimal(Index); } - [CLSCompliant(false)] - public override UInt32? GetNullableUInt32 (object o, int index) { return _dataReader.IsDBNull(index)? null: (UInt32?)_dataReader.GetDecimal(Index); } - [CLSCompliant(false)] - public override UInt64? GetNullableUInt64 (object o, int index) { return _dataReader.IsDBNull(index)? null: (UInt64?)_dataReader.GetDecimal(Index); } - - public override Decimal? GetNullableDecimal(object o, int index) { return _dataReader.IsDBNull(index)? (decimal?)null: OracleDecimal.SetPrecision(_dataReader.GetOracleDecimal(Index), 28).Value; } - } - - [Mixin(typeof(IDbDataParameter), "_oracleParameter")] - [Mixin(typeof(IDataParameter), "_oracleParameter")] - [Mixin(typeof(IDisposable), "_oracleParameter")] - [Mixin(typeof(ICloneable), "_oracleParameter")] - [CLSCompliant(false)] - public abstract class OracleParameterWrap - { - protected OracleParameter _oracleParameter; - public OracleParameter OracleParameter - { - get { return _oracleParameter; } - } - - public static IDbDataParameter CreateInstance(OracleParameter oraParameter) - { - var wrap = TypeAccessor.CreateInstanceEx(); - - wrap._oracleParameter = oraParameter; - - return (IDbDataParameter)wrap; - } - - public override string ToString() - { - return _oracleParameter.ToString(); - } - - /// - ///Gets or sets the value of the parameter. - /// - /// - ///An that is the value of the parameter. - ///The default value is null. - /// - protected object Value - { -#if CONVERTORACLETYPES - [MixinOverride] - get - { - object value = _oracleParameter.Value; - if (value is OracleBinary) - { - OracleBinary oracleValue = (OracleBinary)value; - return oracleValue.IsNull? null: oracleValue.Value; - } - if (value is OracleDate) - { - OracleDate oracleValue = (OracleDate)value; - if (oracleValue.IsNull) - return null; - return oracleValue.Value; - } - if (value is OracleDecimal) - { - OracleDecimal oracleValue = (OracleDecimal)value; - if (oracleValue.IsNull) - return null; - return oracleValue.Value; - } - if (value is OracleIntervalDS) - { - OracleIntervalDS oracleValue = (OracleIntervalDS)value; - if (oracleValue.IsNull) - return null; - return oracleValue.Value; - } - if (value is OracleIntervalYM) - { - OracleIntervalYM oracleValue = (OracleIntervalYM)value; - if (oracleValue.IsNull) - return null; - return oracleValue.Value; - } - if (value is OracleString) - { - OracleString oracleValue = (OracleString)value; - return oracleValue.IsNull? null: oracleValue.Value; - } - if (value is OracleTimeStamp) - { - OracleTimeStamp oracleValue = (OracleTimeStamp)value; - if (oracleValue.IsNull) - return null; - return oracleValue.Value; - } - if (value is OracleTimeStampLTZ) - { - OracleTimeStampLTZ oracleValue = (OracleTimeStampLTZ)value; - if (oracleValue.IsNull) - return null; - return oracleValue.Value; - } - if (value is OracleTimeStampTZ) - { - OracleTimeStampTZ oracleValue = (OracleTimeStampTZ)value; - if (oracleValue.IsNull) - return null; - return oracleValue.Value; - } - if (value is OracleXmlType) - { - OracleXmlType oracleValue = (OracleXmlType)value; - return oracleValue.IsNull? null: oracleValue.Value; - } - - return value; - } -#endif - [MixinOverride] - set - { - if (null != value) - { - if (value is Guid) - { - // Fix Oracle.Net bug #6: guid type is not handled - // - value = ((Guid)value).ToByteArray(); - } - else if (value is Array && !(value is byte[] || value is char[])) - { - _oracleParameter.CollectionType = OracleCollectionType.PLSQLAssociativeArray; - } - else if (value is IConvertible) - { - var convertible = (IConvertible)value; - var typeCode = convertible.GetTypeCode(); - - switch (typeCode) - { - case TypeCode.Boolean: - // Fix Oracle.Net bug #7: bool type is handled wrong - // - value = convertible.ToByte(null); - break; - - case TypeCode.SByte: - case TypeCode.UInt16: - case TypeCode.UInt32: - case TypeCode.UInt64: - // Fix Oracle.Net bug #8: some integer types are handled wrong - // - value = convertible.ToDecimal(null); - break; - - // Fix Oracle.Net bug #10: zero-length string can not be converted to - // ORAXML type, but null value can be. - // - case TypeCode.String: - if (((string)value).Length == 0) - value = null; - break; - - default: - // Fix Oracle.Net bug #5: Enum type is not handled - // - if (value is Enum) - { - // Convert a Enum value to it's underlying type. - // - value = System.Convert.ChangeType(value, typeCode); - } - break; - } - } - } - - _oracleParameter.Value = value; - } - } - } - - #endregion - - #region InsertBatch - - public override int InsertBatch( - DbManager db, - string insertText, - IEnumerable collection, - MemberMapper[] members, - int maxBatchSize, - DbManager.ParameterProvider getParameters) - { - var sb = new StringBuilder(); - var sp = new OracleSqlProvider(); - var n = 0; - var cnt = 0; - var str = "\t" + insertText - .Substring(0, insertText.IndexOf(") VALUES (")) - .Substring(7) - .Replace("\r", "") - .Replace("\n", "") - .Replace("\t", " ") - .Replace("( ", "(") - //.Replace(" ", " ") - + ") VALUES ("; - - foreach (var item in collection) - { - if (sb.Length == 0) - sb.AppendLine("INSERT ALL"); - - sb.Append(str); - - foreach (var member in members) - { - var value = member.GetValue(item); - - if (value is Nullable) - value = ((DateTime?)value).Value; - - if (value is DateTime) - { - var dt = (DateTime)value; - sb.Append(string.Format("to_timestamp('{0:dd.MM.yyyy HH:mm:ss.ffffff}', 'DD.MM.YYYY HH24:MI:SS.FF6')", dt)); - } - else - sp.BuildValue(sb, value); - - sb.Append(", "); - } - - sb.Length -= 2; - sb.AppendLine(")"); - - n++; - - if (n >= maxBatchSize) - { - sb.AppendLine("SELECT * FROM dual"); - - var sql = sb.ToString(); - - if (DbManager.TraceSwitch.TraceInfo) - DbManager.WriteTraceLine("\n" + sql.Replace("\r", ""), DbManager.TraceSwitch.DisplayName); - - cnt += db.SetCommand(sql).ExecuteNonQuery(); - - n = 0; - sb.Length = 0; - } - } - - if (n > 0) - { - sb.AppendLine("SELECT * FROM dual"); - - var sql = sb.ToString(); - - if (DbManager.TraceSwitch.TraceInfo) - DbManager.WriteTraceLine("\n" + sql.Replace("\r", ""), DbManager.TraceSwitch.DisplayName); - - cnt += db.SetCommand(sql).ExecuteNonQuery(); - } - - return cnt; - } - - #endregion - } -} +// Odp.Net Data Provider. +// http://www.oracle.com/technology/tech/windows/odpnet/index.html +// +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.Data.Common; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Xml; + +using BLToolkit.Aspects; +using BLToolkit.Common; +using BLToolkit.Data.DataProvider.Interpreters; +using BLToolkit.Mapping; +using BLToolkit.Reflection; + +#if MANAGED +using Oracle.ManagedDataAccess.Client; +using Oracle.ManagedDataAccess.Types; +#else +using Oracle.DataAccess.Client; +using Oracle.DataAccess.Types; +#endif + +namespace BLToolkit.Data.DataProvider +{ + using Sql.SqlProvider; + + /// + /// Implements access to the Data Provider for Oracle. + /// + /// + /// See the method to find an example. + /// + /// AddDataManager Method +#if !MANAGED + public class OdpDataProvider : DataProviderBase + { + private readonly DataProviderInterpreterBase _interpreterBase; + + public OdpDataProvider() + { + MappingSchema = new OdpMappingSchema(); + _interpreterBase = new OracleDataProviderInterpreter(); + } + + public const string NameString = DataProvider.ProviderName.Oracle; + + private const string DbTypeTableName = "Oracle.DataAccess.Client.OraDb_DbTypeTable"; + + static OdpDataProvider() + { +#else + public class OdpManagedDataProvider : DataProviderBase + { + private readonly DataProviderInterpreterBase _interpreterBase; + + public OdpManagedDataProvider() + { + MappingSchema = new OdpMappingSchema(); + _interpreterBase = new OracleDataProviderInterpreter(); + } + + public const string NameString = DataProvider.ProviderName.OracleManaged; + + private const string DbTypeTableName = "Oracle.ManagedDataAccess.Client.OraDb_DbTypeTable"; + + static OdpManagedDataProvider() + { +#endif + // Fix Oracle.Net bug #1: Array types are not handled. + // + var oraDbDbTypeTableType = typeof(OracleParameter).Assembly.GetType(DbTypeTableName); + + if (null != oraDbDbTypeTableType) + { + var typeTable = (Hashtable)oraDbDbTypeTableType.InvokeMember( + "s_table", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.GetField, + null, null, Type.EmptyTypes); + + if (null != typeTable) + { + typeTable[typeof(DateTime[])] = OracleDbType.TimeStamp; + typeTable[typeof(Int16[])] = OracleDbType.Int16; + typeTable[typeof(Int32[])] = OracleDbType.Int32; + typeTable[typeof(Int64[])] = OracleDbType.Int64; + typeTable[typeof(Single[])] = OracleDbType.Single; + typeTable[typeof(Double[])] = OracleDbType.Double; + typeTable[typeof(Decimal[])] = OracleDbType.Decimal; + typeTable[typeof(TimeSpan[])] = OracleDbType.IntervalDS; + typeTable[typeof(String[])] = OracleDbType.Varchar2; + typeTable[typeof(OracleBFile[])] = OracleDbType.BFile; + typeTable[typeof(OracleBinary[])] = OracleDbType.Raw; + typeTable[typeof(OracleBlob[])] = OracleDbType.Blob; + typeTable[typeof(OracleClob[])] = OracleDbType.Clob; + typeTable[typeof(OracleDate[])] = OracleDbType.Date; + typeTable[typeof(OracleDecimal[])] = OracleDbType.Decimal; + typeTable[typeof(OracleIntervalDS[])] = OracleDbType.IntervalDS; + typeTable[typeof(OracleIntervalYM[])] = OracleDbType.IntervalYM; + typeTable[typeof(OracleRefCursor[])] = OracleDbType.RefCursor; + typeTable[typeof(OracleString[])] = OracleDbType.Varchar2; + typeTable[typeof(OracleTimeStamp[])] = OracleDbType.TimeStamp; + typeTable[typeof(OracleTimeStampLTZ[])] = OracleDbType.TimeStampLTZ; + typeTable[typeof(OracleTimeStampTZ[])] = OracleDbType.TimeStampTZ; +#if !MANAGED + typeTable[typeof(OracleXmlType[])] = OracleDbType.XmlType; +#endif + + typeTable[typeof(Boolean)] = OracleDbType.Byte; + typeTable[typeof(Guid)] = OracleDbType.Raw; + typeTable[typeof(SByte)] = OracleDbType.Decimal; + typeTable[typeof(UInt16)] = OracleDbType.Decimal; + typeTable[typeof(UInt32)] = OracleDbType.Decimal; + typeTable[typeof(UInt64)] = OracleDbType.Decimal; + + typeTable[typeof(Boolean[])] = OracleDbType.Byte; + typeTable[typeof(Guid[])] = OracleDbType.Raw; + typeTable[typeof(SByte[])] = OracleDbType.Decimal; + typeTable[typeof(UInt16[])] = OracleDbType.Decimal; + typeTable[typeof(UInt32[])] = OracleDbType.Decimal; + typeTable[typeof(UInt64[])] = OracleDbType.Decimal; + + typeTable[typeof(Boolean?)] = OracleDbType.Byte; + typeTable[typeof(Guid?)] = OracleDbType.Raw; + typeTable[typeof(SByte?)] = OracleDbType.Decimal; + typeTable[typeof(UInt16?)] = OracleDbType.Decimal; + typeTable[typeof(UInt32?)] = OracleDbType.Decimal; + typeTable[typeof(UInt64?)] = OracleDbType.Decimal; + typeTable[typeof(DateTime?[])] = OracleDbType.TimeStamp; + typeTable[typeof(Int16?[])] = OracleDbType.Int16; + typeTable[typeof(Int32?[])] = OracleDbType.Int32; + typeTable[typeof(Int64?[])] = OracleDbType.Int64; + typeTable[typeof(Single?[])] = OracleDbType.Single; + typeTable[typeof(Double?[])] = OracleDbType.Double; + typeTable[typeof(Decimal?[])] = OracleDbType.Decimal; + typeTable[typeof(TimeSpan?[])] = OracleDbType.IntervalDS; + typeTable[typeof(Boolean?[])] = OracleDbType.Byte; + typeTable[typeof(Guid?[])] = OracleDbType.Raw; + typeTable[typeof(SByte?[])] = OracleDbType.Decimal; + typeTable[typeof(UInt16?[])] = OracleDbType.Decimal; + typeTable[typeof(UInt32?[])] = OracleDbType.Decimal; + typeTable[typeof(UInt64?[])] = OracleDbType.Decimal; + + typeTable[typeof(XmlReader)] = OracleDbType.XmlType; + typeTable[typeof(XmlDocument)] = OracleDbType.XmlType; + typeTable[typeof(MemoryStream)] = OracleDbType.Blob; + typeTable[typeof(XmlReader[])] = OracleDbType.XmlType; + typeTable[typeof(XmlDocument[])] = OracleDbType.XmlType; + typeTable[typeof(MemoryStream[])] = OracleDbType.Blob; + } + } + } + + /// + /// Creates the database connection object. + /// + /// + /// See the method to find an example. + /// + /// AddDataManager Method + /// The database connection object. + public override IDbConnection CreateConnectionObject() + { + return new OracleConnection(); + } + + public override IDbCommand CreateCommandObject(IDbConnection connection) + { + var oraConnection = connection as OracleConnection; + + if (null != oraConnection) + { + var oraCommand = oraConnection.CreateCommand(); + + // Fix Oracle.Net bug #2: Empty arrays can not be sent to the server. + // + oraCommand.BindByName = true; + + return oraCommand; + } + + return base.CreateCommandObject(connection); + } + + public override void SetParameterValue(IDbDataParameter parameter, object value) + { + // We need NVarChar2 in order to insert UTF8 string values. The default Odp VarChar2 dbtype doesnt work + // with UTF8 values. Note : Microsoft oracle client uses NVarChar value by default. + +// ReSharper disable once SuspiciousTypeConversion.Global + var wrap = parameter as OracleParameterWrap; + if (wrap != null && value is string) + wrap.OracleParameter.OracleDbType = OracleDbType.NVarchar2; + + _interpreterBase.SetParameterValue(parameter, value); + + // strings and byte arrays larger than 4000 bytes may be handled improperly + if (wrap != null) + { + const int thresholdSize = 4000; + if (value is string && Encoding.UTF8.GetBytes((string)value).Length > thresholdSize) + { + wrap.OracleParameter.OracleDbType = OracleDbType.Clob; + } + else if (value is byte[] && ((byte[])value).Length > thresholdSize) + { + wrap.OracleParameter.OracleDbType = OracleDbType.Blob; + } + } + } + + public override IDbDataParameter CloneParameter(IDbDataParameter parameter) + { + var oraParameter = (parameter is OracleParameterWrap)? + (parameter as OracleParameterWrap).OracleParameter: parameter as OracleParameter; + + if (null != oraParameter) + { + var oraParameterClone = (OracleParameter)oraParameter.Clone(); + + // Fix Oracle.Net bug #3: CollectionType property is not cloned. + // + oraParameterClone.CollectionType = oraParameter.CollectionType; + + // Fix Oracle.Net bug #8423178 + // See http://forums.oracle.com/forums/thread.jspa?threadID=975902&tstart=0 + // + if (oraParameterClone.OracleDbType == OracleDbType.RefCursor) + { + // Set OracleDbType to itself to reset m_bSetDbType and m_bOracleDbTypeExSet + // + oraParameterClone.OracleDbType = OracleDbType.RefCursor; + } + + return OracleParameterWrap.CreateInstance(oraParameterClone); + } + + return base.CloneParameter(parameter); + } + + public override void SetUserDefinedType(IDbDataParameter parameter, string typeName) + { + var oraParameter = (parameter is OracleParameterWrap) ? + (parameter as OracleParameterWrap).OracleParameter : parameter as OracleParameter; + + if (oraParameter == null) + throw new ArgumentException("OracleParameter expected.", "parameter"); + + oraParameter.UdtTypeName = typeName; + } + + /// + /// Creates the data adapter object. + /// + /// + /// See the method to find an example. + /// + /// AddDataManager Method + /// A data adapter object. + public override DbDataAdapter CreateDataAdapterObject() + { + return new OracleDataAdapter(); + } + + /// + /// Populates the specified IDbCommand object's Parameters collection with + /// parameter information for the stored procedure specified in the IDbCommand. + /// + /// + /// See the method to find an example. + /// + /// AddDataManager Method + /// The IDbCommand referencing the stored procedure for which the parameter + /// information is to be derived. The derived parameters will be populated into + /// the Parameters of this command. + public override bool DeriveParameters(IDbCommand command) + { + var oraCommand = command as OracleCommand; + + if (null != oraCommand) + { + try + { + OracleCommandBuilder.DeriveParameters(oraCommand); + } + catch (Exception ex) + { + // Make Oracle less laconic. + // + throw new DataException(string.Format("{0}\nCommandText: {1}", ex.Message, oraCommand.CommandText), ex); + } + + return true; + } + + return false; + } + + /// + /// Open an into the given object + /// + /// an to perform GetDataReader() on + /// The into the returned by GetDataReader() + public override IDataReader GetRefCursorDataReader(object refCursor) + { + OracleRefCursor oracleRefCursor = refCursor as OracleRefCursor; + if (oracleRefCursor == null) + { + throw new ArgumentException("Argument must be of type 'OracleRefCursor'", "refCursor"); + } + return oracleRefCursor.GetDataReader(); + } + + public override object Convert(object value, ConvertType convertType) + { + switch (convertType) + { + case ConvertType.NameToQueryParameter: + var qname = (string)value; + + // + // Avoid "ORA-00972: identifier is too long" error + // Cause error : You tried to reference a table, cluster, view, index, synonym, tablespace, or username with a value that was longer than 30 characters. + // Resolution : Names for tables, clusters, views, indexes, synonyms, tablespaces, and usernames must be 30 characters or less. + // You must shorten the name to no more than 30 characters for these objects. + // + if (qname.Length > 30) + { + qname = qname.Substring(0, 30); + return SqlProvider.Convert(qname, convertType); + } + return SqlProvider.Convert(value, convertType); + + case ConvertType.NameToCommandParameter: + case ConvertType.NameToSprocParameter: + return ParameterPrefix == null ? value : ParameterPrefix + value; + + case ConvertType.SprocParameterToName: + var name = (string)value; + + if (name.Length > 0) + { + if (name[0] == ':') + return name.Substring(1); + + if (ParameterPrefix != null && + name.ToUpper(CultureInfo.InvariantCulture).StartsWith(ParameterPrefix)) + { + return name.Substring(ParameterPrefix.Length); + } + } + + break; + + case ConvertType.ExceptionToErrorNumber: + if (value is OracleException) + return ((OracleException)value).Number; + break; + } + + return SqlProvider.Convert(value, convertType); + } + + public override void PrepareCommand(ref CommandType commandType, ref string commandText, ref IDbDataParameter[] commandParameters) + { + base.PrepareCommand(ref commandType, ref commandText, ref commandParameters); + + if (commandType == CommandType.Text) + { + // Fix Oracle bug #11 '\r' is not a valid character! + // + commandText = commandText.Replace('\r', ' '); + } + } + + public override void AttachParameter(IDbCommand command, IDbDataParameter parameter) + { + var oraParameter = (parameter is OracleParameterWrap) ? + (parameter as OracleParameterWrap).OracleParameter : parameter as OracleParameter; + + if (null != oraParameter) + { + if (oraParameter.CollectionType == OracleCollectionType.PLSQLAssociativeArray) + { + if (oraParameter.Direction == ParameterDirection.Input + || oraParameter.Direction == ParameterDirection.InputOutput) + { + var ar = oraParameter.Value as Array; + + if (null != ar && !(ar is byte[] || ar is char[])) + { + oraParameter.Size = ar.Length; + + if (oraParameter.DbType == DbType.String + && oraParameter.Direction == ParameterDirection.InputOutput) + { + var arrayBindSize = new int[oraParameter.Size]; + + for (var i = 0; i < oraParameter.Size; ++i) + { + arrayBindSize[i] = 1024; + } + + oraParameter.ArrayBindSize = arrayBindSize; + } + } + + if (oraParameter.Size == 0) + { + // Skip this parameter. + // Fix Oracle.Net bug #2: Empty arrays can not be sent to the server. + // + return; + } + + if (oraParameter.Value is Stream[]) + { + var streams = (Stream[])oraParameter.Value; + + for (var i = 0; i < oraParameter.Size; ++i) + { + if (streams[i] is OracleBFile || streams[i] is OracleBlob || streams[i] is OracleClob +#if !MANAGED + || streams[i] is OracleXmlStream +#endif + ) + { + // Known Oracle type. + // + continue; + } + + streams[i] = CopyStream(streams[i], (OracleCommand)command); + } + } + else if (oraParameter.Value is XmlDocument[]) + { + var xmlDocuments = (XmlDocument[])oraParameter.Value; + var values = new object[oraParameter.Size]; + + switch (oraParameter.OracleDbType) + { + case OracleDbType.XmlType: +#if !MANAGED + for (var i = 0; i < oraParameter.Size; ++i) + { + values[i] = xmlDocuments[i].DocumentElement == null ? + (object)DBNull.Value : + new OracleXmlType((OracleConnection)command.Connection, xmlDocuments[i]); + } + + oraParameter.Value = values; + + break; + +#else + throw new NotSupportedException(); +#endif + + // Fix Oracle.Net bug #9: XmlDocument.ToString() returns System.Xml.XmlDocument, + // so m_value.ToString() is not enought. + // + case OracleDbType.Clob: + case OracleDbType.NClob: + case OracleDbType.Varchar2: + case OracleDbType.NVarchar2: + case OracleDbType.Char: + case OracleDbType.NChar: + for (var i = 0; i < oraParameter.Size; ++i) + { + values[i] = xmlDocuments[i].DocumentElement == null ? + (object)DBNull.Value : + xmlDocuments[i].InnerXml; + } + + oraParameter.Value = values; + + break; + + // Or convert to bytes if need. + // + case OracleDbType.Blob: + case OracleDbType.BFile: + case OracleDbType.Raw: + case OracleDbType.Long: + case OracleDbType.LongRaw: + for (var i = 0; i < oraParameter.Size; ++i) + { + if (xmlDocuments[i].DocumentElement == null) + values[i] = DBNull.Value; + else + using (var s = new MemoryStream()) + { + xmlDocuments[i].Save(s); + values[i] = s.GetBuffer(); + } + } + + oraParameter.Value = values; + + break; + } + } + } + else if (oraParameter.Direction == ParameterDirection.Output) + { + // Fix Oracle.Net bug #4: ArrayBindSize must be explicitly specified. + // + if (oraParameter.DbType == DbType.String) + { + oraParameter.Size = 1024; + var arrayBindSize = new int[oraParameter.Size]; + for (var i = 0; i < oraParameter.Size; ++i) + { + arrayBindSize[i] = 1024; + } + + oraParameter.ArrayBindSize = arrayBindSize; + } + else + { + oraParameter.Size = 32767; + } + } + } + else if (oraParameter.Value is Stream) + { + var stream = (Stream)oraParameter.Value; + + if (!(stream is OracleBFile) && !(stream is OracleBlob) && + !(stream is OracleClob) +#if !MANAGED + && !(stream is OracleXmlStream) +#endif + ) + { + oraParameter.Value = CopyStream(stream, (OracleCommand)command); + } + } + else if (oraParameter.Value is Byte[]) + { + var bytes = (Byte[])oraParameter.Value; + + if (bytes.Length > 32000) + { + oraParameter.Value = CopyStream(bytes, (OracleCommand)command); + } + } + else if (oraParameter.Value is XmlDocument) + { + var xmlDocument = (XmlDocument)oraParameter.Value; + if (xmlDocument.DocumentElement == null) + oraParameter.Value = DBNull.Value; + else + { + + switch (oraParameter.OracleDbType) + { + case OracleDbType.XmlType: +#if !MANAGED + oraParameter.Value = new OracleXmlType((OracleConnection)command.Connection, xmlDocument); + break; +#else + throw new NotSupportedException(); +#endif + + // Fix Oracle.Net bug #9: XmlDocument.ToString() returns System.Xml.XmlDocument, + // so m_value.ToString() is not enought. + // + case OracleDbType.Clob: + case OracleDbType.NClob: + case OracleDbType.Varchar2: + case OracleDbType.NVarchar2: + case OracleDbType.Char: + case OracleDbType.NChar: + using (TextWriter w = new StringWriter()) + { + xmlDocument.Save(w); + oraParameter.Value = w.ToString(); + } + break; + + // Or convert to bytes if need. + // + case OracleDbType.Blob: + case OracleDbType.BFile: + case OracleDbType.Raw: + case OracleDbType.Long: + case OracleDbType.LongRaw: + using (var s = new MemoryStream()) + { + xmlDocument.Save(s); + oraParameter.Value = s.GetBuffer(); + } + break; + } + } + } + + parameter = oraParameter; + } + + base.AttachParameter(command, parameter); + } + + public override DbType GetParameterDbType(DbType dbType) + { + return _interpreterBase.GetParameterDbType(dbType); + } + + private static Stream CopyStream(Stream stream, OracleCommand cmd) + { + return CopyStream(Common.Convert.ToByteArray(stream), cmd); + } + + private static Stream CopyStream(Byte[] bytes, OracleCommand cmd) + { + var ret = new OracleBlob(cmd.Connection); + ret.Write(bytes, 0, bytes.Length); + return ret; + } + + public override bool IsValueParameter(IDbDataParameter parameter) + { + var oraParameter = (parameter is OracleParameterWrap) ? + (parameter as OracleParameterWrap).OracleParameter : parameter as OracleParameter; + + if (null != oraParameter) + { + if (oraParameter.OracleDbType == OracleDbType.RefCursor + && oraParameter.Direction == ParameterDirection.Output) + { + // Ignore out ref cursors, while out parameters of other types are o.k. + return false; + } + } + + return base.IsValueParameter(parameter); + } + + public override string GetSequenceQuery(string sequenceName) + { + return _interpreterBase.GetSequenceQuery(sequenceName); + } + + public override string NextSequenceQuery(string sequenceName) + { + return _interpreterBase.NextSequenceQuery(sequenceName); + } + + public override string GetReturningInto(string columnName) + { + return _interpreterBase.GetReturningInto(columnName); + } + + public override IDbDataParameter CreateParameterObject(IDbCommand command) + { + var parameter = base.CreateParameterObject(command); + + if (parameter is OracleParameter) + parameter = OracleParameterWrap.CreateInstance(parameter as OracleParameter); + + return parameter; + } + + public override IDbDataParameter GetParameter(IDbCommand command, NameOrIndexParameter nameOrIndex) + { + var parameter = base.GetParameter(command, nameOrIndex); + + if (parameter is OracleParameter) + parameter = OracleParameterWrap.CreateInstance(parameter as OracleParameter); + + return parameter; + } + + /// + /// Returns connection type. + /// + /// + /// See the method to find an example. + /// + /// AddDataManager Method + /// An instance of the class. + public override Type ConnectionType + { + get { return typeof(OracleConnection); } + } + + /// + /// Returns the data provider name. + /// + /// + /// See the method to find an example. + /// + /// AddDataProvider Method + /// Data provider name. + public override string Name + { + get { return NameString; } + } + + public override int MaxBatchSize + { + get { return 0; } + } + + public override ISqlProvider CreateSqlProvider() + { + return new OracleSqlProvider(); + } + + public override int ExecuteArray(IDbCommand command, int iterations) + { + var cmd = (OracleCommand)command; + var oracleParameters = cmd.Parameters.OfType().ToArray(); + var oldCollectionTypes = oracleParameters.Select(p => p.CollectionType).ToArray(); + + try + { + foreach (var p in oracleParameters) + { + p.CollectionType = OracleCollectionType.None; + } + + cmd.ArrayBindCount = iterations; + return cmd.ExecuteNonQuery(); + } + finally + { + foreach (var p in oracleParameters.Zip(oldCollectionTypes, (p, t) => new { Param = p, CollectionType = t })) + { + p.Param.CollectionType = p.CollectionType; + } + + cmd.ArrayBindCount = 0; + } + } + + public override IDataReader GetDataReader(MappingSchema schema, IDataReader dataReader) + { + return dataReader is OracleDataReader ? + new OracleDataReaderEx((OracleDataReader)dataReader) : + base.GetDataReader(schema, dataReader); + } + + class OracleDataReaderEx : DataReaderEx + { + public OracleDataReaderEx(OracleDataReader rd) + : base(rd) + { + } + + public override object GetValue(int i) + { + string dataTypeName = GetDataTypeName(i); + if (dataTypeName == "Clob") + { + OracleClob clob = DataReader.GetOracleClob(i); + if (!clob.IsNull) + { + return clob; + //byte[] b = new byte[clob.Length]; + ////Read data from database + //clob.Read(b, 0, (int)clob.Length); + + //return b; + //return clob.Value; + } + else + return null; + } + else + return base.GetValue(i); + } + + public override DateTimeOffset GetDateTimeOffset(int i) + { + var ts = DataReader.GetOracleTimeStampTZ(i); + return new DateTimeOffset(ts.Value, ts.GetTimeZoneOffset()); + } + } + + private string _parameterPrefix = "P"; + public string ParameterPrefix + { + get { return _parameterPrefix; } + set + { + _parameterPrefix = string.IsNullOrEmpty(value) ? null : + value.ToUpper(CultureInfo.InvariantCulture); + } + } + + /// + /// One time initialization from a configuration file. + /// + /// Provider specific attributes. + public override void Configure(System.Collections.Specialized.NameValueCollection attributes) + { + var val = attributes["ParameterPrefix"]; + if (val != null) + ParameterPrefix = val; + + base.Configure(attributes); + } + + #region Inner types + + public class OdpMappingSchema : MappingSchema + { + public override DataReaderMapper CreateDataReaderMapper(IDataReader dataReader) + { + return new OracleDataReaderMapper(this, dataReader); + } + + public override DataReaderMapper CreateDataReaderMapper( + IDataReader dataReader, + NameOrIndexParameter nip) + { + return new OracleScalarDataReaderMapper(this, dataReader, nip); + } + + public override Reflection.Extension.ExtensionList Extensions + { + get { return Map.DefaultSchema.Extensions; } + set { Map.DefaultSchema.Extensions = value; } + } + + #region Convert + + #region Primitive Types + + [CLSCompliant(false)] + public override SByte ConvertToSByte(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? DefaultSByteNullValue : (SByte)oraDecimal.Value; + } + + return base.ConvertToSByte(value); + } + + public override Int16 ConvertToInt16(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? DefaultInt16NullValue : oraDecimal.ToInt16(); + } + + return base.ConvertToInt16(value); + } + + public override Int32 ConvertToInt32(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? DefaultInt32NullValue : oraDecimal.ToInt32(); + } + + return base.ConvertToInt32(value); + } + + public override Int64 ConvertToInt64(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? DefaultInt64NullValue : oraDecimal.ToInt64(); + } + + return base.ConvertToInt64(value); + } + + public override Byte ConvertToByte(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? DefaultByteNullValue : oraDecimal.ToByte(); + } + + return base.ConvertToByte(value); + } + + [CLSCompliant(false)] + public override UInt16 ConvertToUInt16(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? DefaultUInt16NullValue : (UInt16)oraDecimal.Value; + } + + return base.ConvertToUInt16(value); + } + + [CLSCompliant(false)] + public override UInt32 ConvertToUInt32(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? DefaultUInt32NullValue : (UInt32)oraDecimal.Value; + } + + return base.ConvertToUInt32(value); + } + + [CLSCompliant(false)] + public override UInt64 ConvertToUInt64(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? DefaultUInt64NullValue : (UInt64)oraDecimal.Value; + } + + return base.ConvertToUInt64(value); + } + + public override Single ConvertToSingle(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? DefaultSingleNullValue : oraDecimal.ToSingle(); + } + + return base.ConvertToSingle(value); + } + + public override Double ConvertToDouble(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? DefaultDoubleNullValue : oraDecimal.ToDouble(); + } + + return base.ConvertToDouble(value); + } + + public override Boolean ConvertToBoolean(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? DefaultBooleanNullValue : (oraDecimal.Value != 0); + } + + return base.ConvertToBoolean(value); + } + + public override DateTime ConvertToDateTime(object value) + { + if (value is OracleDate) + { + var oraDate = (OracleDate)value; + return oraDate.IsNull ? DefaultDateTimeNullValue : oraDate.Value; + } + + return base.ConvertToDateTime(value); + } + + public override Decimal ConvertToDecimal(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? DefaultDecimalNullValue : oraDecimal.Value; + } + + return base.ConvertToDecimal(value); + } + + public override Guid ConvertToGuid(object value) + { + if (value is OracleString) + { + var oraString = (OracleString)value; + return oraString.IsNull ? DefaultGuidNullValue : new Guid(oraString.Value); + } + + if (value is OracleBlob) + { + using (var oraBlob = (OracleBlob) value) + return oraBlob.IsNull ? DefaultGuidNullValue : new Guid(oraBlob.Value); + } + + return base.ConvertToGuid(value); + } + + public override String ConvertToString(object value) + { + if (value is OracleString) + { + var oraString = (OracleString)value; + return oraString.IsNull ? DefaultStringNullValue : oraString.Value; + } +#if !MANAGED + if (value is OracleXmlType) + { + var oraXmlType = (OracleXmlType)value; + return oraXmlType.IsNull ? DefaultStringNullValue : oraXmlType.Value; + } +#endif + if (value is OracleClob) + { + using (var oraClob = (OracleClob) value) + return oraClob.IsNull ? DefaultStringNullValue : oraClob.Value; + } + + return base.ConvertToString(value); + } + +#if !MANAGED + public override Stream ConvertToStream(object value) + { + if (value is OracleXmlType) + { + var oraXml = (OracleXmlType)value; + return oraXml.IsNull ? DefaultStreamNullValue : oraXml.GetStream(); + } + + return base.ConvertToStream(value); + } + + public override XmlReader ConvertToXmlReader(object value) + { + if (value is OracleXmlType) + { + var oraXml = (OracleXmlType)value; + return oraXml.IsNull ? DefaultXmlReaderNullValue : oraXml.GetXmlReader(); + } + + return base.ConvertToXmlReader(value); + } + + public override XmlDocument ConvertToXmlDocument(object value) + { + if (value is OracleXmlType) + { + var oraXml = (OracleXmlType)value; + return oraXml.IsNull ? DefaultXmlDocumentNullValue : oraXml.GetXmlDocument(); + } + + return base.ConvertToXmlDocument(value); + } +#endif + + public override Byte[] ConvertToByteArray(object value) + { + if (value is OracleBlob) + { + using (var oraBlob = (OracleBlob) value) + return oraBlob.IsNull ? null : oraBlob.Value; + } + + if (value is OracleBinary) + { + var oraBinary = (OracleBinary)value; + return oraBinary.IsNull ? null : oraBinary.Value; + } + + if (value is OracleBFile) + { + var oraBFile = (OracleBFile)value; + return oraBFile.IsNull ? null : oraBFile.Value; + } + + return base.ConvertToByteArray(value); + } + + public override Char[] ConvertToCharArray(object value) + { + if (value is OracleString) + { + var oraString = (OracleString)value; + return oraString.IsNull ? null : oraString.Value.ToCharArray(); + } + + if (value is OracleClob) + { + using (var oraClob = (OracleClob) value) + return oraClob.IsNull ? null : oraClob.Value.ToCharArray(); + } + + return base.ConvertToCharArray(value); + } + + #endregion + + #region Nullable Types + + [CLSCompliant(false)] + public override SByte? ConvertToNullableSByte(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? null : (SByte?)oraDecimal.Value; + } + + return base.ConvertToNullableSByte(value); + } + + public override Int16? ConvertToNullableInt16(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? null : (Int16?)oraDecimal.ToInt16(); + } + + return base.ConvertToNullableInt16(value); + } + + public override Int32? ConvertToNullableInt32(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? null : (Int32?)oraDecimal.ToInt32(); + } + + return base.ConvertToNullableInt32(value); + } + + public override Int64? ConvertToNullableInt64(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? null : (Int64?)oraDecimal.ToInt64(); + } + + return base.ConvertToNullableInt64(value); + } + + public override Byte? ConvertToNullableByte(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? null : (Byte?)oraDecimal.ToByte(); + } + + return base.ConvertToNullableByte(value); + } + + [CLSCompliant(false)] + public override UInt16? ConvertToNullableUInt16(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? null : (UInt16?)oraDecimal.Value; + } + + return base.ConvertToNullableUInt16(value); + } + + [CLSCompliant(false)] + public override UInt32? ConvertToNullableUInt32(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? null : (UInt32?)oraDecimal.Value; + } + + return base.ConvertToNullableUInt32(value); + } + + [CLSCompliant(false)] + public override UInt64? ConvertToNullableUInt64(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? null : (UInt64?)oraDecimal.Value; + } + + return base.ConvertToNullableUInt64(value); + } + + public override Single? ConvertToNullableSingle(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? null : (Single?)oraDecimal.ToSingle(); + } + + return base.ConvertToNullableSingle(value); + } + + public override Double? ConvertToNullableDouble(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? null : (Double?)oraDecimal.ToDouble(); + } + + return base.ConvertToNullableDouble(value); + } + + public override Boolean? ConvertToNullableBoolean(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? null : (Boolean?)(oraDecimal.Value != 0); + } + + return base.ConvertToNullableBoolean(value); + } + + public override DateTime? ConvertToNullableDateTime(object value) + { + if (value is OracleDate) + { + var oraDate = (OracleDate)value; + return oraDate.IsNull ? null : (DateTime?)oraDate.Value; + } + + return base.ConvertToNullableDateTime(value); + } + + public override Decimal? ConvertToNullableDecimal(object value) + { + if (value is OracleDecimal) + { + var oraDecimal = (OracleDecimal)value; + return oraDecimal.IsNull ? null : (Decimal?)oraDecimal.Value; + } + + return base.ConvertToNullableDecimal(value); + } + + public override Guid? ConvertToNullableGuid(object value) + { + if (value is OracleString) + { + var oraString = (OracleString)value; + return oraString.IsNull ? null : (Guid?)new Guid(oraString.Value); + } + + if (value is OracleBlob) + { + var oraBlob = (OracleBlob)value; + return oraBlob.IsNull ? null : (Guid?)new Guid(oraBlob.Value); + } + + return base.ConvertToNullableGuid(value); + } + + #endregion + + #endregion + + public override object MapValueToEnum(object value, Type type) + { + if (value is OracleString) + { + var oracleValue = (OracleString)value; + value = oracleValue.IsNull ? null : oracleValue.Value; + } + else if (value is OracleDecimal) + { + var oracleValue = (OracleDecimal)value; + if (oracleValue.IsNull) + value = null; + else + value = oracleValue.Value; + } + + return base.MapValueToEnum(value, type); + } + + public override object ConvertChangeType(object value, Type conversionType) + { + // Handle OracleDecimal with IsNull == true case + // + return base.ConvertChangeType(IsNull(value) ? null : value, conversionType); + } + + public override bool IsNull(object value) + { + // ODP 10 does not expose this interface to public. + // + // return value is INullable && ((INullable)value).IsNull; + + return + value is OracleDecimal ? ((OracleDecimal)value).IsNull : + value is OracleString ? ((OracleString)value).IsNull : + value is OracleDate ? ((OracleDate)value).IsNull : + value is OracleTimeStamp ? ((OracleTimeStamp)value).IsNull : + value is OracleTimeStampTZ ? ((OracleTimeStampTZ)value).IsNull : + value is OracleTimeStampLTZ ? ((OracleTimeStampLTZ)value).IsNull : +#if !MANAGED + value is OracleXmlType ? ((OracleXmlType)value).IsNull : +#endif + value is OracleBlob ? ((OracleBlob)value).IsNull : + value is OracleClob ? ((OracleClob)value).IsNull : + value is OracleBFile ? ((OracleBFile)value).IsNull : + value is OracleBinary ? ((OracleBinary)value).IsNull : + value is OracleIntervalDS ? ((OracleIntervalDS)value).IsNull : + value is OracleIntervalYM ? ((OracleIntervalYM)value).IsNull : + base.IsNull(value); + } + } + + // TODO: implement via IDataReaderEx / DataReaderEx + // + public class OracleDataReaderMapper : DataReaderMapper + { + public OracleDataReaderMapper(MappingSchema mappingSchema, IDataReader dataReader) + : base(mappingSchema, dataReader) + { + _dataReader = dataReader is OracleDataReaderEx ? + ((OracleDataReaderEx)dataReader).DataReader : + (OracleDataReader)dataReader; + } + + private readonly OracleDataReader _dataReader; + + public override Type GetFieldType(int index) + { + var fieldType = _dataReader.GetProviderSpecificFieldType(index); + + if (fieldType != typeof(OracleBlob) +#if !MANAGED + && fieldType != typeof(OracleXmlType) +#endif + ) + fieldType = _dataReader.GetFieldType(index); + + return fieldType; + } + + public override object GetValue(object o, int index) + { + var fieldType = _dataReader.GetProviderSpecificFieldType(index); + +#if !MANAGED + if (fieldType == typeof(OracleXmlType)) + { + var xml = _dataReader.GetOracleXmlType(index); + return MappingSchema.ConvertToXmlDocument(xml); + } +#endif + if (fieldType == typeof(OracleBlob)) + { + var blob = _dataReader.GetOracleBlob(index); + return MappingSchema.ConvertToStream(blob); + } + + return _dataReader.IsDBNull(index) ? null : + _dataReader.GetValue(index); + } + + public override Boolean GetBoolean(object o, int index) { return MappingSchema.ConvertToBoolean(GetValue(o, index)); } + public override Char GetChar(object o, int index) { return MappingSchema.ConvertToChar(GetValue(o, index)); } + public override Guid GetGuid(object o, int index) { return MappingSchema.ConvertToGuid(GetValue(o, index)); } + + [CLSCompliant(false)] + public override SByte GetSByte(object o, int index) { return (SByte)_dataReader.GetDecimal(index); } + [CLSCompliant(false)] + public override UInt16 GetUInt16(object o, int index) { return (UInt16)_dataReader.GetDecimal(index); } + [CLSCompliant(false)] + public override UInt32 GetUInt32(object o, int index) { return (UInt32)_dataReader.GetDecimal(index); } + [CLSCompliant(false)] + public override UInt64 GetUInt64(object o, int index) { return (UInt64)_dataReader.GetDecimal(index); } + + public override Decimal GetDecimal(object o, int index) { return OracleDecimal.SetPrecision(_dataReader.GetOracleDecimal(index), 28).Value; } + + public override Boolean? GetNullableBoolean(object o, int index) { return MappingSchema.ConvertToNullableBoolean(GetValue(o, index)); } + public override Char? GetNullableChar(object o, int index) { return MappingSchema.ConvertToNullableChar(GetValue(o, index)); } + public override Guid? GetNullableGuid(object o, int index) { return MappingSchema.ConvertToNullableGuid(GetValue(o, index)); } + + [CLSCompliant(false)] + public override SByte? GetNullableSByte(object o, int index) { return _dataReader.IsDBNull(index) ? null : (SByte?)_dataReader.GetDecimal(index); } + [CLSCompliant(false)] + public override UInt16? GetNullableUInt16(object o, int index) { return _dataReader.IsDBNull(index) ? null : (UInt16?)_dataReader.GetDecimal(index); } + [CLSCompliant(false)] + public override UInt32? GetNullableUInt32(object o, int index) { return _dataReader.IsDBNull(index) ? null : (UInt32?)_dataReader.GetDecimal(index); } + [CLSCompliant(false)] + public override UInt64? GetNullableUInt64(object o, int index) { return _dataReader.IsDBNull(index) ? null : (UInt64?)_dataReader.GetDecimal(index); } + + public override Decimal? GetNullableDecimal(object o, int index) { return _dataReader.IsDBNull(index) ? (decimal?)null : OracleDecimal.SetPrecision(_dataReader.GetOracleDecimal(index), 28).Value; } + } + + public class OracleScalarDataReaderMapper : ScalarDataReaderMapper + { + private readonly OracleDataReader _dataReader; + + public OracleScalarDataReaderMapper( + MappingSchema mappingSchema, + IDataReader dataReader, + NameOrIndexParameter nameOrIndex) + : base(mappingSchema, dataReader, nameOrIndex) + { + _dataReader = dataReader is OracleDataReaderEx ? + ((OracleDataReaderEx)dataReader).DataReader : + (OracleDataReader)dataReader; + + _fieldType = _dataReader.GetProviderSpecificFieldType(Index); + + if (_fieldType != typeof(OracleBlob) +#if !MANAGED + && _fieldType != typeof(OracleXmlType) +#endif + ) + _fieldType = _dataReader.GetFieldType(Index); + } + + private readonly Type _fieldType; + + public override Type GetFieldType(int index) + { + return _fieldType; + } + + public override object GetValue(object o, int index) + { +#if !MANAGED + if (_fieldType == typeof(OracleXmlType)) + { + var xml = _dataReader.GetOracleXmlType(Index); + return MappingSchema.ConvertToXmlDocument(xml); + } +#endif + if (_fieldType == typeof(OracleBlob)) + { + var blob = _dataReader.GetOracleBlob(Index); + return MappingSchema.ConvertToStream(blob); + } + + return _dataReader.IsDBNull(index) ? null : + _dataReader.GetValue(Index); + } + + public override Boolean GetBoolean(object o, int index) { return MappingSchema.ConvertToBoolean(GetValue(o, Index)); } + public override Char GetChar(object o, int index) { return MappingSchema.ConvertToChar(GetValue(o, Index)); } + public override Guid GetGuid(object o, int index) { return MappingSchema.ConvertToGuid(GetValue(o, Index)); } + + [CLSCompliant(false)] + public override SByte GetSByte(object o, int index) { return (SByte)_dataReader.GetDecimal(Index); } + [CLSCompliant(false)] + public override UInt16 GetUInt16(object o, int index) { return (UInt16)_dataReader.GetDecimal(Index); } + [CLSCompliant(false)] + public override UInt32 GetUInt32(object o, int index) { return (UInt32)_dataReader.GetDecimal(Index); } + [CLSCompliant(false)] + public override UInt64 GetUInt64(object o, int index) { return (UInt64)_dataReader.GetDecimal(Index); } + + public override Decimal GetDecimal(object o, int index) { return OracleDecimal.SetPrecision(_dataReader.GetOracleDecimal(Index), 28).Value; } + + public override Boolean? GetNullableBoolean(object o, int index) { return MappingSchema.ConvertToNullableBoolean(GetValue(o, Index)); } + public override Char? GetNullableChar(object o, int index) { return MappingSchema.ConvertToNullableChar(GetValue(o, Index)); } + public override Guid? GetNullableGuid(object o, int index) { return MappingSchema.ConvertToNullableGuid(GetValue(o, Index)); } + + [CLSCompliant(false)] + public override SByte? GetNullableSByte(object o, int index) { return _dataReader.IsDBNull(index) ? null : (SByte?)_dataReader.GetDecimal(Index); } + [CLSCompliant(false)] + public override UInt16? GetNullableUInt16(object o, int index) { return _dataReader.IsDBNull(index) ? null : (UInt16?)_dataReader.GetDecimal(Index); } + [CLSCompliant(false)] + public override UInt32? GetNullableUInt32(object o, int index) { return _dataReader.IsDBNull(index) ? null : (UInt32?)_dataReader.GetDecimal(Index); } + [CLSCompliant(false)] + public override UInt64? GetNullableUInt64(object o, int index) { return _dataReader.IsDBNull(index) ? null : (UInt64?)_dataReader.GetDecimal(Index); } + + public override Decimal? GetNullableDecimal(object o, int index) { return _dataReader.IsDBNull(index) ? (decimal?)null : OracleDecimal.SetPrecision(_dataReader.GetOracleDecimal(Index), 28).Value; } + } + + [Mixin(typeof(IDbDataParameter), "_oracleParameter")] + [Mixin(typeof(IDataParameter), "_oracleParameter")] + [Mixin(typeof(IDisposable), "_oracleParameter")] + [Mixin(typeof(ICloneable), "_oracleParameter")] + [CLSCompliant(false)] + public abstract class OracleParameterWrap + { + protected OracleParameter _oracleParameter; + public OracleParameter OracleParameter + { + get { return _oracleParameter; } + } + + public static IDbDataParameter CreateInstance(OracleParameter oraParameter) + { + var wrap = TypeAccessor.CreateInstanceEx(); + + wrap._oracleParameter = oraParameter; + + return (IDbDataParameter)wrap; + } + + public override string ToString() + { + return _oracleParameter.ToString(); + } + + /// + ///Gets or sets the value of the parameter. + /// + /// + ///An that is the value of the parameter. + ///The default value is null. + /// + protected object Value + { +#if CONVERTORACLETYPES + [MixinOverride] + get + { + object value = _oracleParameter.Value; + if (value is OracleBinary) + { + OracleBinary oracleValue = (OracleBinary)value; + return oracleValue.IsNull? null: oracleValue.Value; + } + if (value is OracleDate) + { + OracleDate oracleValue = (OracleDate)value; + if (oracleValue.IsNull) + return null; + return oracleValue.Value; + } + if (value is OracleDecimal) + { + OracleDecimal oracleValue = (OracleDecimal)value; + if (oracleValue.IsNull) + return null; + return oracleValue.Value; + } + if (value is OracleIntervalDS) + { + OracleIntervalDS oracleValue = (OracleIntervalDS)value; + if (oracleValue.IsNull) + return null; + return oracleValue.Value; + } + if (value is OracleIntervalYM) + { + OracleIntervalYM oracleValue = (OracleIntervalYM)value; + if (oracleValue.IsNull) + return null; + return oracleValue.Value; + } + if (value is OracleString) + { + OracleString oracleValue = (OracleString)value; + return oracleValue.IsNull? null: oracleValue.Value; + } + if (value is OracleTimeStamp) + { + OracleTimeStamp oracleValue = (OracleTimeStamp)value; + if (oracleValue.IsNull) + return null; + return oracleValue.Value; + } + if (value is OracleTimeStampLTZ) + { + OracleTimeStampLTZ oracleValue = (OracleTimeStampLTZ)value; + if (oracleValue.IsNull) + return null; + return oracleValue.Value; + } + if (value is OracleTimeStampTZ) + { + OracleTimeStampTZ oracleValue = (OracleTimeStampTZ)value; + if (oracleValue.IsNull) + return null; + return oracleValue.Value; + } + if (value is OracleXmlType) + { + OracleXmlType oracleValue = (OracleXmlType)value; + return oracleValue.IsNull? null: oracleValue.Value; + } + + return value; + } +#endif + [MixinOverride] + set + { + if (null != value) + { + if (value is Array && !(value is byte[] || value is char[])) + { + _oracleParameter.CollectionType = OracleCollectionType.PLSQLAssociativeArray; + } + } + + _oracleParameter.Value = value; + } + } + } + + #endregion + + #region InsertBatch + + public override int InsertBatch( + DbManager db, + string insertText, + IEnumerable collection, + MemberMapper[] members, + int maxBatchSize, + DbManager.ParameterProvider getParameters) + { + if (db.UseQueryText) + { + // Called if UseQuery false or out of a transaction scope + _interpreterBase.SetCollectionIds(db, members, collection); + + var parameters = new List(); + List sqlList = _interpreterBase.GetInsertBatchSqlList(insertText, collection, members, maxBatchSize, false, db, parameters); + return ExecuteSqlList(db, sqlList, parameters); + } + +#if !MANAGED + return OracleInsertBulk(db, insertText, collection, members, 1000); +#else + throw new NotImplementedException("OracleInsertBulk not supported on OdpManagedDataProvider!"); +#endif + } + + public override int InsertBatchWithIdentity( + DbManager db, + string insertText, + IEnumerable collection, + MemberMapper[] members, + int maxBatchSize, + DbManager.ParameterProvider getParameters) + { + /* + * OracleBulkCopy doesn't support transaction for all the records, it only support transaction for batches if UseInternalTransaction is specified. + * If BatchSize > 0 and the UseInternalTransaction bulk copy option is specified, each batch of the bulk copy operation occurs within a transaction. + * If the connection used to perform the bulk copy operation is already part of a transaction, an InvalidOperationException exception is raised. + * If BatchSize > 0 and the UseInternalTransaction option is not specified, rows are sent to the database in batches of size BatchSize, but no transaction-related action is taken. + */ + + if (db.UseQueryText || db.Transaction != null) + { + var parameters = new List(); + List sqlList = _interpreterBase.GetInsertBatchSqlList(insertText, collection, members, 100, true, db, parameters); + return ExecuteSqlList(db, sqlList, parameters); + } + +#if !MANAGED + // Called if UseQuery false or out of a transaction scope + _interpreterBase.SetCollectionIds(db, members, collection); + + return OracleInsertBulk(db, insertText, collection, members, 1000); +#else + throw new NotImplementedException("OracleInsertBulk not supported on OdpManagedDataProvider!"); +#endif + } + +#if !MANAGED + + private int OracleInsertBulk( + DbManager db, + string insertText, + IEnumerable collection, + MemberMapper[] members, + int maxBatchSize) + { + + var idx = insertText.IndexOf('\n'); + var tbl = insertText.Substring(0, idx).Substring("INSERT INTO ".Length).TrimEnd('\r'); + var rd = new BulkCopyReader(members, collection); + var bc = new OracleBulkCopy((OracleConnection)db.Connection) + { + BatchSize = maxBatchSize, + DestinationTableName = tbl, + }; + + foreach (var memberMapper in members) + bc.ColumnMappings.Add(new OracleBulkCopyColumnMapping(memberMapper.Ordinal, memberMapper.Name)); + + bc.WriteToServer(rd); + + return rd.Count; + } +#endif + + #endregion + + class BulkCopyReader : IDataReader + { + readonly MemberMapper[] _members; + readonly IEnumerable _collection; + readonly IEnumerator _enumerator; + + public int Count; + + public BulkCopyReader(MemberMapper[] members, IEnumerable collection) + { + _members = members; + _collection = collection; + _enumerator = _collection.GetEnumerator(); + } + + #region Implementation of IDisposable + + public void Dispose() + { + } + + #endregion + + #region Implementation of IDataRecord + + public string GetName(int i) + { + return _members[i].Name; + } + + public Type GetFieldType(int i) + { + if (_members[i].Type.IsGenericType && _members[i].Type.GetGenericTypeDefinition() == typeof(Nullable<>)) + return Nullable.GetUnderlyingType(_members[i].Type); + else + return _members[i].Type; + } + + public object GetValue(int i) + { + var value = _members[i].GetValue(_enumerator.Current); + + return value ?? DBNull.Value; + } + + public int FieldCount + { + get { return _members.Length; } + } + + public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length) + { + throw new NotImplementedException(); + } + + public long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length) + { + throw new NotImplementedException(); + } + + public string GetDataTypeName(int i) { throw new NotImplementedException(); } + public int GetValues(object[] values) { throw new NotImplementedException(); } + public int GetOrdinal(string name) { throw new NotImplementedException(); } + public bool GetBoolean(int i) { throw new NotImplementedException(); } + public byte GetByte(int i) { throw new NotImplementedException(); } + public char GetChar(int i) { throw new NotImplementedException(); } + public Guid GetGuid(int i) { throw new NotImplementedException(); } + public short GetInt16(int i) { throw new NotImplementedException(); } + public int GetInt32(int i) { throw new NotImplementedException(); } + public long GetInt64(int i) { throw new NotImplementedException(); } + public float GetFloat(int i) { throw new NotImplementedException(); } + public double GetDouble(int i) { throw new NotImplementedException(); } + public string GetString(int i) { throw new NotImplementedException(); } + public decimal GetDecimal(int i) { throw new NotImplementedException(); } + public DateTime GetDateTime(int i) { throw new NotImplementedException(); } + public IDataReader GetData(int i) { throw new NotImplementedException(); } + public bool IsDBNull(int i) { throw new NotImplementedException(); } + + object IDataRecord.this[int i] + { + get { throw new NotImplementedException(); } + } + + object IDataRecord.this[string name] + { + get { throw new NotImplementedException(); } + } + + #endregion + + #region Implementation of IDataReader + + public void Close() + { + throw new NotImplementedException(); + } + + public DataTable GetSchemaTable() + { + throw new NotImplementedException(); + } + + public bool NextResult() + { + throw new NotImplementedException(); + } + + public bool Read() + { + var b = _enumerator.MoveNext(); + + if (b) + Count++; + + return b; + } + + public int Depth + { + get { throw new NotImplementedException(); } + } + + public bool IsClosed + { + get { throw new NotImplementedException(); } + } + + public int RecordsAffected + { + get { throw new NotImplementedException(); } + } + + #endregion + } + } + +} diff --git a/Source/Data/DataProvider/OleDbDataProvider.cs b/Source/Data/DataProvider/OleDbDataProvider.cs index 62f33d2d9..d3ed908e6 100644 --- a/Source/Data/DataProvider/OleDbDataProvider.cs +++ b/Source/Data/DataProvider/OleDbDataProvider.cs @@ -2,10 +2,11 @@ using System.Data; using System.Data.Common; using System.Data.OleDb; -using BLToolkit.Data.Sql.SqlProvider; namespace BLToolkit.Data.DataProvider { + using Sql.SqlProvider; + /// /// Implements access to the Data Provider for OLE DB. /// diff --git a/Source/Data/DataProvider/ProviderName.cs b/Source/Data/DataProvider/ProviderName.cs index 9baaf1f2d..6bcf1b131 100644 --- a/Source/Data/DataProvider/ProviderName.cs +++ b/Source/Data/DataProvider/ProviderName.cs @@ -1,6 +1,4 @@ -using System; - -namespace BLToolkit.Data.DataProvider +namespace BLToolkit.Data.DataProvider { public static class ProviderName { @@ -9,7 +7,10 @@ public static class ProviderName public const string Firebird = "Fdp"; public const string Informix = "Informix"; public const string MsSql = "Sql"; + public const string MsSql2000 = "MsSql2000"; + public const string MsSql2005 = "MsSql2005"; public const string MsSql2008 = "MsSql2008"; + public const string MsSql2012 = "MsSql2012"; public const string MySql = "MySql"; public const string Odbc = "Odbc"; public const string OleDb = "OleDb"; @@ -20,4 +21,21 @@ public static class ProviderName public const string SQLite = "SQLite"; public const string Sybase = "Sybase"; } -} + + public static class ProviderFullName + { + public const string DB2 = "IBM.Data.DB2"; + public const string Firebird = "FirebirdSql.Data.FirebirdClient"; + public const string Informix = "IBM.Data.Informix.Client"; + public const string MsSql = "System.Data.SqlClient"; + public const string MySql = "MySql.Data.MySqlClient"; + public const string Odbc = "System.Data.Odbc"; + public const string OleDb = "System.Data.OleDb"; + public const string OracleNet = "System.Data.OracleClient"; + public const string Oracle = "Oracle.DataAccess.Client"; + public const string PostgreSQL = "Npgsql"; + public const string SqlCe = "System.Data.SqlServerCe"; + public const string SQLite = "System.Data.SQLite"; + public const string Sybase = "Sybase.Data.AseClient"; + } +} diff --git a/Source/Data/DataProvider/SQLiteDataProvider.cs b/Source/Data/DataProvider/SQLiteDataProvider.cs index b9f2d2703..cd1ef01fc 100644 --- a/Source/Data/DataProvider/SQLiteDataProvider.cs +++ b/Source/Data/DataProvider/SQLiteDataProvider.cs @@ -107,13 +107,22 @@ public override object Convert(object value, ConvertType convertType) return SqlProvider.Convert(value, convertType); } + public override DataExceptionType ConvertErrorNumberToDataExceptionType(int number) + { + switch (number) + { + case 19: return DataExceptionType.ConstraintViolation; + } + return DataExceptionType.Undefined; + } + public override void AttachParameter(IDbCommand command, IDbDataParameter parameter) { if (parameter.Direction == ParameterDirection.Input || parameter.Direction == ParameterDirection.InputOutput) { if (parameter.Value is XmlDocument) { - parameter.Value = Encoding.UTF8.GetBytes(((XmlDocument) parameter.Value).InnerXml); + parameter.Value = Encoding.UTF8.GetBytes(((XmlDocument) parameter.Value).InnerXml); parameter.DbType = DbType.Binary; } } diff --git a/Source/Data/DataProvider/Sql2000DataProvider.cs b/Source/Data/DataProvider/Sql2000DataProvider.cs new file mode 100644 index 000000000..069cc7920 --- /dev/null +++ b/Source/Data/DataProvider/Sql2000DataProvider.cs @@ -0,0 +1,28 @@ +using System; +using System.Data; + +namespace BLToolkit.Data.DataProvider +{ + using Sql.SqlProvider; + + public sealed class Sql2000DataProvider : SqlDataProviderBase + { + public override string Name + { + get { return DataProvider.ProviderName.MsSql2000; } + } + + public override ISqlProvider CreateSqlProvider() + { + return new MsSql2000SqlProvider(); + } + + public override void AttachParameter(IDbCommand command, IDbDataParameter parameter) + { + if (parameter.DbType == DbType.DateTime2) + parameter.DbType = DbType.DateTime; + + base.AttachParameter(command, parameter); + } + } +} diff --git a/Source/Data/DataProvider/Sql2005DataProvider.cs b/Source/Data/DataProvider/Sql2005DataProvider.cs new file mode 100644 index 000000000..4b56693be --- /dev/null +++ b/Source/Data/DataProvider/Sql2005DataProvider.cs @@ -0,0 +1,28 @@ +using System; +using System.Data; + +namespace BLToolkit.Data.DataProvider +{ + using Sql.SqlProvider; + + public sealed class Sql2005DataProvider : SqlDataProviderBase + { + public override string Name + { + get { return DataProvider.ProviderName.MsSql2005; } + } + + public override ISqlProvider CreateSqlProvider() + { + return new MsSql2005SqlProvider(); + } + + public override void AttachParameter(IDbCommand command, IDbDataParameter parameter) + { + if (parameter.DbType == DbType.DateTime2) + parameter.DbType = DbType.DateTime; + + base.AttachParameter(command, parameter); + } + } +} diff --git a/Source/Data/DataProvider/Sql2008DataProvider.cs b/Source/Data/DataProvider/Sql2008DataProvider.cs index ca5e1fd52..00640520f 100644 --- a/Source/Data/DataProvider/Sql2008DataProvider.cs +++ b/Source/Data/DataProvider/Sql2008DataProvider.cs @@ -1,4 +1,7 @@ using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; namespace BLToolkit.Data.DataProvider { @@ -6,6 +9,23 @@ namespace BLToolkit.Data.DataProvider public sealed class Sql2008DataProvider : SqlDataProviderBase { + static readonly List> _udtTypeNameResolvers = new List>(); + + static Sql2008DataProvider() + { + AddUdtTypeNameResolver(ResolveStandartUdt); + } + + public static void AddUdtTypeNameResolver(Func resolver) + { + _udtTypeNameResolvers.Add(resolver); + } + + static string ResolveStandartUdt(Type type) + { + return type.Namespace == "Microsoft.SqlServer.Types" ? type.Name.Replace("Sql", "") : null; + } + public override string Name { get { return DataProvider.ProviderName.MsSql2008; } @@ -15,5 +35,20 @@ public override ISqlProvider CreateSqlProvider() { return new MsSql2008SqlProvider(); } + + public override void SetParameterValue(IDbDataParameter parameter, object value) + { + base.SetParameterValue(parameter, value); + SetUdtTypeName(parameter, value); + } + + static void SetUdtTypeName(IDbDataParameter parameter, object value) + { + var sqlParameter = parameter as System.Data.SqlClient.SqlParameter; + var valueType = value.GetType(); + + if (sqlParameter != null) + sqlParameter.UdtTypeName = _udtTypeNameResolvers.Select(_=>_(valueType)).FirstOrDefault(_=>!string.IsNullOrEmpty(_)); + } } } diff --git a/Source/Data/DataProvider/Sql2012DataProvider.cs b/Source/Data/DataProvider/Sql2012DataProvider.cs new file mode 100644 index 000000000..cf4e703cc --- /dev/null +++ b/Source/Data/DataProvider/Sql2012DataProvider.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; + +namespace BLToolkit.Data.DataProvider +{ + using Sql.SqlProvider; + + public sealed class Sql2012DataProvider : SqlDataProviderBase + { + static readonly List> _udtTypeNameResolvers = new List>(); + + static Sql2012DataProvider() + { + AddUdtTypeNameResolver(ResolveStandartUdt); + } + + public static void AddUdtTypeNameResolver(Func resolver) + { + _udtTypeNameResolvers.Add(resolver); + } + + static string ResolveStandartUdt(Type type) + { + return type.Namespace == "Microsoft.SqlServer.Types" ? type.Name.Replace("Sql", "") : null; + } + + public override string Name + { + get { return DataProvider.ProviderName.MsSql2012; } + } + + public override ISqlProvider CreateSqlProvider() + { + return new MsSql2012SqlProvider(); + } + + public override void SetParameterValue(IDbDataParameter parameter, object value) + { + base.SetParameterValue(parameter, value); + SetUdtTypeName(parameter, value); + } + + static void SetUdtTypeName(IDbDataParameter parameter, object value) + { + var sqlParameter = parameter as System.Data.SqlClient.SqlParameter; + var valueType = value.GetType(); + + if (sqlParameter != null) + sqlParameter.UdtTypeName = _udtTypeNameResolvers.Select(_=>_(valueType)).FirstOrDefault(_=>!string.IsNullOrEmpty(_)); + } + } +} diff --git a/Source/Data/DataProvider/SqlCeDataProvider.cs b/Source/Data/DataProvider/SqlCeDataProvider.cs index 9d07586f6..2ba1dafa7 100644 --- a/Source/Data/DataProvider/SqlCeDataProvider.cs +++ b/Source/Data/DataProvider/SqlCeDataProvider.cs @@ -111,5 +111,10 @@ public override ISqlProvider CreateSqlProvider() { return new SqlCeSqlProvider(); } + + public override DbType GetParameterDbType(DbType dbType) + { + return dbType == DbType.DateTime2 ? DbType.DateTime : dbType; + } } } diff --git a/Source/Data/DataProvider/SqlDataProviderBase.cs b/Source/Data/DataProvider/SqlDataProviderBase.cs index adafe1966..61b286713 100644 --- a/Source/Data/DataProvider/SqlDataProviderBase.cs +++ b/Source/Data/DataProvider/SqlDataProviderBase.cs @@ -6,8 +6,6 @@ using System.Data.SqlClient; using System.Linq; -using BLToolkit.Data.Sql; - using SqlException = System.Data.SqlClient.SqlException; using SqlParameter = System.Data.SqlClient.SqlParameter; @@ -144,6 +142,20 @@ public override object Convert(object value, ConvertType convertType) return SqlProvider.Convert(value, convertType); } + public override DataExceptionType ConvertErrorNumberToDataExceptionType(int number) + { + switch (number) + { + case 1205: return DataExceptionType.Deadlock; + case -2: return DataExceptionType.Timeout; + case 547: return DataExceptionType.ForeignKeyViolation; + case 2601: return DataExceptionType.UniqueIndexViolation; + case 2627: return DataExceptionType.ConstraintViolation; + } + + return DataExceptionType.Undefined; + } + /// /// Returns connection type. /// @@ -242,7 +254,7 @@ public override int InsertBatch( var idx = insertText.IndexOf('\n'); var tbl = insertText.Substring(0, idx).Substring("INSERT INTO ".Length).TrimEnd('\r'); var rd = new BulkCopyReader(members, collection); - var bc = new SqlBulkCopy((SqlConnection)db.Connection) + var bc = new SqlBulkCopy((SqlConnection)db.Connection, SqlBulkCopyOptions.Default, (SqlTransaction)db.Transaction) { BatchSize = maxBatchSize, DestinationTableName = tbl, @@ -404,6 +416,11 @@ public override void SetParameterValue(IDbDataParameter parameter, object value) { parameter.Value = (long)(ulong)value; } + else if (value is string) + { + parameter.Value = value; + if (parameter.DbType == DbType.String && ((string)value).Length == 0) parameter.Size = 1; + } else { base.SetParameterValue(parameter, value); diff --git a/Source/Data/DataProvider/SybaseDataProvider.cs b/Source/Data/DataProvider/SybaseDataProvider.cs index 3843cac36..54cf9caae 100644 --- a/Source/Data/DataProvider/SybaseDataProvider.cs +++ b/Source/Data/DataProvider/SybaseDataProvider.cs @@ -165,6 +165,8 @@ public override void PrepareCommand(ref CommandType commandType, ref string comm commandParameters = list.ToArray(); } + public override string EndOfSql { get { return ""; } } + public override DbType GetDbType(Type systemType) { if (systemType == typeof(byte[])) @@ -173,7 +175,6 @@ public override DbType GetDbType(Type systemType) return base.GetDbType(systemType); } - #region DataReaderEx public override IDataReader GetDataReader(MappingSchema schema, IDataReader dataReader) diff --git a/Source/Data/DbConnectionFactory.cs b/Source/Data/DbConnectionFactory.cs new file mode 100644 index 000000000..f036acb1a --- /dev/null +++ b/Source/Data/DbConnectionFactory.cs @@ -0,0 +1,88 @@ +using System.Collections.Generic; +using BLToolkit.Common; +using BLToolkit.Data.DataProvider; +using BLToolkit.Data.Sql; + +namespace BLToolkit.Data +{ + public abstract class DbConnectionFactory : IDbConnectionFactory + { + public DataProviderBase Provider; + public string ConnectionString { get; set; } + + #region IDbConnectionFactory Members + + public DbManager CreateDbManager() + { + return CreateDbManager(Provider, ConnectionString); + } + + public virtual DbManager CreateDbManager(DataProviderBase provider, string connectionString) + { + return new MyDbManager(provider, connectionString); + } + + #endregion + } + + public class MyDbManager : DbManager + { + public MyDbManager(DataProviderBase provider, string connectionString) : base(provider, connectionString) + { + } + + public override BLToolkit.Data.Sql.SqlQuery ProcessQuery(BLToolkit.Data.Sql.SqlQuery sqlQuery) + { + return base.ProcessQuery(sqlQuery); + + if (sqlQuery.IsInsert && sqlQuery.Insert.Into.Name == "Parent") + { + var expr = + new QueryVisitor().Find(sqlQuery.Insert, e => + { + if (e.ElementType == QueryElementType.SetExpression) + { + var se = (BLToolkit.Data.Sql.SqlQuery.SetExpression)e; + return ((SqlField)se.Column).Name == "ParentID"; + } + + return false; + }) as BLToolkit.Data.Sql.SqlQuery.SetExpression; + + if (expr != null) + { + var value = ConvertTo.From(((IValueContainer)expr.Expression).Value); + + if (value == 555) + { + var tableName = "Parent1"; + var dic = new Dictionary(); + + sqlQuery = new QueryVisitor().Convert(sqlQuery, e => + { + if (e.ElementType == QueryElementType.SqlTable) + { + var oldTable = (SqlTable)e; + + if (oldTable.Name == "Parent") + { + var newTable = new SqlTable(oldTable) { Name = tableName, PhysicalName = tableName }; + + foreach (var field in oldTable.Fields.Values) + dic.Add(field, newTable.Fields[field.Name]); + + return newTable; + } + } + + IQueryElement ex; + return dic.TryGetValue(e, out ex) ? ex : null; + }); + } + } + } + + return sqlQuery; + } + } +} \ No newline at end of file diff --git a/Source/Data/DbManager.Config.cs b/Source/Data/DbManager.Config.cs index 200384342..a4ead044b 100644 --- a/Source/Data/DbManager.Config.cs +++ b/Source/Data/DbManager.Config.cs @@ -3,8 +3,11 @@ using System.Collections.Generic; using System.Configuration; using System.Data; +using System.Data.SqlClient; using System.Diagnostics; using System.Linq; +using BLToolkit.Data.Linq; +using BLToolkit.DataAccess; namespace BLToolkit.Data { @@ -245,8 +248,11 @@ protected virtual string GetConnectionHash() static DbManager() { + AddDataProvider(new Sql2012DataProvider()); AddDataProvider(new Sql2008DataProvider()); + AddDataProvider(new Sql2005DataProvider()); AddDataProvider(new SqlDataProvider()); + AddDataProvider(new Sql2000DataProvider()); AddDataProvider(new AccessDataProvider()); AddDataProvider(new OleDbDataProvider()); AddDataProvider(new OdbcDataProvider()); @@ -337,13 +343,47 @@ public static DataProviderBase GetDataProvider(string configurationString) if (css != null && !string.IsNullOrEmpty(css.ProviderName)) { - // This hack should be redone. - // - var provider = css.ProviderName == "System.Data.SqlClient" ? - configurationString.IndexOf("2008") >= 0 ? - "MSSQL2008" : - css.ProviderName : - css.ProviderName; + string provider = null; + + if (css.ProviderName == "System.Data.SqlClient") + { + try + { + using (SqlConnection sqlConnection = new SqlConnection(css.ConnectionString)) + { + sqlConnection.Open(); + + string serverVersion = sqlConnection.ServerVersion; + string[] serverVersionDetails = serverVersion.Split(new string[] {"."}, + StringSplitOptions.None); + + int versionNumber = int.Parse(serverVersionDetails[0]); + + switch (versionNumber) + { + case 8: provider = "MSSQL2000"; break; + case 9: provider = "MSSQL2005"; break; //MSSQL 2005 -> Can the same as 2008 + case 10: provider = "MSSQL2008"; break; + case 11: provider = "MSSQL2012"; break; + default: provider = "MSSQL2008"; break; + } + } + } + catch (Exception) + {} + } + + if (provider == null) + { + // This hack should be redone. + // + provider = css.ProviderName == "System.Data.SqlClient" ? + configurationString.IndexOf("2012") >= 0 ? "MSSQL2012" : + configurationString.IndexOf("2008") >= 0 ? "MSSQL2008" : + configurationString.IndexOf("2000") >= 0 ? "MSSQL2000" : + css.ProviderName : + css.ProviderName; + } dp = _dataProviderNameList[provider]; } @@ -582,6 +622,30 @@ public static void AddDataProvider(DataProviderBase dataProvider) } } + public static void SetMappingTypeSequence(string sequenceName) + { + foreach (var providerBase in _dataProviderNameList.Values) + { + if (providerBase.MappingSchema != null) + { + providerBase.MappingSchema.SetMappingTypeSequence(typeof(T), sequenceName); + } + } + Query.ClearCache(); + SqlQueryBase.ClearCache(); + } + + public static void SetMappingTypeOwner(string ownerName) + { + foreach (var providerBase in _dataProviderNameList.Values) + { + if (providerBase.MappingSchema != null) + providerBase.MappingSchema.MetadataProvider.SetOwnerName(typeof(T), ownerName); + } + Query.ClearCache(); + SqlQueryBase.ClearCache(); + } + /// /// Adds a new data provider witch a specified name. /// diff --git a/Source/Data/DbManager.Linq.cs b/Source/Data/DbManager.Linq.cs index 77c866f79..aa490c793 100644 --- a/Source/Data/DbManager.Linq.cs +++ b/Source/Data/DbManager.Linq.cs @@ -80,11 +80,12 @@ PreparedQuery GetCommand(IQueryContext query) } var sqlProvider = DataProvider.CreateSqlProvider(); + sqlProvider.UseQueryText = UseQueryText; var cc = sqlProvider.CommandCount(sql); var sb = new StringBuilder(); - var commands = new string[cc]; + var commands = new string[cc]; for (var i = 0; i < cc; i++) { @@ -106,13 +107,16 @@ PreparedQuery GetCommand(IQueryContext query) }; } - protected virtual SqlQuery ProcessQuery(SqlQuery sqlQuery) + public virtual SqlQuery ProcessQuery(SqlQuery sqlQuery) { return sqlQuery; } void GetParameters(IQueryContext query, PreparedQuery pq) { + if (UseQueryText) + return; + var parameters = query.GetParameters(); if (parameters.Length == 0 && pq.SqlParameters.Count == 0) @@ -157,16 +161,21 @@ void AddParameter(ICollection parms, string name, SqlParameter if (value != null) { - if (parm.DbType == DbType.Object) - parms.Add(Parameter(name, value)); - else if (parm.DbSize == 0) - parms.Add(Parameter(name, value, parm.DbType)); - else - parms.Add(Parameter(name, value, parm.DbType, parm.DbSize)); + if (parm.DbType == DbType.Object) + { + parm.DbType = DataProvider.GetDbType(parm.SystemType); + parms.Add(Parameter(name, value)); + } + else if (parm.DbSize == 0) + parms.Add(Parameter(name, value, parm.DbType)); + else + parms.Add(Parameter(name, value, parm.DbType, parm.DbSize)); } else { - var dataType = DataProvider.GetDbType(parm.SystemType); + var dataType = DataProvider.GetDbType(parm.SystemType); + if (parm.DbType != DbType.Object) + dataType = parm.DbType; parms.Add(dataType == DbType.Object ? Parameter(name, value) : Parameter(name, null, dataType)); } } @@ -250,9 +259,9 @@ IDataReader IDataContext.ExecuteReader(object query) { var pq = (PreparedQuery)query; - SetCommand(pq.Commands[0], pq.Parameters); + SetCommand(pq.Commands[0], pq.Parameters); - var now = default(DateTime); + var now = default(DateTime); if (TraceSwitch.TraceInfo) now = DateTime.Now; diff --git a/Source/Data/DbManager.cs b/Source/Data/DbManager.cs index c5f35c57c..3a839762d 100644 --- a/Source/Data/DbManager.cs +++ b/Source/Data/DbManager.cs @@ -158,6 +158,11 @@ public static void TurnTraceSwitchOn() set { _canRaiseEvents = value; } } + /// + /// Use plain text query instead of using command parameters + /// + public bool UseQueryText { get; set; } + #endregion #region Connection @@ -620,12 +625,15 @@ private IDataReader ExecuteReaderInternal(CommandBehavior commandBehavior) return ExecuteOperation( OperationType.ExecuteReader, () => - _dataProvider.GetDataReader(_mappingSchema, SelectCommand.ExecuteReader(commandBehavior))); + { + var dataReader = _dataProvider.GetDataReader(SelectCommand, commandBehavior); + return _dataProvider.GetDataReader(_mappingSchema, dataReader); + }); } private int ExecuteNonQueryInternal() { - return ExecuteOperation(OperationType.ExecuteNonQuery, SelectCommand.ExecuteNonQuery); + return ExecuteOperation(OperationType.ExecuteNonQuery, SelectCommand.ExecuteNonQuery); } #endregion @@ -1596,7 +1604,7 @@ public IDbDataParameter Parameter( parameter.ParameterName = parameterName; parameter.Direction = parameterDirection; - parameter.DbType = dbType; + parameter.DbType = _dataProvider.GetParameterDbType(dbType); _dataProvider.SetParameterValue(parameter, value ?? DBNull.Value); @@ -2608,21 +2616,24 @@ internal int ExecuteForEach(IEnumerable collection, MemberMapper[] members { var value = members[i].GetValue(obj); var type = members[i].MemberAccessor.Type; - //var dbType = members[i].GetDbType(); + var dbType = members[i].GetDbType(); IDbDataParameter p; - if ((value == null || value == DBNull.Value) && type == typeof(byte[]) || type == typeof(System.Data.Linq.Binary)) + if ((value == null || value == DBNull.Value) && (dbType == DbType.Binary || type == typeof(byte[])) || + type == typeof(System.Data.Linq.Binary)) { p = Parameter(baseParameters[i].ParameterName + nRows, DBNull.Value, DbType.Binary); } else { if (value != null && value.GetType().IsEnum) - value = MappingSchema.MapEnumToValue(value, true); - - p = Parameter(baseParameters[i].ParameterName + nRows, value ?? DBNull.Value/*, dbType*/); - } + value = MappingSchema.MapEnumToValue(value, true); + + p = value != null + ? Parameter(baseParameters[i].ParameterName + nRows, value) + : Parameter(baseParameters[i].ParameterName + nRows, DBNull.Value, members[i].GetDbType()); + } parameters.Add(p); hasValue.Add(value != null); @@ -2641,11 +2652,16 @@ internal int ExecuteForEach(IEnumerable collection, MemberMapper[] members isPrepared = false; var type = members[i].MemberAccessor.Type; + var dbType = members[i].GetDbType(); if (value.GetType().IsEnum) value = MappingSchema.MapEnumToValue(value, true); - var p = Parameter(baseParameters[i].ParameterName + nRows, value ?? DBNull.Value/*, dbType*/); + IDbDataParameter p; + if (dbType != DbType.Object) + p = Parameter(baseParameters[i].ParameterName + nRows, value ?? DBNull.Value, dbType); + else + p = Parameter(baseParameters[i].ParameterName + nRows, value ?? DBNull.Value/*, dbType*/); parameters[n + i] = p; hasValue [n + i] = true; @@ -2882,6 +2898,20 @@ public int ExecuteNonQuery(params object[] objects) return rowsAffected; } + /// + /// Executes several SQL statements at a time using single roundtrip to the server (if supported by data provider). + /// + /// + /// All parameters of the query must be arrays of type corresponding to the type of the parameter. + /// The value of the parameter must be equal to the number of elements of each array. + /// + /// The number of iterations. + /// The number of rows affected by the command. + public int ExecuteArray(int iterations) + { + return ExecuteOperation(OperationType.ExecuteNonQuery, () => DataProvider.ExecuteArray(SelectCommand, iterations)); + } + #endregion #region ExecuteScalar @@ -3041,7 +3071,8 @@ public object ExecuteScalar(ScalarSourceType sourceType, NameOrIndexParameter na /// public T ExecuteScalar() { - return (T)_mappingSchema.ConvertChangeType(ExecuteScalar(), typeof(T)); + var value = _mappingSchema.ConvertChangeType(ExecuteScalar(), typeof(T)); + return value == null && typeof(T).IsEnum ? default(T) : (T)value; } /// @@ -4411,8 +4442,9 @@ private T ExecuteOperation(OperationType operationType, Func operation) } catch (Exception ex) { - if (res is IDisposable) - ((IDisposable)res).Dispose(); + var disposable = res as IDisposable; + if (disposable != null) + (disposable).Dispose(); HandleOperationException(operationType, ex); throw; diff --git a/Source/Data/IDbConnectionFactory.cs b/Source/Data/IDbConnectionFactory.cs new file mode 100644 index 000000000..dd47bb0b7 --- /dev/null +++ b/Source/Data/IDbConnectionFactory.cs @@ -0,0 +1,7 @@ +namespace BLToolkit.Data +{ + public interface IDbConnectionFactory + { + DbManager CreateDbManager(); + } +} \ No newline at end of file diff --git a/Source/Data/Linq/Builder/AggregationBuilder.cs b/Source/Data/Linq/Builder/AggregationBuilder.cs index 412e7a7c5..3accc0653 100644 --- a/Source/Data/Linq/Builder/AggregationBuilder.cs +++ b/Source/Data/Linq/Builder/AggregationBuilder.cs @@ -29,7 +29,7 @@ protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, Meth sequence = new SubQueryContext(sequence); } - if (sequence.SqlQuery.OrderBy.Items.Count > 0) + if (!sequence.SqlQuery.OrderBy.IsEmpty) { if (sequence.SqlQuery.Select.TakeValue == null && sequence.SqlQuery.Select.SkipValue == null) sequence.SqlQuery.OrderBy.Items.Clear(); diff --git a/Source/Data/Linq/Builder/AllAnyBuilder.cs b/Source/Data/Linq/Builder/AllAnyBuilder.cs index e8d789101..a4d00e6cb 100644 --- a/Source/Data/Linq/Builder/AllAnyBuilder.cs +++ b/Source/Data/Linq/Builder/AllAnyBuilder.cs @@ -1,5 +1,4 @@ using System; -using System.Linq; using System.Linq.Expressions; namespace BLToolkit.Data.Linq.Builder @@ -16,7 +15,7 @@ protected override bool CanBuildMethodCall(ExpressionBuilder builder, MethodCall protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo) { - var sequence = builder.BuildSequence(new BuildInfo(buildInfo, methodCall.Arguments[0])); + var sequence = builder.BuildSequence(new BuildInfo(buildInfo, methodCall.Arguments[0]) { CopyTable = true }); if (methodCall.Arguments.Count == 2) { diff --git a/Source/Data/Linq/Builder/AsUpdatableBuilder.cs b/Source/Data/Linq/Builder/AsUpdatableBuilder.cs new file mode 100644 index 000000000..2bf8eb9e2 --- /dev/null +++ b/Source/Data/Linq/Builder/AsUpdatableBuilder.cs @@ -0,0 +1,26 @@ +using System; +using System.Linq.Expressions; + +namespace BLToolkit.Data.Linq.Builder +{ + using BLToolkit.Linq; + + class AsUpdatableBuilder : MethodCallBuilder + { + protected override bool CanBuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo) + { + return methodCall.IsQueryable("AsUpdatable"); + } + + protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo) + { + return builder.BuildSequence(new BuildInfo(buildInfo, methodCall.Arguments[0])); + } + + protected override SequenceConvertInfo Convert( + ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo, ParameterExpression param) + { + return null; + } + } +} diff --git a/Source/Data/Linq/Builder/BuildInfo.cs b/Source/Data/Linq/Builder/BuildInfo.cs index 00d767c18..48d6ce998 100644 --- a/Source/Data/Linq/Builder/BuildInfo.cs +++ b/Source/Data/Linq/Builder/BuildInfo.cs @@ -30,6 +30,7 @@ public BuildInfo(BuildInfo buildInfo, Expression expression, SqlQuery sqlQuery) public IBuildContext Parent { get; set; } public Expression Expression { get; set; } public SqlQuery SqlQuery { get; set; } + public bool CopyTable { get; set; } public bool IsSubQuery { get { return Parent != null; } } diff --git a/Source/Data/Linq/Builder/ConcatUnionBuilder.cs b/Source/Data/Linq/Builder/ConcatUnionBuilder.cs index 8cb477cdc..f7510be96 100644 --- a/Source/Data/Linq/Builder/ConcatUnionBuilder.cs +++ b/Source/Data/Linq/Builder/ConcatUnionBuilder.cs @@ -100,9 +100,6 @@ void Init(SubQueryContext sequence1, SubQueryContext sequence2) MemberExpression = Expression.MakeMemberAccess(_unionParameter, info.Members[0]) }; - //if (sequence1.IsExpression(member.MemberExpression, 1, RequestFor.Object).Result) - // throw new LinqException("Types in {0} are constructed incompatibly.", _methodCall.Method.Name); - members.Add(new UnionMember { Member = member, Info1 = info }); } @@ -113,7 +110,7 @@ void Init(SubQueryContext sequence1, SubQueryContext sequence2) var em = members.FirstOrDefault(m => m.Member.SequenceInfo != null && - m.Member.SequenceInfo.CompareMembers(info)); + m.Member.SequenceInfo.CompareLastMember(info)); if (em == null) { @@ -141,8 +138,8 @@ void Init(SubQueryContext sequence1, SubQueryContext sequence2) { member.Info1 = new SqlInfo(member.Info2.Members) { - Sql = new SqlValue(null), - Query = sequence1.SqlQuery, + Sql = new SqlValue(null), + Query = sequence1.SqlQuery, }; member.Member.SequenceInfo = member.Info1; @@ -152,8 +149,8 @@ void Init(SubQueryContext sequence1, SubQueryContext sequence2) { member.Info2 = new SqlInfo(member.Info1.Members) { - Sql = new SqlValue(null), - Query = sequence2.SqlQuery, + Sql = new SqlValue(null), + Query = sequence2.SqlQuery, }; } @@ -161,8 +158,6 @@ void Init(SubQueryContext sequence1, SubQueryContext sequence2) sequence2.SqlQuery.Select.Columns.Add(new SqlQuery.Column(sequence2.SqlQuery, member.Info2.Sql)); member.Member.SequenceInfo.Index = i; - //member.Info1.Index = i; - //member.Info2.Index = i; _members[member.Member.MemberExpression.Member] = member.Member; } @@ -172,58 +167,6 @@ void Init(SubQueryContext sequence1, SubQueryContext sequence2) foreach (var key in sequence2.ColumnIndexes.Keys.ToList()) sequence2.ColumnIndexes[key] = sequence2.SqlQuery.Select.Add(key); - - /* - if (_isObject) - { - foreach (var info in info1) - { - if (info.Member == null) - throw new InvalidOperationException(); - - CheckAndAddMember(sequence1, sequence2, info); - } - - info2 = sequence2.ConvertToIndex(null, 0, ConvertFlags.All).OrderBy(_ => _.Index).ToList(); - - if (info1.Count != info2.Count) - { - for (var i = 0; i < info2.Count; i++) - { - if (i < info1.Count) - { - if (info1[i].Index != info2[i].Index) - throw new InvalidOperationException(); - } - else - { - CheckAndAddMember(sequence2, sequence1, info2[i]); - } - } - } - } - else - sequence2.ConvertToIndex(null, 0, ConvertFlags.All).OrderBy(_ => _.Index).ToList(); - */ - } - - void CheckAndAddMember(IBuildContext sequence1, IBuildContext sequence2, SqlInfo info) - { - var member = new Member - { - SequenceInfo = info, - MemberExpression = Expression.PropertyOrField(_unionParameter, info.Members[0].Name) - }; - - if (sequence1.IsExpression(member.MemberExpression, 1, RequestFor.Object).Result) - throw new LinqException("Types in {0} are constructed incompatibly.", _methodCall.Method.Name); - - var idx = sequence2.ConvertToIndex(member.MemberExpression, 1, ConvertFlags.Field); - - if (idx[0].Index != member.SequenceInfo.Index) - throw new LinqException("Types in {0} are constructed incompatibly.", _methodCall.Method.Name); - - _members.Add(member.MemberExpression.Member, member); } public override void BuildQuery(Query query, ParameterExpression queryParameter) @@ -287,7 +230,7 @@ public override Expression BuildExpression(Expression expression, int level) { var levelExpression = expression.GetLevelExpression(1); - if (expression == levelExpression) + if (expression == levelExpression && !IsExpression(expression, 1, RequestFor.Object).Result) { var idx = ConvertToIndex(expression, level, ConvertFlags.Field); var n = idx[0].Index; @@ -298,8 +241,6 @@ public override Expression BuildExpression(Expression expression, int level) return Builder.BuildSql(expression.Type, n); } } - - //throw new InvalidOperationException(); } return base.BuildExpression(expression, level); @@ -374,9 +315,9 @@ public override SqlInfo[] ConvertToSql(Expression expression, int level, Convert { member.SqlQueryInfo = new SqlInfo(member.MemberExpression.Member) { - Index = -2, - Sql = SubQuery.SqlQuery.Select.Columns[member.SequenceInfo.Index], - Query = SqlQuery, + Index = -2, + Sql = SubQuery.SqlQuery.Select.Columns[member.SequenceInfo.Index], + Query = SqlQuery, }; } diff --git a/Source/Data/Linq/Builder/ContainsBuilder.cs b/Source/Data/Linq/Builder/ContainsBuilder.cs index 7f07e69b6..4901099e2 100644 --- a/Source/Data/Linq/Builder/ContainsBuilder.cs +++ b/Source/Data/Linq/Builder/ContainsBuilder.cs @@ -123,7 +123,7 @@ public override ISqlExpression GetSubQuery(IBuildContext context) ctx.IsExpression(expr, 0, RequestFor.Expression).Result)) { Sequence.ConvertToIndex(null, 0, ConvertFlags.All); - var ex = Builder.ConvertToSql(ctx, _methodCall.Arguments[1]); + var ex = Builder.ConvertToSql(ctx, _methodCall.Arguments[1], false); cond = new SqlQuery.Condition(false, new SqlQuery.Predicate.InSubQuery(ex, false, SqlQuery)); } else diff --git a/Source/Data/Linq/Builder/DeleteBuilder.cs b/Source/Data/Linq/Builder/DeleteBuilder.cs index 40d2f34c4..02ba6e6f6 100644 --- a/Source/Data/Linq/Builder/DeleteBuilder.cs +++ b/Source/Data/Linq/Builder/DeleteBuilder.cs @@ -22,6 +22,33 @@ protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, Meth sequence.SqlQuery.QueryType = QueryType.Delete; + // Check association. + // + var ctx = sequence as SelectContext; + + if (ctx != null && ctx.IsScalar) + { + var res = ctx.IsExpression(null, 0, RequestFor.Association); + + if (res.Result && res.Context is TableBuilder.AssociatedTableContext) + { + var atc = (TableBuilder.AssociatedTableContext)res.Context; + sequence.SqlQuery.Delete.Table = atc.SqlTable; + } + else + { + res = ctx.IsExpression(null, 0, RequestFor.Table); + + if (res.Result && res.Context is TableBuilder.TableContext) + { + var tc = (TableBuilder.TableContext)res.Context; + + if (sequence.SqlQuery.From.Tables.Count == 0 || sequence.SqlQuery.From.Tables[0].Source != tc.SqlQuery) + sequence.SqlQuery.Delete.Table = tc.SqlTable; + } + } + } + return new DeleteContext(buildInfo.Parent, sequence); } diff --git a/Source/Data/Linq/Builder/DistinctBuilder.cs b/Source/Data/Linq/Builder/DistinctBuilder.cs index fb4e7d3b4..dbb7cc024 100644 --- a/Source/Data/Linq/Builder/DistinctBuilder.cs +++ b/Source/Data/Linq/Builder/DistinctBuilder.cs @@ -21,6 +21,7 @@ protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, Meth sequence = new SubQueryContext(sequence); sequence.SqlQuery.Select.IsDistinct = true; + sequence.ConvertToIndex(null, 0, ConvertFlags.All); return sequence; } diff --git a/Source/Data/Linq/Builder/ExpressionBuilder.QueryBuilder.cs b/Source/Data/Linq/Builder/ExpressionBuilder.QueryBuilder.cs index 90ceb9682..5f0a0a1ca 100644 --- a/Source/Data/Linq/Builder/ExpressionBuilder.QueryBuilder.cs +++ b/Source/Data/Linq/Builder/ExpressionBuilder.QueryBuilder.cs @@ -19,30 +19,30 @@ partial class ExpressionBuilder public Expression BuildExpression(IBuildContext context, Expression expression) { - var newExpr = expression.Convert2(pi => + var newExpr = expression.Convert2(expr => { - if (_skippedExpressions.Contains(pi)) - return new ExpressionHelper.ConvertInfo(pi, true); + if (_skippedExpressions.Contains(expr)) + return new ExpressionHelper.ConvertInfo(expr, true); - if (pi.Find(IsNoneSqlMember) != null) - return new ExpressionHelper.ConvertInfo(pi); + if (expr.Find(IsNoneSqlMember) != null) + return new ExpressionHelper.ConvertInfo(expr); - switch (pi.NodeType) + switch (expr.NodeType) { case ExpressionType.MemberAccess: { - if (IsServerSideOnly(pi) || PreferServerSide(pi)) - return new ExpressionHelper.ConvertInfo(BuildSql(context, pi)); + if (IsServerSideOnly(expr) || PreferServerSide(expr)) + return new ExpressionHelper.ConvertInfo(BuildSql(context, expr)); - var ma = (MemberExpression)pi; + var ma = (MemberExpression)expr; if (SqlProvider.ConvertMember(ma.Member) != null) break; - var ctx = GetContext(context, pi); + var ctx = GetContext(context, expr); if (ctx != null) - return new ExpressionHelper.ConvertInfo(ctx.BuildExpression(pi, 0)); + return new ExpressionHelper.ConvertInfo(ctx.BuildExpression(expr, 0)); var ex = ma.Expression; @@ -60,47 +60,47 @@ public Expression BuildExpression(IBuildContext context, Expression expression) case ExpressionType.Parameter: { - if (pi == ParametersParam) + if (expr == ParametersParam) break; - var ctx = GetContext(context, pi); + var ctx = GetContext(context, expr); if (ctx != null) - return new ExpressionHelper.ConvertInfo(ctx.BuildExpression(pi, 0)); + return new ExpressionHelper.ConvertInfo(ctx.BuildExpression(expr, 0)); break; } case ExpressionType.Constant: { - if (ExpressionHelper.IsConstant(pi.Type)) + if (ExpressionHelper.IsConstant(expr.Type)) break; - if (_expressionAccessors.ContainsKey(pi)) - return new ExpressionHelper.ConvertInfo(Expression.Convert(_expressionAccessors[pi], pi.Type)); + if (_expressionAccessors.ContainsKey(expr)) + return new ExpressionHelper.ConvertInfo(Expression.Convert(_expressionAccessors[expr], expr.Type)); break; } case ExpressionType.Coalesce: - if (pi.Type == typeof(string) && MappingSchema.GetDefaultNullValue() != null) - return new ExpressionHelper.ConvertInfo(BuildSql(context, pi)); + if (expr.Type == typeof(string) && MappingSchema.GetDefaultNullValue() != null) + return new ExpressionHelper.ConvertInfo(BuildSql(context, expr)); - if (CanBeTranslatedToSql(context, ConvertExpression(pi), true)) - return new ExpressionHelper.ConvertInfo(BuildSql(context, pi)); + if (CanBeTranslatedToSql(context, ConvertExpression(expr), true)) + return new ExpressionHelper.ConvertInfo(BuildSql(context, expr)); break; case ExpressionType.Conditional: - if (CanBeTranslatedToSql(context, ConvertExpression(pi), true)) - return new ExpressionHelper.ConvertInfo(BuildSql(context, pi)); + if (CanBeTranslatedToSql(context, ConvertExpression(expr), true)) + return new ExpressionHelper.ConvertInfo(BuildSql(context, expr)); break; case ExpressionType.Call: { - var ce = (MethodCallExpression)pi; + var ce = (MethodCallExpression)expr; if (IsGroupJoinSource(context, ce)) { @@ -113,14 +113,14 @@ public Expression BuildExpression(IBuildContext context, Expression expression) if (IsSubQuery(context, ce)) { - if (TypeHelper.IsSameOrParent(typeof(IEnumerable), pi.Type) && pi.Type != typeof(string) && !pi.Type.IsArray) - return new ExpressionHelper.ConvertInfo(BuildMultipleQuery(context, pi)); + if (TypeHelper.IsSameOrParent(typeof(IEnumerable), expr.Type) && expr.Type != typeof(string) && !expr.Type.IsArray) + return new ExpressionHelper.ConvertInfo(BuildMultipleQuery(context, expr)); return new ExpressionHelper.ConvertInfo(GetSubQuery(context, ce).BuildExpression(null, 0)); } - if (IsServerSideOnly(pi) || PreferServerSide(pi)) - return new ExpressionHelper.ConvertInfo(BuildSql(context, pi)); + if (IsServerSideOnly(expr) || PreferServerSide(expr)) + return new ExpressionHelper.ConvertInfo(BuildSql(context, expr)); } break; @@ -128,7 +128,7 @@ public Expression BuildExpression(IBuildContext context, Expression expression) if (EnforceServerSide(context)) { - switch (pi.NodeType) + switch (expr.NodeType) { case ExpressionType.MemberInit : case ExpressionType.New : @@ -136,13 +136,13 @@ public Expression BuildExpression(IBuildContext context, Expression expression) break; default : - if (CanBeCompiled(pi)) + if (CanBeCompiled(expr)) break; - return new ExpressionHelper.ConvertInfo(BuildSql(context, pi)); + return new ExpressionHelper.ConvertInfo(BuildSql(context, expr)); } } - return new ExpressionHelper.ConvertInfo(pi); + return new ExpressionHelper.ConvertInfo(expr); }); return newExpr; @@ -159,7 +159,7 @@ static bool EnforceServerSide(IBuildContext context) Expression BuildSql(IBuildContext context, Expression expression) { - var sqlex = ConvertToSqlExpression(context, expression); + var sqlex = ConvertToSqlExpression(context, expression, true); var idx = context.SqlQuery.Select.Add(sqlex); idx = context.ConvertToParentIndex(idx, context); @@ -169,6 +169,51 @@ Expression BuildSql(IBuildContext context, Expression expression) return field; } + public Expression BuildSql(MemberAccessor ma, int idx, MethodInfo checkNullFunction, Expression context) + { + var expr = Expression.Call(DataReaderParam, ReflectionHelper.DataReader.GetValue, Expression.Constant(idx)); + + if (checkNullFunction != null) + expr = Expression.Call(null, checkNullFunction, expr, context); + + Expression mapper; + + if (TypeHelper.IsEnumOrNullableEnum(ma.Type)) + { + var type = TypeHelper.ToNullable(ma.Type); + mapper = + Expression.Convert( + Expression.Call( + Expression.Constant(MappingSchema), + ReflectionHelper.MapSchema.MapValueToEnumWithMemberAccessor, + expr, + Expression.Constant(ma)), + type); + } + else + { + MethodInfo mi; + + if (!ReflectionHelper.MapSchema.Converters.TryGetValue(ma.Type, out mi)) + { + mapper = + Expression.Convert( + Expression.Call( + Expression.Constant(MappingSchema), + ReflectionHelper.MapSchema.ChangeType, + expr, + Expression.Constant(ma.Type)), + ma.Type); + } + else + { + mapper = Expression.Call(Expression.Constant(MappingSchema), mi, expr); + } + } + + return mapper; + } + public Expression BuildSql(Type type, int idx, MethodInfo checkNullFunction, Expression context) { var expr = Expression.Call(DataReaderParam, ReflectionHelper.DataReader.GetValue, Expression.Constant(idx)); @@ -218,6 +263,11 @@ public Expression BuildSql(Type type, int idx) return BuildSql(type, idx, null, null); } + public Expression BuildSql(MemberAccessor ma, int idx) + { + return BuildSql(ma, idx, null, null); + } + #endregion #region IsNonSqlMember @@ -236,7 +286,7 @@ bool IsNoneSqlMember(Expression expr) select c.ObjectMapper ).FirstOrDefault(); - return om != null && om.Associations.All(a => a.MemberAccessor.MemberInfo != me.Member) && om[me.Member.Name, true] == null; + return om != null && om.Associations.All(a => !TypeHelper.Equals(a.MemberAccessor.MemberInfo, me.Member)) && om[me.Member.Name, true] == null; } } diff --git a/Source/Data/Linq/Builder/ExpressionBuilder.SqlBuilder.cs b/Source/Data/Linq/Builder/ExpressionBuilder.SqlBuilder.cs index c51dbd3a9..87958ee3f 100644 --- a/Source/Data/Linq/Builder/ExpressionBuilder.SqlBuilder.cs +++ b/Source/Data/Linq/Builder/ExpressionBuilder.SqlBuilder.cs @@ -63,7 +63,7 @@ bool CheckSubQueryForWhere(IBuildContext context, Expression expression, out boo return false; } - var stopWalking = false; + var stopWalking = false; switch (expr.NodeType) { @@ -71,7 +71,8 @@ bool CheckSubQueryForWhere(IBuildContext context, Expression expression, out boo { var ma = (MemberExpression)expr; - if (TypeHelper.IsNullableValueMember(ma.Member)) + if (TypeHelper.IsNullableValueMember(ma.Member) || + TypeHelper.IsNullableHasValueMember(ma.Member)) break; if (SqlProvider.ConvertMember(ma.Member) == null) @@ -547,30 +548,30 @@ public SqlInfo[] ConvertExpressions(IBuildContext context, Expression expression if (ctx != null && ctx.IsExpression(expression, 0, RequestFor.Object).Result) return ctx.ConvertToSql(expression, 0, queryConvertFlag); - return new[] { new SqlInfo { Sql = ConvertToSql(context, expression) } }; + return new[] { new SqlInfo { Sql = ConvertToSql(context, expression, false) } }; } - public ISqlExpression ConvertToSqlExpression(IBuildContext context, Expression expression) + public ISqlExpression ConvertToSqlExpression(IBuildContext context, Expression expression, bool convertEnum) { var expr = ConvertExpression(expression); - return ConvertToSql(context, expr); + return ConvertToSql(context, expr, false, convertEnum); } #if FW3 - public ISqlExpression ConvertToSql(IBuildContext context, Expression expression) + public ISqlExpression ConvertToSql(IBuildContext context, Expression expression, bool unwrap) { - return ConvertToSql(context, expression, false); + return ConvertToSql(context, expression, unwrap, true); } #endif - public ISqlExpression ConvertToSql(IBuildContext context, Expression expression, bool unwrap + public ISqlExpression ConvertToSql(IBuildContext context, Expression expression, bool unwrap, bool convertEnum #if !FW3 - = false + = true #endif ) { if (CanBeConstant(expression)) - return BuildConstant(expression); + return BuildConstant(expression, convertEnum); if (CanBeCompiled(expression)) return BuildParameter(expression).SqlParameter; @@ -616,8 +617,8 @@ public ISqlExpression ConvertToSql(IBuildContext context, Expression expression, case ExpressionType.Coalesce : { var e = (BinaryExpression)expression; - var l = ConvertToSql(context, e.Left); - var r = ConvertToSql(context, e.Right); + var l = ConvertToSql(context, e.Left, false); + var r = ConvertToSql(context, e.Right, false); var t = e.Type; switch (expression.NodeType) @@ -663,7 +664,7 @@ public ISqlExpression ConvertToSql(IBuildContext context, Expression expression, case ExpressionType.NegateChecked : { var e = (UnaryExpression)expression; - var o = ConvertToSql(context, e.Operand); + var o = ConvertToSql(context, e.Operand, false); var t = e.Type; switch (expression.NodeType) @@ -681,34 +682,36 @@ public ISqlExpression ConvertToSql(IBuildContext context, Expression expression, case ExpressionType.ConvertChecked : { var e = (UnaryExpression)expression; - var o = ConvertToSql(context, e.Operand); - - if (e.Method == null && e.IsLifted) - return o; - - var t = e.Operand.Type; - var s = SqlDataType.GetDataType(t); - - if (o.SystemType != null && s.Type == typeof(object)) - { - t = o.SystemType; - s = SqlDataType.GetDataType(t); - } - - if (e.Type == t || t.IsEnum && Enum.GetUnderlyingType(t) == e.Type) - return o; - - return Convert( - context, - new SqlFunction(e.Type, "$Convert$", SqlDataType.GetDataType(e.Type), s, o)); - } - - case ExpressionType.Conditional : - { - var e = (ConditionalExpression)expression; - var s = ConvertToSql(context, e.Test); - var t = ConvertToSql(context, e.IfTrue); - var f = ConvertToSql(context, e.IfFalse); + var o = ConvertToSql(context, e.Operand, false); + + if (e.Method == null && e.IsLifted) + return o; + + var t = e.Operand.Type; + var s = SqlDataType.GetDataType(t); + + if (o.SystemType != null && s.Type == typeof(object)) + { + t = o.SystemType; + s = SqlDataType.GetDataType(t); + } + + if (e.Type == t || + t.IsEnum && Enum.GetUnderlyingType(t) == e.Type || + e.Type.IsEnum && Enum.GetUnderlyingType(e.Type) == t) + return o; + + return Convert( + context, + new SqlFunction(e.Type, "$Convert$", SqlDataType.GetDataType(e.Type), s, o)); + } + + case ExpressionType.Conditional : + { + var e = (ConditionalExpression)expression; + var s = ConvertToSql(context, e.Test, false); + var t = ConvertToSql(context, e.IfTrue, false); + var f = ConvertToSql(context, e.IfFalse, false); if (f is SqlFunction) { @@ -809,9 +812,9 @@ public ISqlExpression ConvertToSql(IBuildContext context, Expression expression, var parms = new List(); if (e.Object != null) - parms.Add(ConvertToSql(context, e.Object)); + parms.Add(ConvertToSql(context, e.Object, false)); - parms.AddRange(e.Arguments.Select(t => ConvertToSql(context, t))); + parms.AddRange(e.Arguments.Select(t => ConvertToSql(context, t, false))); return Convert(context, attr.GetExpression(e.Method, parms.ToArray())); } @@ -841,7 +844,7 @@ public ISqlExpression ConvertToSql(IBuildContext context, Expression expression, return dic.TryGetValue(wpi, out ppi) ? ppi : wpi; }); - return ConvertToSql(context, pie); + return ConvertToSql(context, pie, false); } break; @@ -855,13 +858,13 @@ public ISqlExpression ConvertToSql(IBuildContext context, Expression expression, } case (ExpressionType)ChangeTypeExpression.ChangeTypeType : - return ConvertToSql(context, ((ChangeTypeExpression)expression).Expression); + return ConvertToSql(context, ((ChangeTypeExpression)expression).Expression, false); } if (expression.Type == typeof(bool) && _convertedPredicates.Add(expression)) { var predicate = ConvertPredicate(context, expression); - _convertedPredicates.Remove(expression); + _convertedPredicates.Remove(expression); if (predicate != null) return new SqlQuery.SearchCondition(new SqlQuery.Condition(false, predicate)); } @@ -1042,7 +1045,7 @@ bool CanBeCompiled(Expression expr) readonly Dictionary _constants = new Dictionary(); - SqlValue BuildConstant(Expression expr) + SqlValue BuildConstant(Expression expr, bool convertEnum) { SqlValue value; @@ -1052,13 +1055,13 @@ SqlValue BuildConstant(Expression expr) var lambda = Expression.Lambda>(Expression.Convert(expr, typeof(object))); var v = lambda.Compile()(); - if (v != null && v.GetType().IsEnum) - { - var attrs = v.GetType().GetCustomAttributes(typeof(SqlEnumAttribute), true); - - v = Map.EnumToValue(v, attrs.Length == 0); - } - + if (v != null && convertEnum && v.GetType().IsEnum) + { + var attrs = v.GetType().GetCustomAttributes(typeof(SqlEnumAttribute), true); + + v = Map.EnumToValue(v, attrs.Length == 0); + } + value = new SqlValue(v); _constants.Add(expr, value); @@ -1220,7 +1223,7 @@ ISqlPredicate ConvertPredicate(IBuildContext context, Expression expression) case ExpressionType.Conditional : return Convert(context, new SqlQuery.Predicate.ExprExpr( - ConvertToSql(context, expression), + ConvertToSql(context, expression, false), SqlQuery.Predicate.Operator.Equal, new SqlValue(true))); @@ -1232,7 +1235,7 @@ ISqlPredicate ConvertPredicate(IBuildContext context, Expression expression) e.Member.DeclaringType.IsGenericType && e.Member.DeclaringType.GetGenericTypeDefinition() == typeof(Nullable<>)) { - var expr = ConvertToSql(context, e.Expression); + var expr = ConvertToSql(context, e.Expression, false); return Convert(context, new SqlQuery.Predicate.IsNull(expr, true)); } @@ -1251,7 +1254,7 @@ ISqlPredicate ConvertPredicate(IBuildContext context, Expression expression) } } - var ex = ConvertToSql(context, expression); + var ex = ConvertToSql(context, expression, false); if (SqlExpression.NeedsEqual(ex)) return Convert(context, new SqlQuery.Predicate.ExprExpr(ex, SqlQuery.Predicate.Operator.Equal, new SqlValue(true))); @@ -1285,6 +1288,22 @@ ISqlPredicate ConvertCompare(IBuildContext context, ExpressionType nodeType, Exp } } + #region special case for char? + +// if (left.NodeType == ExpressionType.Convert && left.Type == typeof(int?) && right.NodeType == ExpressionType.Convert) +// { +// var convLeft = left as UnaryExpression; +// var convRight = right as UnaryExpression; +// +// if (convLeft != null && convRight != null && convLeft.Operand.Type == typeof(char?)) +// { +// left = convLeft.Operand; +// right = Expression.Constant(ConvertTo.From(((ConstantExpression)convRight.Operand).Value)); +// } +// } + + #endregion + switch (nodeType) { case ExpressionType.Equal : @@ -1325,16 +1344,22 @@ ISqlPredicate ConvertCompare(IBuildContext context, ExpressionType nodeType, Exp default: throw new InvalidOperationException(); } - if (left.NodeType == ExpressionType.Convert || right.NodeType == ExpressionType.Convert) + if (left.NodeType == ExpressionType.Convert || right.NodeType == ExpressionType.Convert + || left.NodeType == ExpressionType.MemberAccess || right.NodeType == ExpressionType.MemberAccess) { var p = ConvertEnumConversion(context, left, op, right); if (p != null) return p; } - var l = ConvertToSql(context, left); + var l = ConvertToSql(context, left, false); var r = ConvertToSql(context, right, true); + if (l is SqlField && r is SqlParameter) + { + ((SqlParameter) r).DbType = ((SqlField) l).MemberMapper.DbType; + } + switch (nodeType) { case ExpressionType.Equal : @@ -1382,27 +1407,46 @@ ISqlPredicate ConvertCompare(IBuildContext context, ExpressionType nodeType, Exp ISqlPredicate ConvertEnumConversion(IBuildContext context, Expression left, SqlQuery.Predicate.Operator op, Expression right) { - UnaryExpression conv; - Expression value; + Expression value; + Expression operand; - if (left.NodeType == ExpressionType.Convert) + if (left is MemberExpression) + { + operand = left; + value = right; + } + else if (left.NodeType == ExpressionType.Convert && ((UnaryExpression)left).Operand is MemberExpression) + { + operand = ((UnaryExpression)left).Operand; + value = right; + } + else if (right is MemberExpression) + { + operand = right; + value = left; + } + else if (right.NodeType == ExpressionType.Convert && ((UnaryExpression)right).Operand is MemberExpression) { - conv = (UnaryExpression)left; - value = right; + operand = ((UnaryExpression)right).Operand; + value = left; + } + else if (left.NodeType == ExpressionType.Convert) + { + operand = ((UnaryExpression)left).Operand; + value = right; } else { - conv = (UnaryExpression)right; + operand = ((UnaryExpression)right).Operand; value = left; } - var operand = conv.Operand; - var type = operand.Type; + var type = operand.Type; - if (!type.IsEnum) + if (!TypeHelper.IsEnumOrNullableEnum(type)) return null; - var dic = new Dictionary(); + var dic = new Dictionary(); var nullValue = MappingSchema.GetNullValue(type); @@ -1429,25 +1473,38 @@ ISqlPredicate ConvertEnumConversion(IBuildContext context, Expression left, SqlQ // ReSharper restore HeuristicUnreachableCode // ReSharper restore ConditionIsAlwaysTrueOrFalse - var origValue = Enum.Parse(type, name, false); - object mapValue; + var origValue = Enum.Parse(type, name, false); + var mapValue = origValue; - if (!dic.TryGetValue(origValue, out mapValue)) - return null; + if (!(operand is MemberExpression)) + { + if (!dic.TryGetValue(origValue, out mapValue)) + return null; + } ISqlExpression l, r; + SqlValue sqlValue; + if (left.NodeType == ExpressionType.Convert) { - l = ConvertToSql(context, operand); - r = new SqlValue(mapValue); + l = ConvertToSql(context, operand, false); + r = sqlValue = new SqlValue(mapValue); } else { - r = ConvertToSql(context, operand); - l = new SqlValue(mapValue); + r = ConvertToSql(context, operand, false); + l = sqlValue = new SqlValue(mapValue); } + if (operand is MemberExpression) + { + var me = (MemberExpression)operand; + var memberAccessor = TypeAccessor.GetAccessor(me.Member.DeclaringType)[me.Member.Name]; + sqlValue.SetEnumConverter(memberAccessor, MappingSchema); + } + + return Convert(context, new SqlQuery.Predicate.ExprExpr(l, op, r)); } @@ -1455,11 +1512,45 @@ ISqlPredicate ConvertEnumConversion(IBuildContext context, Expression left, SqlQ { value = ((UnaryExpression)value).Operand; - var l = ConvertToSql(context, operand); - var r = ConvertToSql(context, value); + var l = ConvertToSql(context, operand, false, false); + var r = ConvertToSql(context, value, false, false); - if (l is SqlParameter) ((SqlParameter)l).SetEnumConverter(type, MappingSchema); - if (r is SqlParameter) ((SqlParameter)r).SetEnumConverter(type, MappingSchema); + MemberAccessor memberAccessor = null; + + if (operand is MemberExpression) + { + // is it even possible that operand is not MemberExpression? + // if no, then we can remove this two last uses of SetEnumConverter(type, map) + // and other depending code + // At least currently there is no test coverage for this method and I didn't + // manage to create such test + var me = (MemberExpression)operand; + memberAccessor = TypeAccessor.GetAccessor(me.Member.DeclaringType)[me.Member.Name]; + } + + if (l is SqlValueBase) + { + if (memberAccessor != null) + { + ((SqlValueBase)l).SetEnumConverter(memberAccessor, MappingSchema); + } + else + { + ((SqlValueBase)l).SetEnumConverter(type, MappingSchema); + } + } + + if (r is SqlValueBase) + { + if (memberAccessor != null) + { + ((SqlValueBase)r).SetEnumConverter(memberAccessor, MappingSchema); + } + else + { + ((SqlValueBase)r).SetEnumConverter(type, MappingSchema); + } + } return Convert(context, new SqlQuery.Predicate.ExprExpr(l, op, r)); } @@ -1541,7 +1632,7 @@ public ISqlPredicate ConvertObjectComparison( } isNull = right is ConstantExpression && ((ConstantExpression)right).Value == null; - lcols = lmembers.Select(m => new SqlInfo(m.Key) { Sql = ConvertToSql(leftContext, m.Value) }).ToArray(); + lcols = lmembers.Select(m => new SqlInfo(m.Key) { Sql = ConvertToSql(leftContext, m.Value, false) }).ToArray(); } else { @@ -1642,10 +1733,10 @@ ISqlPredicate ConvertNewObjectComparison(IBuildContext context, ExpressionType n for (var i = 0; i < newExpr.Arguments.Count; i++) { - var lex = ConvertToSql(context, newExpr.Arguments[i]); + var lex = ConvertToSql(context, newExpr.Arguments[i], false); var rex = newRight != null ? - ConvertToSql(context, newRight.Arguments[i]) : + ConvertToSql(context, newRight.Arguments[i], false) : GetParameter(right, newExpr.Members[i]); var predicate = Convert(context, @@ -1751,6 +1842,17 @@ private ISqlPredicate ConvertInPredicate(IBuildContext context, MethodCallExpres sql.Select(s => s.Sql).ToArray()); } + MemberAccessor memberAccessor = null; + + if (arg is MemberExpression) + { + var me = (MemberExpression)arg; + if (TypeHelper.IsEnumOrNullableEnum(me.Type)) + { + memberAccessor = TypeAccessor.GetAccessor(me.Member.DeclaringType)[me.Member.Name]; + } + } + switch (arr.NodeType) { case ExpressionType.NewArrayInit : @@ -1763,7 +1865,14 @@ private ISqlPredicate ConvertInPredicate(IBuildContext context, MethodCallExpres var exprs = new ISqlExpression[newArr.Expressions.Count]; for (var i = 0; i < newArr.Expressions.Count; i++) - exprs[i] = ConvertToSql(context, newArr.Expressions[i]); + { + exprs[i] = ConvertToSql(context, newArr.Expressions[i], false, false); + + if (memberAccessor != null && exprs[i] is SqlValue) + { + ((SqlValue)exprs[i]).SetEnumConverter(memberAccessor, MappingSchema); + } + } return new SqlQuery.Predicate.InList(expr, false, exprs); } @@ -1774,6 +1883,10 @@ private ISqlPredicate ConvertInPredicate(IBuildContext context, MethodCallExpres { var p = BuildParameter(arr).SqlParameter; p.IsQueryParameter = false; + if (memberAccessor != null) + { + p.SetEnumConverter(memberAccessor, MappingSchema); + } return new SqlQuery.Predicate.InList(expr, false, p); } @@ -1790,8 +1903,8 @@ private ISqlPredicate ConvertInPredicate(IBuildContext context, MethodCallExpres ISqlPredicate ConvertLikePredicate(IBuildContext context, MethodCallExpression expression, string start, string end) { var e = expression; - var o = ConvertToSql(context, e.Object); - var a = ConvertToSql(context, e.Arguments[0]); + var o = ConvertToSql(context, e.Object, false); + var a = ConvertToSql(context, e.Arguments[0], false); if (a is SqlValue) { @@ -1832,7 +1945,7 @@ ISqlPredicate ConvertLikePredicate(IBuildContext context, MethodCallExpression e mi, Expression.Constant("%"), Expression.Constant("~%")), mi, Expression.Constant("_"), Expression.Constant("~_")); - var expr = ConvertToSql(context, ConvertExpression(ex)); + var expr = ConvertToSql(context, ConvertExpression(ex), false); if (!string.IsNullOrEmpty(start)) expr = new SqlBinaryExpression(typeof(string), new SqlValue("%"), "+", expr); @@ -1846,13 +1959,13 @@ ISqlPredicate ConvertLikePredicate(IBuildContext context, MethodCallExpression e ISqlPredicate ConvertLikePredicate(IBuildContext context, MethodCallExpression expression) { var e = expression; - var a1 = ConvertToSql(context, e.Arguments[0]); - var a2 = ConvertToSql(context, e.Arguments[1]); + var a1 = ConvertToSql(context, e.Arguments[0], false); + var a2 = ConvertToSql(context, e.Arguments[1], false); ISqlExpression a3 = null; if (e.Arguments.Count == 3) - a3 = ConvertToSql(context, e.Arguments[2]); + a3 = ConvertToSql(context, e.Arguments[2], false); return new SqlQuery.Predicate.Like(a1, false, a2, a3); } @@ -2142,24 +2255,15 @@ bool CanBeTranslatedToSql(IBuildContext context, Expression expr, bool canBeComp var ctx = GetContext(context, pi); if (ctx == null) - { if (canBeCompiled) return !CanBeCompiled(pi); - } - else - { - if (pi.NodeType == ExpressionType.Parameter) - { - - } - } break; } case ExpressionType.Call : { - var e = pi as MethodCallExpression; + var e = (MethodCallExpression)pi; if (e.Method.DeclaringType != typeof(Enumerable)) { @@ -2175,6 +2279,35 @@ bool CanBeTranslatedToSql(IBuildContext context, Expression expr, bool canBeComp case ExpressionType.TypeIs : return canBeCompiled; case ExpressionType.TypeAs : case ExpressionType.New : return true; + + case ExpressionType.NotEqual : + case ExpressionType.Equal : + { + var e = (BinaryExpression)pi; + + Expression obj = null; + + if (e.Left.NodeType == ExpressionType.Constant && ((ConstantExpression)e.Left).Value == null) + obj = e.Right; + else if (e.Right.NodeType == ExpressionType.Constant && ((ConstantExpression)e.Right).Value == null) + obj = e.Left; + + if (obj != null) + { + var ctx = GetContext(context, obj); + + if (ctx != null) + { + if (ctx.IsExpression(obj, 0, RequestFor.Table). Result || + ctx.IsExpression(obj, 0, RequestFor.Association).Result) + { + ignoredMembers = obj.GetMembers(); + } + } + } + + break; + } } return false; @@ -2283,8 +2416,8 @@ public ISqlExpression ConvertTimeSpanMember(IBuildContext context, MemberExpress typeof(int), "DateDiff", new SqlValue(datePart), - ConvertToSql(context, e.Right), - ConvertToSql(context, e.Left)); + ConvertToSql(context, e.Right, false), + ConvertToSql(context, e.Left, false)); } } diff --git a/Source/Data/Linq/Builder/ExpressionBuilder.cs b/Source/Data/Linq/Builder/ExpressionBuilder.cs index 0db560db4..b499596c2 100644 --- a/Source/Data/Linq/Builder/ExpressionBuilder.cs +++ b/Source/Data/Linq/Builder/ExpressionBuilder.cs @@ -52,6 +52,7 @@ public partial class ExpressionBuilder new IntersectBuilder (), new CastBuilder (), new OfTypeBuilder (), + new AsUpdatableBuilder (), }; public static void AddBuilder(ISequenceBuilder builder) @@ -97,7 +98,7 @@ public ExpressionBuilder( OriginalExpression = expression; _visitedExpressions = new HashSet(); - Expression = ConvertExpressionTree(expression); + Expression = ConvertExpressionTree(expression); _visitedExpressions = null; } @@ -499,8 +500,26 @@ LambdaExpression ConvertMethodExpression(MemberInfo mi) if (attr != null) { - var call = Expression.Lambda>( - Expression.Convert(Expression.Call(mi.DeclaringType, attr.MethodName, Array.Empty), typeof(LambdaExpression))); + Expression expr; + + if (mi is MethodInfo && ((MethodInfo)mi).IsGenericMethod) + { + var method = (MethodInfo)mi; + var args = method.GetGenericArguments(); + var names = args.Select(t => t.Name).ToArray(); + var name = string.Format(attr.MethodName, names); + + if (name != attr.MethodName) + expr = Expression.Call(mi.DeclaringType, name, Array.Empty); + else + expr = Expression.Call(mi.DeclaringType, name, args); + } + else + { + expr = Expression.Call(mi.DeclaringType, attr.MethodName, Array.Empty); + } + + var call = Expression.Lambda>(Expression.Convert(expr, typeof(LambdaExpression))); return call.Compile()(); } diff --git a/Source/Data/Linq/Builder/ExpressionTestGenerator.cs b/Source/Data/Linq/Builder/ExpressionTestGenerator.cs index 350ff1be7..a74d6caaf 100644 --- a/Source/Data/Linq/Builder/ExpressionTestGenerator.cs +++ b/Source/Data/Linq/Builder/ExpressionTestGenerator.cs @@ -830,17 +830,19 @@ public string GenerateSource(Expression expr) using NUnit.Framework; {0} -namespace Data.Linq +namespace Data.Linq.UserTests {{ [TestFixture] public class UserTest : TestBase {{ [Test] - public void Test() + public void Test([DataContexts] string context) {{ // {1} - ForEachProvider(db => - {2}); + using (var db = GetDataContext(context)) + {{ + {2}; + }} }} }} }} diff --git a/Source/Data/Linq/Builder/FirstSingleBuilder.cs b/Source/Data/Linq/Builder/FirstSingleBuilder.cs index 935e18b61..3b474310e 100644 --- a/Source/Data/Linq/Builder/FirstSingleBuilder.cs +++ b/Source/Data/Linq/Builder/FirstSingleBuilder.cs @@ -48,6 +48,32 @@ protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, Meth protected override SequenceConvertInfo Convert( ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo, ParameterExpression param) { + if (methodCall.Arguments.Count == 2) + { + var predicate = (LambdaExpression)methodCall.Arguments[1].Unwrap(); + var info = builder.ConvertSequence(new BuildInfo(buildInfo, methodCall.Arguments[0]), predicate.Parameters[0]); + + if (info != null) + { + info.Expression = methodCall.Convert(ex => ConvertMethod(methodCall, 0, info, predicate.Parameters[0], ex)); + info.Parameter = param; + + return info; + } + } + else + { + var info = builder.ConvertSequence(new BuildInfo(buildInfo, methodCall.Arguments[0]), null); + + if (info != null) + { + info.Expression = methodCall.Convert(ex => ConvertMethod(methodCall, 0, info, null, ex)); + info.Parameter = param; + + return info; + } + } + return null; } @@ -83,7 +109,7 @@ public override Expression BuildExpression(Expression expression, int level) { if (expression == null) { - if (Builder.SqlProvider.IsApplyJoinSupported) + if (Builder.SqlProvider.IsApplyJoinSupported && Parent.SqlQuery.GroupBy.IsEmpty) { var join = SqlQuery.OuterApply(SqlQuery); diff --git a/Source/Data/Linq/Builder/GroupByBuilder.cs b/Source/Data/Linq/Builder/GroupByBuilder.cs index 08f9aa446..718d1ec42 100644 --- a/Source/Data/Linq/Builder/GroupByBuilder.cs +++ b/Source/Data/Linq/Builder/GroupByBuilder.cs @@ -22,7 +22,7 @@ protected override bool CanBuildMethodCall(ExpressionBuilder builder, MethodCall var body = ((LambdaExpression)methodCall.Arguments[1].Unwrap()).Body.Unwrap(); - if (body.NodeType == ExpressionType .MemberInit) + if (body.NodeType == ExpressionType.MemberInit) { var mi = (MemberInitExpression)body; bool throwExpr; diff --git a/Source/Data/Linq/Builder/InsertBuilder.cs b/Source/Data/Linq/Builder/InsertBuilder.cs index 992419746..5808e7b41 100644 --- a/Source/Data/Linq/Builder/InsertBuilder.cs +++ b/Source/Data/Linq/Builder/InsertBuilder.cs @@ -13,7 +13,7 @@ class InsertBuilder : MethodCallBuilder protected override bool CanBuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo) { - return methodCall.IsQueryable("Insert", "InsertWithIdentity"); + return methodCall.IsQueryable("Insert", "InsertWithIdentity","InsertWithOutput"); } protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo) @@ -98,8 +98,9 @@ protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, Meth sequence.SqlQuery.QueryType = QueryType.Insert; sequence.SqlQuery.Insert.WithIdentity = methodCall.Method.Name == "InsertWithIdentity"; + sequence.SqlQuery.Insert.WithOutput = methodCall.Method.Name == "InsertWithOutput"; - return new InsertContext(buildInfo.Parent, sequence, sequence.SqlQuery.Insert.WithIdentity); + return new InsertContext(buildInfo.Parent, sequence, sequence.SqlQuery.Insert.WithIdentity || sequence.SqlQuery.Insert.WithOutput); } protected override SequenceConvertInfo Convert( diff --git a/Source/Data/Linq/Builder/JoinBuilder.cs b/Source/Data/Linq/Builder/JoinBuilder.cs index ec5b120be..8beff97af 100644 --- a/Source/Data/Linq/Builder/JoinBuilder.cs +++ b/Source/Data/Linq/Builder/JoinBuilder.cs @@ -157,8 +157,8 @@ static void BuildJoin( join.JoinedTable.Condition.Conditions.Add(new SqlQuery.Condition(false, predicate)); else join - .Expr(builder.ConvertToSql(outerKeyContext, outerKeySelector)).Equal - .Expr(builder.ConvertToSql(innerKeyContext, innerKeySelector)); + .Expr(builder.ConvertToSql(outerKeyContext, outerKeySelector, false)).Equal + .Expr(builder.ConvertToSql(innerKeyContext, innerKeySelector, false)); predicate = builder.ConvertObjectComparison( ExpressionType.Equal, @@ -169,8 +169,8 @@ static void BuildJoin( countSql.Where.SearchCondition.Conditions.Add(new SqlQuery.Condition(false, predicate)); else countSql.Where - .Expr(builder.ConvertToSql(outerKeyContext, outerKeySelector)).Equal - .Expr(builder.ConvertToSql(countKeyContext, innerKeySelector)); + .Expr(builder.ConvertToSql(outerKeyContext, outerKeySelector, false)).Equal + .Expr(builder.ConvertToSql(countKeyContext, innerKeySelector, false)); } class InnerKeyContext : ExpressionContext @@ -190,8 +190,8 @@ public override SqlInfo[] ConvertToSql(Expression expression, int level, Convert return new SqlInfo(idx.Members) { - Sql = SqlQuery.Select.Columns[n], - Index = n + Sql = SqlQuery.Select.Columns[n], + Index = n }; }) .ToArray(); diff --git a/Source/Data/Linq/Builder/ScalarSelectBuilder.cs b/Source/Data/Linq/Builder/ScalarSelectBuilder.cs index d56ae4404..0c96f73dc 100644 --- a/Source/Data/Linq/Builder/ScalarSelectBuilder.cs +++ b/Source/Data/Linq/Builder/ScalarSelectBuilder.cs @@ -83,7 +83,7 @@ public Expression BuildExpression(Expression expression, int level) default : { - var expr = Builder.ConvertToSql(this, expression); + var expr = Builder.ConvertToSql(this, expression, false); var idx = SqlQuery.Select.Add(expr); return Builder.BuildSql(expression.Type, idx); diff --git a/Source/Data/Linq/Builder/SelectBuilder.cs b/Source/Data/Linq/Builder/SelectBuilder.cs index f1de59a14..770e42b38 100644 --- a/Source/Data/Linq/Builder/SelectBuilder.cs +++ b/Source/Data/Linq/Builder/SelectBuilder.cs @@ -93,10 +93,9 @@ public override void BuildQuery(Query query, ParameterExpression queryPara ExpressionBuilder.ParametersParam, }); - var func = mapper.Compile(); - var counter = 0; + var func = mapper.Compile(); - Func map = (ctx,db,rd,e,ps) => func(counter++, ctx, db, rd, e, ps); + Func map = (ctx,db,rd,e,ps,n) => func(n, ctx, db, rd, e, ps); query.SetQuery(map); } diff --git a/Source/Data/Linq/Builder/SelectContext.cs b/Source/Data/Linq/Builder/SelectContext.cs index 4cd6261dc..66968682c 100644 --- a/Source/Data/Linq/Builder/SelectContext.cs +++ b/Source/Data/Linq/Builder/SelectContext.cs @@ -64,6 +64,7 @@ public virtual void BuildQuery(Query query, ParameterExpression queryParam var expr = BuildExpression(null, 0); var mapper = Builder.BuildMapper(expr); + //TODO CHeck if it could be useful to use a cache for these queries query.SetQuery(mapper.Compile()); } @@ -137,8 +138,6 @@ public virtual Expression BuildExpression(Expression expression, int level) case ExpressionType.New : case ExpressionType.MemberInit : { - var sequence = GetSequence(memberExpression, 0); - return memberExpression.Convert(e => { if (e != memberExpression) @@ -146,7 +145,10 @@ public virtual Expression BuildExpression(Expression expression, int level) switch (e.NodeType) { case ExpressionType.MemberAccess : - if (!sequence.IsExpression(e, 0, RequestFor.Object).Result && + var sequence = GetSequence(memberExpression, 0); + + if (sequence != null && + !sequence.IsExpression(e, 0, RequestFor.Object).Result && !sequence.IsExpression(e, 0, RequestFor.Field). Result) { var info = ConvertToIndex(e, 0, ConvertFlags.Field).Single(); @@ -259,7 +261,7 @@ public virtual SqlInfo[] ConvertToSql(Expression expression, int level, ConvertF expression, level, (ctx, ex, l) => ctx.ConvertToSql(ex, l, flags), - () => new[] { new SqlInfo { Sql = Builder.ConvertToSql(this, expression) } }); + () => new[] { new SqlInfo { Sql = Builder.ConvertToSql(this, expression, false) } }); } } } @@ -337,6 +339,11 @@ from m in mm return GetSequence(expression, level).ConvertToSql(null, 0, flags); break; + + default: + if (level == 0) + return Builder.ConvertExpressions(this, expression, flags); + break; } break; @@ -357,7 +364,7 @@ SqlInfo[] ConvertMember(MemberInfo member, Expression expression, ConvertFlags f SqlInfo[] ConvertExpressions(Expression expression, ConvertFlags flags) { return Builder.ConvertExpressions(this, expression, flags) - .Select(CheckExpression) + .Select(CheckExpression) .ToArray(); } @@ -667,7 +674,9 @@ public virtual IsExpressionResult IsExpression(Expression expression, int level, case ExpressionType.Parameter : { var sequence = GetSequence(expression, level); - var parameter = Lambda.Parameters[Sequence.Length == 0 ? 0 : Array.IndexOf(Sequence, sequence)]; + var index = Sequence.Length == 0 ? 0 : Array.IndexOf(Sequence, sequence); + var parameter = Lambda.Parameters[index == -1 ? 0 : index]; + //var parameter = Lambda.Parameters[Sequence.Length == 0 ? 0 : Array.IndexOf(Sequence, sequence)]; if (levelExpression == expression) { @@ -826,7 +835,10 @@ T ProcessScalar(Expression expression, int level, Func(Expression expression, MemberExpression levelExpression var memberExpression = Members[levelExpression.Member]; var newExpression = GetExpression(expression, levelExpression, memberExpression); var sequence = GetSequence (expression, level); + var nextLevel = 1; if (sequence != null) { - var parameter = Lambda.Parameters[Sequence.Length == 0 ? 0 : Array.IndexOf(Sequence, sequence)]; + var idx = Sequence.Length == 0 ? 0 : Array.IndexOf(Sequence, sequence); + + if (idx >= 0) + { + var parameter = Lambda.Parameters[idx]; + + if (levelExpression == expression) + { + if (memberExpression == parameter) + return action(1, sequence, null, 0, memberExpression); - if (memberExpression == parameter && levelExpression == expression) - return action(1, sequence, null, 0, memberExpression); +// if (!(sequence is GroupByBuilder.GroupByContext) && memberExpression.GetRootObject() == parameter) +// return action(3, this, newExpression, 0, memberExpression); + } + } + else + { + nextLevel = 0; + } } switch (memberExpression.NodeType) @@ -879,7 +907,7 @@ T ProcessMemberAccess(Expression expression, MemberExpression levelExpression case ExpressionType.MemberAccess : case ExpressionType.Parameter : if (sequence != null) - return action(2, sequence, newExpression, 1, memberExpression); + return action(2, sequence, newExpression, nextLevel, memberExpression); throw new InvalidOperationException(); case ExpressionType.New : @@ -903,7 +931,7 @@ protected bool IsSubQuery() IBuildContext GetSequence(Expression expression, int level) { - if (Sequence.Length == 1) + if (Sequence.Length == 1 && Sequence[0].Parent == null) return Sequence[0]; Expression root = null; @@ -927,10 +955,6 @@ IBuildContext GetSequence(Expression expression, int level) if (root.NodeType != ExpressionType.Parameter) return null; - for (var i = 0; i < Lambda.Parameters.Count; i++) - if (root == Lambda.Parameters[i]) - return Sequence[i]; - break; } @@ -947,7 +971,17 @@ IBuildContext GetSequence(Expression expression, int level) if (root == Lambda.Parameters[i]) return Sequence[i]; - throw new InvalidOperationException(); + foreach (var context in Sequence) + { + if (context.Parent != null) + { + var ctx = Builder.GetContext(context, root); + if (ctx != null) + return ctx; + } + } + + return null; } static Expression GetExpression(Expression expression, Expression levelExpression, Expression memberExpression) @@ -1022,6 +1056,15 @@ Expression GetMemberExpression(MemberInfo member, bool add, Type type) if (!Members.TryGetValue(member, out memberExpression)) { + foreach (var m in Members) + { + if (m.Key.Name == member.Name) + { + if (TypeHelper.Equals(m.Key, member, IsScalar ? null : Body.Type)) + return m.Value; + } + } + if (add && TypeHelper.IsSameOrParent(member.DeclaringType, Body.Type)) { memberExpression = Expression.Constant( diff --git a/Source/Data/Linq/Builder/SelectManyBuilder.cs b/Source/Data/Linq/Builder/SelectManyBuilder.cs index f510a0705..382652295 100644 --- a/Source/Data/Linq/Builder/SelectManyBuilder.cs +++ b/Source/Data/Linq/Builder/SelectManyBuilder.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Linq.Expressions; namespace BLToolkit.Data.Linq.Builder @@ -35,12 +36,12 @@ protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, Meth var leftJoin = collection is DefaultIfEmptyBuilder.DefaultIfEmptyContext; var sql = collection.SqlQuery; - var sequenceTable = sequence.SqlQuery.From.Tables[0].Source; + var sequenceTables = new HashSet(sequence.SqlQuery.From.Tables[0].GetTables()); var newQuery = null != new QueryVisitor().Find(sql, e => e == collectionInfo.SqlQuery); var crossApply = null != new QueryVisitor().Find(sql, e => - e == sequenceTable || - e.ElementType == QueryElementType.SqlField && sequenceTable == ((SqlField)e).Table || - e.ElementType == QueryElementType.Column && sequenceTable == ((SqlQuery.Column)e).Parent); + e.ElementType == QueryElementType.TableSource && sequenceTables.Contains((ISqlTableSource)e) || + e.ElementType == QueryElementType.SqlField && sequenceTables.Contains(((SqlField)e).Table) || + e.ElementType == QueryElementType.Column && sequenceTables.Contains(((SqlQuery.Column)e).Parent)); if (collection is JoinBuilder.GroupJoinSubQueryContext) { @@ -76,12 +77,12 @@ protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, Meth if (collection is TableBuilder.TableContext) { var table = (TableBuilder.TableContext)collection; - - var join = table.SqlTable.TableArguments != null && table.SqlTable.TableArguments.Length > 0 ? - leftJoin ? SqlQuery.OuterApply(sql) : SqlQuery.CrossApply(sql) : - leftJoin ? SqlQuery.LeftJoin (sql) : SqlQuery.InnerJoin (sql); + var join = table.SqlTable.TableArguments != null && table.SqlTable.TableArguments.Length > 0 ? + (leftJoin ? SqlQuery.OuterApply(sql) : SqlQuery.CrossApply(sql)) : + (leftJoin ? SqlQuery.LeftJoin (sql) : SqlQuery.InnerJoin (sql)); join.JoinedTable.Condition.Conditions.AddRange(sql.Where.SearchCondition.Conditions); + join.JoinedTable.CanConvertApply = false; sql.Where.SearchCondition.Conditions.Clear(); diff --git a/Source/Data/Linq/Builder/SqlInfo.cs b/Source/Data/Linq/Builder/SqlInfo.cs index e2c93105b..68e64c66d 100644 --- a/Source/Data/Linq/Builder/SqlInfo.cs +++ b/Source/Data/Linq/Builder/SqlInfo.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; +using BLToolkit.Reflection; namespace BLToolkit.Data.Linq.Builder { @@ -47,7 +48,14 @@ public SqlInfo Clone(MemberInfo mi) public bool CompareMembers(SqlInfo info) { - return Members.Count == info.Members.Count && !Members.Where((t, i) => t != info.Members[i]).Any(); + return Members.Count == info.Members.Count && !Members.Where((t, i) => !TypeHelper.Equals(t, info.Members[i])).Any(); + } + + public bool CompareLastMember(SqlInfo info) + { + return + Members.Count > 0 && info.Members.Count > 0 && + TypeHelper.Equals(Members[Members.Count - 1], info.Members[info.Members.Count - 1]); } } } diff --git a/Source/Data/Linq/Builder/SubQueryContext.cs b/Source/Data/Linq/Builder/SubQueryContext.cs index 004eb4b49..82c308790 100644 --- a/Source/Data/Linq/Builder/SubQueryContext.cs +++ b/Source/Data/Linq/Builder/SubQueryContext.cs @@ -2,10 +2,10 @@ using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; -using BLToolkit.Linq; namespace BLToolkit.Data.Linq.Builder { + using BLToolkit.Linq; using Data.Sql; class SubQueryContext : PassThroughContext diff --git a/Source/Data/Linq/Builder/TableBuilder.cs b/Source/Data/Linq/Builder/TableBuilder.cs index f4f00d623..67f3f8128 100644 --- a/Source/Data/Linq/Builder/TableBuilder.cs +++ b/Source/Data/Linq/Builder/TableBuilder.cs @@ -186,7 +186,7 @@ public TableContext(ExpressionBuilder builder, BuildInfo buildInfo) SqlQuery.From.Table(SqlTable); - var args = mc.Arguments.Select(a => builder.ConvertToSql(this, a)); + var args = mc.Arguments.Select(a => builder.ConvertToSql(this, a, false)); attr.SetTable(SqlTable, mc.Method, mc.Arguments, args); @@ -656,7 +656,16 @@ public Expression BuildExpression(Expression expression, int level) var info = ConvertToIndex(expression, level, ConvertFlags.Field).Single(); var idx = ConvertToParentIndex(info.Index, null); - return Builder.BuildSql(expression.Type, idx); + if (expression is MemberExpression) + { + var me = (MemberExpression)expression; + var memberAccessor = TypeAccessor.GetAccessor(me.Member.DeclaringType)[me.Member.Name]; + return Builder.BuildSql(memberAccessor, idx); + } + else + { + return Builder.BuildSql(expression.Type, idx); + } } #endregion @@ -782,11 +791,13 @@ public IsExpressionResult IsExpression(Expression expression, int level, Request case RequestFor.Table : case RequestFor.Object : { - var table = FindTable(expression, level, false); - return new IsExpressionResult( + var table = FindTable(expression, level, false); + var isTable = table != null && table.Field == null && - (expression == null || expression.GetLevelExpression(table.Level) == expression)); + (expression == null || expression.GetLevelExpression(table.Level) == expression); + + return new IsExpressionResult(isTable, isTable ? table.Table : null); } case RequestFor.Expression : @@ -906,7 +917,8 @@ public IBuildContext GetContext(Expression expression, int level, BuildInfo buil { if (levelExpression == expression && expression.NodeType == ExpressionType.MemberAccess) { - var association = (AssociatedTableContext)GetAssociation(expression, level).Table; + var tableLevel = GetAssociation(expression, level); + var association = (AssociatedTableContext)tableLevel.Table; if (association.IsList) { @@ -917,13 +929,19 @@ public IBuildContext GetContext(Expression expression, int level, BuildInfo buil buildInfo.IsAssociationBuilt = true; + if (tableLevel.IsNew || buildInfo.CopyTable) + association.ParentAssociationJoin.IsWeak = true; + return Builder.BuildSequence(new BuildInfo(buildInfo, expr)); } } else { var association = GetAssociation(levelExpression, level); - ((AssociatedTableContext)association.Table).ParentAssociationJoin.IsWeak = false; + var paj = ((AssociatedTableContext)association.Table).ParentAssociationJoin; + + paj.IsWeak = paj.IsWeak && buildInfo.CopyTable; + return association.Table.GetContext(expression, level + 1, buildInfo); } } @@ -1017,7 +1035,7 @@ SqlField GetField(Expression expression, int level, bool throwException) { foreach (var field in SqlTable.Fields.Values) { - if (TypeHelper.Equals(field.MemberMapper.MapMemberInfo.MemberAccessor.MemberInfo, memberExpression.Member)) + if (TypeHelper.Equals(field.MemberMapper.MapMemberInfo.MemberAccessor.MemberInfo, memberExpression.Member, SqlTable.ObjectType)) { if (field.MemberMapper is MemberMapper.ComplexMapper && field.MemberMapper.MemberName.IndexOf('.') > 0) @@ -1070,6 +1088,7 @@ class TableLevel public TableContext Table; public SqlField Field; public int Level; + public bool IsNew; } TableLevel FindTable(Expression expression, int level, bool throwException) @@ -1113,6 +1132,7 @@ select om if (levelExpression.NodeType == ExpressionType.MemberAccess) { var memberExpression = (MemberExpression)levelExpression; + var isNew = false; AssociatedTableContext tableAssociation; @@ -1125,13 +1145,15 @@ where TypeHelper.Equals(a.MemberAccessor.MemberInfo, memberExpression.Member) tableAssociation = q.FirstOrDefault(); + isNew = true; + _associations.Add(memberExpression.Member, tableAssociation); } if (tableAssociation != null) { if (levelExpression == expression) - return new TableLevel { Table = tableAssociation, Level = level }; + return new TableLevel { Table = tableAssociation, Level = level, IsNew = isNew }; var al = tableAssociation.GetAssociation(expression, level + 1); @@ -1140,7 +1162,7 @@ where TypeHelper.Equals(a.MemberAccessor.MemberInfo, memberExpression.Member) var field = tableAssociation.GetField(expression, level + 1, false); - return new TableLevel { Table = tableAssociation, Field = field, Level = field == null ? level : level + 1 }; + return new TableLevel { Table = tableAssociation, Field = field, Level = field == null ? level : level + 1, IsNew = isNew }; } } } diff --git a/Source/Data/Linq/Builder/TakeSkipBuilder.cs b/Source/Data/Linq/Builder/TakeSkipBuilder.cs index c48c10bf7..a8452219a 100644 --- a/Source/Data/Linq/Builder/TakeSkipBuilder.cs +++ b/Source/Data/Linq/Builder/TakeSkipBuilder.cs @@ -24,7 +24,7 @@ protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, Meth if (arg.NodeType == ExpressionType.Lambda) arg = ((LambdaExpression)arg).Body.Unwrap(); - var expr = builder.ConvertToSql(sequence, arg); + var expr = builder.ConvertToSql(sequence, arg, false); if (methodCall.Method.Name == "Take") { diff --git a/Source/Data/Linq/Builder/UpdateBuilder.cs b/Source/Data/Linq/Builder/UpdateBuilder.cs index 7161ae353..7bcdfdf95 100644 --- a/Source/Data/Linq/Builder/UpdateBuilder.cs +++ b/Source/Data/Linq/Builder/UpdateBuilder.cs @@ -26,10 +26,13 @@ protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, Meth switch (methodCall.Arguments.Count) { case 1 : // int Update(this IUpdateable source) + CheckAssociation(sequence); break; case 2 : // int Update(this IQueryable source, Expression> setter) { + CheckAssociation(sequence); + BuildSetter( builder, buildInfo, @@ -50,6 +53,8 @@ protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, Meth // sequence = builder.BuildWhere(buildInfo.Parent, sequence, (LambdaExpression)methodCall.Arguments[1].Unwrap(), false); + CheckAssociation(sequence); + BuildSetter( builder, buildInfo, @@ -64,6 +69,10 @@ protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, Meth // var into = builder.BuildSequence(new BuildInfo(buildInfo, expr, new SqlQuery())); + sequence.ConvertToIndex(null, 0, ConvertFlags.All); + sequence.SqlQuery.ResolveWeakJoins(new List()); + sequence.SqlQuery.Select.Columns.Clear(); + BuildSetter( builder, buildInfo, @@ -91,6 +100,34 @@ protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, Meth return new UpdateContext(buildInfo.Parent, sequence); } + static void CheckAssociation(IBuildContext sequence) + { + var ctx = sequence as SelectContext; + + if (ctx != null && ctx.IsScalar) + { + var res = ctx.IsExpression(null, 0, RequestFor.Association); + + if (res.Result && res.Context is TableBuilder.AssociatedTableContext) + { + var atc = (TableBuilder.AssociatedTableContext)res.Context; + sequence.SqlQuery.Update.Table = atc.SqlTable; + } + else + { + res = ctx.IsExpression(null, 0, RequestFor.Table); + + if (res.Result && res.Context is TableBuilder.TableContext) + { + var tc = (TableBuilder.TableContext)res.Context; + + if (sequence.SqlQuery.From.Tables.Count == 0 || sequence.SqlQuery.From.Tables[0].Source != tc.SqlQuery) + sequence.SqlQuery.Update.Table = tc.SqlTable; + } + } + } + } + protected override SequenceConvertInfo Convert( ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo, ParameterExpression param) { @@ -144,8 +181,11 @@ internal static void BuildSetter( ((FieldInfo) member).FieldType : ((PropertyInfo)member).PropertyType; - if (type.IsEnum) - ((SqlParameter)expr).SetEnumConverter(type, builder.MappingSchema); + if (TypeHelper.IsEnumOrNullableEnum(type)) + { + var memberAccessor = TypeAccessor.GetAccessor(member.DeclaringType)[member.Name]; + ((SqlParameter)expr).SetEnumConverter(memberAccessor, builder.MappingSchema); + } } items.Add(new SqlQuery.SetExpression(column[0].Sql, expr)); @@ -185,10 +225,13 @@ static void BuildSetter( else { var column = into.ConvertToSql(pe, 1, ConvertFlags.Field); - var expr = builder.ConvertToSqlExpression(ctx, ma.Expression); + var expr = builder.ConvertToSqlExpression(ctx, ma.Expression, false); - if (expr is SqlParameter && ma.Expression.Type.IsEnum) - ((SqlParameter)expr).SetEnumConverter(ma.Expression.Type, builder.MappingSchema); + if (expr is SqlValueBase && TypeHelper.IsEnumOrNullableEnum(ma.Expression.Type)) + { + var memberAccessor = TypeAccessor.GetAccessor(ma.Member.DeclaringType)[ma.Member.Name]; + ((SqlValueBase)expr).SetEnumConverter(memberAccessor, builder.MappingSchema); + } items.Add(new SqlQuery.SetExpression(column[0].Sql, expr)); } @@ -252,12 +295,15 @@ internal static void ParseSet( //Expression.MakeMemberAccess(Expression.Parameter(member.DeclaringType, "p"), member), 1, ConvertFlags.Field)[0].Sql; var sp = select.Parent; var ctx = new ExpressionContext(buildInfo.Parent, select, update); - var expr = builder.ConvertToSqlExpression(ctx, update.Body); + var expr = builder.ConvertToSqlExpression(ctx, update.Body, false); builder.ReplaceParent(ctx, sp); - if (expr is SqlParameter && update.Body.Type.IsEnum) - ((SqlParameter)expr).SetEnumConverter(update.Body.Type, builder.MappingSchema); + if (expr is SqlValueBase && TypeHelper.IsEnumOrNullableEnum(update.Body.Type)) + { + var memberAccessor = TypeAccessor.GetAccessor(body.Member.DeclaringType)[body.Member.Name]; + ((SqlValueBase)expr).SetEnumConverter(memberAccessor, builder.MappingSchema); + } items.Add(new SqlQuery.SetExpression(column, expr)); } @@ -294,10 +340,13 @@ internal static void ParseSet( if (column.Length == 0) throw new LinqException("Member '{0}.{1}' is not a table column.", member.DeclaringType.Name, member.Name); - var expr = builder.ConvertToSql(select, update); + var expr = builder.ConvertToSql(select, update, false, false); - if (expr is SqlParameter && update.Type.IsEnum) - ((SqlParameter)expr).SetEnumConverter(update.Type, builder.MappingSchema); + if (expr is SqlValueBase && TypeHelper.IsEnumOrNullableEnum(update.Type)) + { + var memberAccessor = TypeAccessor.GetAccessor(body.Member.DeclaringType)[body.Member.Name]; + ((SqlValueBase)expr).SetEnumConverter(memberAccessor, builder.MappingSchema); + } items.Add(new SqlQuery.SetExpression(column[0].Sql, expr)); } diff --git a/Source/Data/Linq/Expressions.cs b/Source/Data/Linq/Expressions.cs index 270e9782a..2f1615840 100644 --- a/Source/Data/Linq/Expressions.cs +++ b/Source/Data/Linq/Expressions.cs @@ -144,7 +144,8 @@ static MemberInfo M(Expression> func) { M(() => "".Length ), L ( obj => Sql.Length(obj).Value) }, { M(() => "".Substring (0) ), L ((obj,p0) => Sql.Substring(obj, p0 + 1, obj.Length - p0)) }, - { M(() => "".Substring (0,0) ), L ((obj,p0,p1) => Sql.Substring(obj, p0 + 1, p1)) }, + { M(() => "".Substring (0,0) ), L ((obj,p0,p1) => Sql.Substring(obj, p0 + 1, p1)) }, + { M(() => "".ContainsExactly("") ), L ((obj,p0) => p0.Length == 0 ? 0 : (Sql.ContainsExactly(p0, obj) .Value) - 1) }, { M(() => "".IndexOf ("") ), L ((obj,p0) => p0.Length == 0 ? 0 : (Sql.CharIndex(p0, obj) .Value) - 1) }, { M(() => "".IndexOf ("",0) ), L ((obj,p0,p1) => p0.Length == 0 && obj.Length > p1 ? p1 : (Sql.CharIndex(p0, obj, p1 + 1).Value) - 1) }, { M(() => "".IndexOf ("",0,0) ), L((obj,p0,p1,p2) => p0.Length == 0 && obj.Length > p1 ? p1 : (Sql.CharIndex(p0, Sql.Left(obj, p2), p1) .Value) - 1) }, @@ -725,6 +726,23 @@ static MemberInfo M(Expression> func) }}, + #region MsSql2012 + + { "MsSql2012", new Dictionary { + { M(() => Sql.PadRight("",0,' ')), L ((p0,p1,p2) => p0.Length > p1 ? p0 : p0 + Replicate(p2, p1 - p0.Length)) }, + { M(() => Sql.PadLeft ("",0,' ')), L ((p0,p1,p2) => p0.Length > p1 ? p0 : Replicate(p2, p1 - p0.Length) + p0) }, + { M(() => Sql.Trim ("") ), L ( p0 => Sql.TrimLeft(Sql.TrimRight(p0))) }, + { M(() => Sql.MakeDateTime(0,0,0)), L((y,m,d) => DateAdd(Sql.DateParts.Month, (y.Value - 1900) * 12 + m.Value - 1, d.Value - 1)) }, + + { M(() => Sql.Cosh(0) ), L ( v => (Sql.Exp(v) + Sql.Exp(-v)) / 2) }, + { M(() => Sql.Log(0m, 0)), L((m,n) => Sql.Log(n) / Sql.Log(m)) }, + { M(() => Sql.Log(0.0,0)), L((m,n) => Sql.Log(n) / Sql.Log(m)) }, + { M(() => Sql.Sinh(0) ), L ( v => (Sql.Exp(v) - Sql.Exp(-v)) / 2) }, + { M(() => Sql.Tanh(0) ), L ( v => (Sql.Exp(v) - Sql.Exp(-v)) / (Sql.Exp(v) + Sql.Exp(-v))) }, + }}, + + #endregion + #region MsSql2008 { "MsSql2008", new Dictionary { @@ -742,6 +760,30 @@ static MemberInfo M(Expression> func) #endregion + #region MsSql2000 + + { "MsSql2000", new Dictionary { + { M(() => Sql.PadRight("",0,' ')), L ((p0,p1,p2) => p0.Length > p1 ? p0 : p0 + Replicate(p2, p1 - p0.Length)) }, + { M(() => Sql.PadLeft ("",0,' ')), L ((p0,p1,p2) => p0.Length > p1 ? p0 : Replicate(p2, p1 - p0.Length) + p0) }, + { M(() => Sql.Trim ("") ), L ( p0 => Sql.TrimLeft(Sql.TrimRight(p0))) }, + { M(() => Sql.MakeDateTime(0,0,0)), L((y,m,d) => DateAdd(Sql.DateParts.Month, (y.Value - 1900) * 12 + m.Value - 1, d.Value - 1)) }, + { M(() => Sql.MakeDateTime(0, 0, 0, 0, 0, 0) ), L((y,m,d,h,mm,s) => Sql.Convert(Sql.DateTime2, + y.ToString() + "-" + m.ToString() + "-" + d.ToString() + " " + + h.ToString() + ":" + mm.ToString() + ":" + s.ToString(), 120)) }, + { M(() => Sql.Cosh(0) ), L ( v => (Sql.Exp(v) + Sql.Exp(-v)) / 2) }, + { M(() => Sql.Log(0m, 0)), L((m,n) => Sql.Log(n) / Sql.Log(m)) }, + { M(() => Sql.Log(0.0,0)), L((m,n) => Sql.Log(n) / Sql.Log(m)) }, + { M(() => Sql.Sinh(0) ), L ( v => (Sql.Exp(v) - Sql.Exp(-v)) / 2) }, + { M(() => Sql.Tanh(0) ), L ( v => (Sql.Exp(v) - Sql.Exp(-v)) / (Sql.Exp(v) + Sql.Exp(-v))) }, + + { M(() => DateTime.Parse("")), L(p0 => Sql.ConvertTo.From(p0) ) }, + { M(() => Sql.RoundToEven(0m) ), L(d => d - Sql.Floor(d) == 0.5m && (long)Sql.Floor(d) % 2 == 0? Sql.Floor(d) : Sql.Round(d)) }, + { M(() => Sql.RoundToEven(0.0)), L(d => d - Sql.Floor(d) == 0.5 && (long)Sql.Floor(d) % 2 == 0? Sql.Floor(d) : Sql.Round(d)) }, + + }}, + + #endregion + #region MsSql2005 { "MsSql2005", new Dictionary { diff --git a/Source/Data/Linq/Extensions.cs b/Source/Data/Linq/Extensions.cs index 804bcb573..b98e63119 100644 --- a/Source/Data/Linq/Extensions.cs +++ b/Source/Data/Linq/Extensions.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq.Expressions; using System.Reflection; - +using System.Text.RegularExpressions; using JetBrains.Annotations; namespace BLToolkit.Data.Linq @@ -206,6 +206,17 @@ public static int InsertOrReplace([NotNull] this IDataContextInfo dataContext return Query.InsertOrReplace(dataContextInfo, obj); } + public static int InsertOrReplace([NotNull] this IDataContextInfo dataContextInfo, IEnumerable objs) + { + if (dataContextInfo == null) throw new ArgumentNullException("dataContextInfo"); + int cnt = 0; + foreach (var obj in objs) + { + cnt += Query.InsertOrReplace(dataContextInfo, obj); + } + return cnt; + } + [Obsolete("Use 'InsertOrReplace' instead.")] public static int InsertOrUpdate(this IDataContext dataContext, T obj) { @@ -217,6 +228,16 @@ public static int InsertOrReplace(this IDataContext dataContext, T obj) return Query.InsertOrReplace(DataContextInfo.Create(dataContext), obj); } + public static int InsertOrReplace(this IDataContext dataContext, IEnumerable objs) + { + int cnt = 0; + foreach (var obj in objs) + { + cnt += Query.InsertOrReplace(DataContextInfo.Create(dataContext), obj); + } + return cnt; + } + #endregion #region InsertBatch @@ -225,7 +246,7 @@ public static int InsertOrReplace(this IDataContext dataContext, T obj) public static int InsertBatch(this DbManager dataContext, int maxBatchSize, IEnumerable list) { - return new SqlQuery().Insert(dataContext, maxBatchSize, list); + return new SqlQuery(dataContext).Insert(dataContext, maxBatchSize, list); } public static int InsertBatch(this DbManager dataContext, IEnumerable list) @@ -233,6 +254,11 @@ public static int InsertBatch(this DbManager dataContext, IEnumerable list return InsertBatch(dataContext, int.MaxValue, list); } + public static int InsertBatchWithIdentity(this DbManager dataContext, IEnumerable list) + { + return new SqlQuery().InsertBatchWithIdentity(dataContext, int.MaxValue, list); + } + public static int InsertBatch(this DbManager dataContext, T[] list) { return InsertBatch(dataContext, int.MaxValue, list); @@ -274,6 +300,21 @@ public static object InsertWithIdentity(this IDataContext dataContext, T obj) } #endregion + + #region InsertWithOutput + + public static object InsertWithOutput([NotNull] this IDataContextInfo dataContextInfo, T obj) + { + if (dataContextInfo == null) throw new ArgumentNullException("dataContextInfo"); + return Query.InsertWithOutput(dataContextInfo, obj); + } + + public static object InsertWithOutput( this IDataContext dataContext, T obj ) + { + return Query.InsertWithOutput(DataContextInfo.Create( dataContext ), obj); + } + + #endregion #region Update @@ -292,7 +333,7 @@ public static int Update(this IDataContext dataContext, T obj) public static int Update(this DbManager dataContext, int maxBatchSize, IEnumerable list) { - return new SqlQuery().Update(dataContext, maxBatchSize, list); + return new SqlQuery(dataContext).Update(dataContext, maxBatchSize, list); } public static int Update(this DbManager dataContext, IEnumerable list) @@ -321,7 +362,7 @@ public static int Delete([NotNull] this IDataContext dataContext, T obj) public static int Delete(this DbManager dataContext, int maxBatchSize, IEnumerable list) { - return new SqlQuery().Delete(dataContext, maxBatchSize, list); + return new SqlQuery(dataContext).Delete(dataContext, maxBatchSize, list); } public static int Delete(this DbManager dataContext, IEnumerable list) @@ -334,5 +375,14 @@ public static int Delete(this DbManager dataContext, IEnumerable list) #endregion #endregion - } -} + + #region String Extensions + + public static int ContainsExactly(this string s, string value) + { + return Regex.Matches(s, string.Format(@"(^|\s){0}(\s|$)", value), RegexOptions.IgnoreCase).Count; + } + + #endregion + } +} diff --git a/Source/Data/Linq/IUpdateable.cs b/Source/Data/Linq/IUpdatable.cs similarity index 56% rename from Source/Data/Linq/IUpdateable.cs rename to Source/Data/Linq/IUpdatable.cs index 5e0f314b4..1d33dd0c4 100644 --- a/Source/Data/Linq/IUpdateable.cs +++ b/Source/Data/Linq/IUpdatable.cs @@ -2,7 +2,7 @@ namespace BLToolkit.Data.Linq { - public interface IUpdateable + public interface IUpdatable { } } diff --git a/Source/Data/Linq/LinqExtensions.cs b/Source/Data/Linq/LinqExtensions.cs index 8ea993567..f79561c69 100644 --- a/Source/Data/Linq/LinqExtensions.cs +++ b/Source/Data/Linq/LinqExtensions.cs @@ -54,7 +54,7 @@ static public Table OwnerName([NotNull] this Table table, [NotNull] str #region Scalar Select - static public T Select([NotNull] this IDataContext dataContext, [NotNull] Expression> selector) + static public T Select([NotNull] this IDataContext dataContext, [NotNull, InstantHandle] Expression> selector) { if (dataContext == null) throw new ArgumentNullException("dataContext"); if (selector == null) throw new ArgumentNullException("selector"); @@ -69,9 +69,9 @@ static public T Select([NotNull] this IDataContext dataContext, [NotNull] Exp #endregion - #region Delete + #region Delete - public static int Delete([NotNull] this IQueryable source) + public static int Delete([NotNull] this IQueryable source) { if (source == null) throw new ArgumentNullException("source"); @@ -82,7 +82,9 @@ public static int Delete([NotNull] this IQueryable source) new[] { source.Expression })); } - public static int Delete([NotNull] this IQueryable source, [NotNull] Expression> predicate) + public static int Delete( + [NotNull, InstantHandle] this IQueryable source, + [NotNull, InstantHandle] Expression> predicate) { if (source == null) throw new ArgumentNullException("source"); if (predicate == null) throw new ArgumentNullException("predicate"); @@ -99,9 +101,9 @@ public static int Delete([NotNull] this IQueryable source, [NotNull] Expre #region Update public static int Update( - [NotNull] this IQueryable source, - [NotNull] Table target, - [NotNull] Expression> setter) + [NotNull] this IQueryable source, + [NotNull] Table target, + [NotNull, InstantHandle] Expression> setter) { if (source == null) throw new ArgumentNullException("source"); if (target == null) throw new ArgumentNullException("target"); @@ -114,7 +116,9 @@ public static int Update( new[] { source.Expression, ((IQueryable)target).Expression, Expression.Quote(setter) })); } - public static int Update([NotNull] this IQueryable source, [NotNull] Expression> setter) + public static int Update( + [NotNull] this IQueryable source, + [NotNull, InstantHandle] Expression> setter) { if (source == null) throw new ArgumentNullException("source"); if (setter == null) throw new ArgumentNullException("setter"); @@ -126,7 +130,10 @@ public static int Update([NotNull] this IQueryable source, [NotNull] Expre new[] { source.Expression, Expression.Quote(setter) })); } - public static int Update([NotNull] this IQueryable source, [NotNull] Expression> predicate, [NotNull] Expression> setter) + public static int Update( + [NotNull] this IQueryable source, + [NotNull, InstantHandle] Expression> predicate, + [NotNull, InstantHandle] Expression> setter) { if (source == null) throw new ArgumentNullException("source"); if (predicate == null) throw new ArgumentNullException("predicate"); @@ -139,11 +146,11 @@ public static int Update([NotNull] this IQueryable source, [NotNull] Expre new[] { source.Expression, Expression.Quote(predicate), Expression.Quote(setter) })); } - public static int Update([NotNull] this IUpdateable source) + public static int Update([NotNull] this IUpdatable source) { if (source == null) throw new ArgumentNullException("source"); - var query = ((Updateable)source).Query; + var query = ((Updatable)source).Query; return query.Provider.Execute( Expression.Call( @@ -152,15 +159,28 @@ public static int Update([NotNull] this IUpdateable source) new[] { query.Expression })); } - class Updateable : IUpdateable + class Updatable : IUpdatable { public IQueryable Query; } - public static IUpdateable Set( - [NotNull] this IQueryable source, - [NotNull] Expression> extract, - [NotNull] Expression> update) + public static IUpdatable AsUpdatable([NotNull] this IQueryable source) + { + if (source == null) throw new ArgumentNullException("source"); + + var query = source.Provider.CreateQuery( + Expression.Call( + null, + ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new[] { typeof(T) }), + new[] { source.Expression })); + + return new Updatable { Query = query }; + } + + public static IUpdatable Set( + [NotNull] this IQueryable source, + [NotNull, InstantHandle] Expression> extract, + [NotNull, InstantHandle] Expression> update) { if (source == null) throw new ArgumentNullException("source"); if (extract == null) throw new ArgumentNullException("extract"); @@ -172,19 +192,19 @@ public static IUpdateable Set( ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new[] { typeof(T), typeof(TV) }), new[] { source.Expression, Expression.Quote(extract), Expression.Quote(update) })); - return new Updateable { Query = query }; + return new Updatable { Query = query }; } - public static IUpdateable Set( - [NotNull] this IUpdateable source, - [NotNull] Expression> extract, - [NotNull] Expression> update) + public static IUpdatable Set( + [NotNull] this IUpdatable source, + [NotNull, InstantHandle] Expression> extract, + [NotNull, InstantHandle] Expression> update) { if (source == null) throw new ArgumentNullException("source"); if (extract == null) throw new ArgumentNullException("extract"); if (update == null) throw new ArgumentNullException("update"); - var query = ((Updateable)source).Query; + var query = ((Updatable)source).Query; query = query.Provider.CreateQuery( Expression.Call( @@ -192,13 +212,13 @@ public static IUpdateable Set( ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new[] { typeof(T), typeof(TV) }), new[] { query.Expression, Expression.Quote(extract), Expression.Quote(update) })); - return new Updateable { Query = query }; + return new Updatable { Query = query }; } - public static IUpdateable Set( - [NotNull] this IQueryable source, - [NotNull] Expression> extract, - [NotNull] Expression> update) + public static IUpdatable Set( + [NotNull] this IQueryable source, + [NotNull, InstantHandle] Expression> extract, + [NotNull, InstantHandle] Expression> update) { if (source == null) throw new ArgumentNullException("source"); if (extract == null) throw new ArgumentNullException("extract"); @@ -210,19 +230,19 @@ public static IUpdateable Set( ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new[] { typeof(T), typeof(TV) }), new[] { source.Expression, Expression.Quote(extract), Expression.Quote(update) })); - return new Updateable { Query = query }; + return new Updatable { Query = query }; } - public static IUpdateable Set( - [NotNull] this IUpdateable source, - [NotNull] Expression> extract, - [NotNull] Expression> update) + public static IUpdatable Set( + [NotNull] this IUpdatable source, + [NotNull, InstantHandle] Expression> extract, + [NotNull, InstantHandle] Expression> update) { if (source == null) throw new ArgumentNullException("source"); if (extract == null) throw new ArgumentNullException("extract"); if (update == null) throw new ArgumentNullException("update"); - var query = ((Updateable)source).Query; + var query = ((Updatable)source).Query; query = query.Provider.CreateQuery( Expression.Call( @@ -230,13 +250,13 @@ public static IUpdateable Set( ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new[] { typeof(T), typeof(TV) }), new[] { query.Expression, Expression.Quote(extract), Expression.Quote(update) })); - return new Updateable { Query = query }; + return new Updatable { Query = query }; } - public static IUpdateable Set( - [NotNull] this IQueryable source, - [NotNull] Expression> extract, - TV value) + public static IUpdatable Set( + [NotNull] this IQueryable source, + [NotNull, InstantHandle] Expression> extract, + TV value) { if (source == null) throw new ArgumentNullException("source"); if (extract == null) throw new ArgumentNullException("extract"); @@ -247,18 +267,18 @@ public static IUpdateable Set( ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new[] { typeof(T), typeof(TV) }), new[] { source.Expression, Expression.Quote(extract), Expression.Constant(value, typeof(TV)) })); - return new Updateable { Query = query }; + return new Updatable { Query = query }; } - public static IUpdateable Set( - [NotNull] this IUpdateable source, - [NotNull] Expression> extract, - TV value) + public static IUpdatable Set( + [NotNull] this IUpdatable source, + [NotNull, InstantHandle] Expression> extract, + TV value) { if (source == null) throw new ArgumentNullException("source"); if (extract == null) throw new ArgumentNullException("extract"); - var query = ((Updateable)source).Query; + var query = ((Updatable)source).Query; query = query.Provider.CreateQuery( Expression.Call( @@ -266,14 +286,16 @@ public static IUpdateable Set( ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new[] { typeof(T), typeof(TV) }), new[] { query.Expression, Expression.Quote(extract), Expression.Constant(value, typeof(TV)) })); - return new Updateable { Query = query }; + return new Updatable { Query = query }; } #endregion #region Insert - public static int Insert([NotNull] this Table target, [NotNull] Expression> setter) + public static int Insert( + [NotNull] this Table target, + [NotNull, InstantHandle] Expression> setter) { if (target == null) throw new ArgumentNullException("target"); if (setter == null) throw new ArgumentNullException("setter"); @@ -287,7 +309,9 @@ public static int Insert([NotNull] this Table target, [NotNull] Expression new[] { query.Expression, Expression.Quote(setter) })); } - public static object InsertWithIdentity([NotNull] this Table target, [NotNull] Expression> setter) + public static object InsertWithIdentity( + [NotNull] this Table target, + [NotNull, InstantHandle] Expression> setter) { if (target == null) throw new ArgumentNullException("target"); if (setter == null) throw new ArgumentNullException("setter"); @@ -300,6 +324,22 @@ public static object InsertWithIdentity([NotNull] this Table target, [NotN ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new[] { typeof(T) }), new[] { query.Expression, Expression.Quote(setter) })); } + + public static object InsertWithOutput( + [NotNull] this Table target, + [NotNull, InstantHandle] Expression> setter ) + { + if (target == null) throw new ArgumentNullException("target"); + if (setter == null) throw new ArgumentNullException("setter"); + + IQueryable query = target; + + return query.Provider.Execute( + Expression.Call( + null, + ( (MethodInfo)MethodBase.GetCurrentMethod() ).MakeGenericMethod( new[] { typeof( T ) } ), + new[] { query.Expression, Expression.Quote( setter ) } ) ); + } #region ValueInsertable @@ -324,9 +364,9 @@ public static IValueInsertable Into(this IDataContext dataContext, [NotNul } public static IValueInsertable Value( - [NotNull] this Table source, - [NotNull] Expression> field, - [NotNull] Expression> value) + [NotNull] this Table source, + [NotNull, InstantHandle] Expression> field, + [NotNull, InstantHandle] Expression> value) { if (source == null) throw new ArgumentNullException("source"); if (field == null) throw new ArgumentNullException("field"); @@ -344,9 +384,9 @@ public static IValueInsertable Value( } public static IValueInsertable Value( - [NotNull] this Table source, - [NotNull] Expression> field, - TV value) + [NotNull] this Table source, + [NotNull, InstantHandle] Expression> field, + TV value) { if (source == null) throw new ArgumentNullException("source"); if (field == null) throw new ArgumentNullException("field"); @@ -363,9 +403,9 @@ public static IValueInsertable Value( } public static IValueInsertable Value( - [NotNull] this IValueInsertable source, - [NotNull] Expression> field, - [NotNull] Expression> value) + [NotNull] this IValueInsertable source, + [NotNull, InstantHandle] Expression> field, + [NotNull, InstantHandle] Expression> value) { if (source == null) throw new ArgumentNullException("source"); if (field == null) throw new ArgumentNullException("field"); @@ -383,9 +423,9 @@ public static IValueInsertable Value( } public static IValueInsertable Value( - [NotNull] this IValueInsertable source, - [NotNull] Expression> field, - TV value) + [NotNull] this IValueInsertable source, + [NotNull, InstantHandle] Expression> field, + TV value) { if (source == null) throw new ArgumentNullException("source"); if (field == null) throw new ArgumentNullException("field"); @@ -426,13 +466,28 @@ public static object InsertWithIdentity([NotNull] this IValueInsertable so ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new[] { typeof(T) }), new[] { query.Expression })); } + + public static object InsertWithOutput( [NotNull] this IValueInsertable source ) + { + if (source == null) throw new ArgumentNullException( "source" ); + + var query = ( (ValueInsertable)source ).Query; + + return query.Provider.Execute( + Expression.Call( + null, + ( (MethodInfo)MethodBase.GetCurrentMethod() ).MakeGenericMethod( new[] { typeof( T ) } ), + new[] { query.Expression } ) ); + } #endregion #region SelectInsertable public static int Insert( - [NotNull] this IQueryable source, [NotNull] Table target, [NotNull] Expression> setter) + [NotNull] this IQueryable source, + [NotNull] Table target, + [NotNull, InstantHandle] Expression> setter) { if (source == null) throw new ArgumentNullException("source"); if (target == null) throw new ArgumentNullException("target"); @@ -446,7 +501,9 @@ public static int Insert( } public static object InsertWithIdentity( - [NotNull] this IQueryable source, [NotNull] Table target, [NotNull] Expression> setter) + [NotNull] this IQueryable source, + [NotNull] Table target, + [NotNull, InstantHandle] Expression> setter) { if (source == null) throw new ArgumentNullException("source"); if (target == null) throw new ArgumentNullException("target"); @@ -458,6 +515,22 @@ public static object InsertWithIdentity( ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new[] { typeof(TSource), typeof(TTarget) }), new[] { source.Expression, ((IQueryable)target).Expression, Expression.Quote(setter) })); } + + public static object InsertWithOutput( + [NotNull] this IQueryable source, + [NotNull] Table target, + [NotNull, InstantHandle] Expression> setter) + { + if (source == null) throw new ArgumentNullException( "source" ); + if (target == null) throw new ArgumentNullException( "target" ); + if (setter == null) throw new ArgumentNullException( "setter" ); + + return source.Provider.Execute( + Expression.Call( + null, + ( (MethodInfo)MethodBase.GetCurrentMethod() ).MakeGenericMethod( new[] { typeof( TSource ), typeof( TTarget ) } ), + new[] { source.Expression, ( (IQueryable)target ).Expression, Expression.Quote( setter ) } ) ); + } class SelectInsertable : ISelectInsertable { @@ -480,9 +553,9 @@ public static ISelectInsertable Into( } public static ISelectInsertable Value( - [NotNull] this ISelectInsertable source, - [NotNull] Expression> field, - [NotNull] Expression> value) + [NotNull] this ISelectInsertable source, + [NotNull, InstantHandle] Expression> field, + [NotNull, InstantHandle] Expression> value) { if (source == null) throw new ArgumentNullException("source"); if (field == null) throw new ArgumentNullException("field"); @@ -500,9 +573,9 @@ public static ISelectInsertable Value( } public static ISelectInsertable Value( - [NotNull] this ISelectInsertable source, - [NotNull] Expression> field, - [NotNull] Expression> value) + [NotNull] this ISelectInsertable source, + [NotNull, InstantHandle] Expression> field, + [NotNull, InstantHandle] Expression> value) { if (source == null) throw new ArgumentNullException("source"); if (field == null) throw new ArgumentNullException("field"); @@ -520,8 +593,8 @@ public static ISelectInsertable Value( } public static ISelectInsertable Value( - [NotNull] this ISelectInsertable source, - [NotNull] Expression> field, + [NotNull] this ISelectInsertable source, + [NotNull, InstantHandle] Expression> field, TValue value) { if (source == null) throw new ArgumentNullException("source"); @@ -571,9 +644,9 @@ public static object InsertWithIdentity([NotNull] this ISelectI #region InsertOrUpdate public static int InsertOrUpdate( - [NotNull] this Table target, - [NotNull] Expression> insertSetter, - [NotNull] Expression> onDuplicateKeyUpdateSetter) + [NotNull] this Table target, + [NotNull, InstantHandle] Expression> insertSetter, + [NotNull, InstantHandle] Expression> onDuplicateKeyUpdateSetter) { if (target == null) throw new ArgumentNullException("target"); if (insertSetter == null) throw new ArgumentNullException("insertSetter"); @@ -589,10 +662,10 @@ public static int InsertOrUpdate( } public static int InsertOrUpdate( - [NotNull] this Table target, - [NotNull] Expression> insertSetter, - [NotNull] Expression> onDuplicateKeyUpdateSetter, - [NotNull] Expression> keySelector) + [NotNull] this Table target, + [NotNull, InstantHandle] Expression> insertSetter, + [NotNull, InstantHandle] Expression> onDuplicateKeyUpdateSetter, + [NotNull, InstantHandle] Expression> keySelector) { if (target == null) throw new ArgumentNullException("target"); if (insertSetter == null) throw new ArgumentNullException("insertSetter"); @@ -618,7 +691,9 @@ public static int InsertOrUpdate( #region Take / Skip / ElementAt - public static IQueryable Take([NotNull] this IQueryable source, [NotNull] Expression> count) + public static IQueryable Take( + [NotNull] this IQueryable source, + [NotNull, InstantHandle] Expression> count) { if (source == null) throw new ArgumentNullException("source"); if (count == null) throw new ArgumentNullException("count"); @@ -630,7 +705,9 @@ public static IQueryable Take([NotNull] this IQueryable Skip([NotNull] this IQueryable source, [NotNull] Expression> count) + public static IQueryable Skip( + [NotNull] this IQueryable source, + [NotNull, InstantHandle] Expression> count) { if (source == null) throw new ArgumentNullException("source"); if (count == null) throw new ArgumentNullException("count"); @@ -642,7 +719,9 @@ public static IQueryable Skip([NotNull] this IQueryable([NotNull] this IQueryable source, [NotNull] Expression> index) + public static TSource ElementAt( + [NotNull] this IQueryable source, + [NotNull, InstantHandle] Expression> index) { if (source == null) throw new ArgumentNullException("source"); if (index == null) throw new ArgumentNullException("index"); @@ -654,7 +733,9 @@ public static TSource ElementAt([NotNull] this IQueryable sour new[] { source.Expression, Expression.Quote(index) })); } - public static TSource ElementAtOrDefault([NotNull] this IQueryable source, [NotNull] Expression> index) + public static TSource ElementAtOrDefault( + [NotNull] this IQueryable source, + [NotNull, InstantHandle] Expression> index) { if (source == null) throw new ArgumentNullException("source"); if (index == null) throw new ArgumentNullException("index"); diff --git a/Source/Data/Linq/Query.cs b/Source/Data/Linq/Query.cs index b0d70ad2f..6b2785f7f 100644 --- a/Source/Data/Linq/Query.cs +++ b/Source/Data/Linq/Query.cs @@ -117,6 +117,30 @@ IEnumerable MakeEnumerable(QueryContext qc, IDataContextInfo dci, Expression const int CacheSize = 100; + public static void ClearCache() + { + lock (_sync) + { + var temp = _first; + + while (temp != null) + { + var temp2 = temp; + temp = temp.Next; + + temp2.Queries.Clear(); + } + + _first = null; + + ObjectOperation.InsertWithIdentity.Clear(); + ObjectOperation.InsertOrUpdate.Clear(); + ObjectOperation.Insert.Clear(); + ObjectOperation.Update.Clear(); + ObjectOperation.Delete.Clear(); + } + } + public static Query GetQuery(IDataContextInfo dataContextInfo, Expression expr) { var query = FindQuery(dataContextInfo, expr); @@ -377,14 +401,27 @@ object SetCommand(IDataContext dataContext, Expression expr, object[] parameters { lock (this) { - SetParameters(expr, parameters, idx); + bool useQueryText = false; +#if !SILVERLIGHT + useQueryText = dataContext is DbManager && ((DbManager) dataContext).UseQueryText; +#endif + SetParameters(expr, parameters, idx, useQueryText); + return dataContext.SetQuery(Queries[idx]); } } - void SetParameters(Expression expr, object[] parameters, int idx) + void SetParameters(Expression expr, object[] parameters, int idx, bool useQueryText) { - foreach (var p in Queries[idx].Parameters) + QueryInfo query = Queries[idx]; + + if (query.UseQueryText != useQueryText) + { + query.Context = null; + query.UseQueryText = useQueryText; + } + + foreach (var p in query.Parameters) { var value = p.Accessor(expr, parameters); @@ -401,15 +438,22 @@ void SetParameters(Expression expr, object[] parameters, int idx) foreach (var v in (IEnumerable)value) { - values.Add(v != null && v.GetType().IsEnum ? - MappingSchema.MapEnumToValue(v, true) : - v); + values.Add(v); + // Enum mapping done by parameter itself + //values.Add(v != null && v.GetType().IsEnum ? + // MappingSchema.MapEnumToValue(v, true) : + // v); } - + value = values; } } + // Reset the query context sql when the parameters values change. When UseQueryText = true + // the query context sql includes the parameters values + if (useQueryText && query.Context != null && !Equals(p.SqlParameter.Value, value)) + query.Context = null; + p.SqlParameter.Value = value; } } @@ -446,6 +490,7 @@ public QueryInfo() public SqlQuery SqlQuery { get; set; } public object Context { get; set; } + public bool UseQueryText { get; set; } public SqlParameter[] GetParameters() { @@ -468,6 +513,7 @@ static class ObjectOperation { public static readonly Dictionary> Insert = new Dictionary>(); public static readonly Dictionary> InsertWithIdentity = new Dictionary>(); + public static readonly Dictionary> InsertWithOutput = new Dictionary>(); public static readonly Dictionary> InsertOrUpdate = new Dictionary>(); public static readonly Dictionary> Update = new Dictionary>(); public static readonly Dictionary> Delete = new Dictionary>(); @@ -500,10 +546,28 @@ static ParameterAccessor GetParameter(IDataContext dataContext, SqlField fie var member = members[i]; var pof = Expression.PropertyOrField(getter, member) as Expression; - getter = i == 0 ? pof : Expression.Condition(Expression.Equal(getter, Expression.Constant(null)), defValue, pof); + if (i == 0) + { + if (members.Length == 1 && mm.IsExplicit) + { + if (getter.Type != typeof(object)) + getter = Expression.Convert(getter, typeof(object)); + + pof = Expression.Call( + Expression.Constant(mm), + ReflectionHelper.Expressor.MethodExpressor(m => m.GetValue(null)), + getter); + } + + getter = pof; + } + else + { + getter = Expression.Condition(Expression.Equal(getter, Expression.Constant(null)), defValue, pof); + } } - if (!mm.Type.IsClass && mm.MapMemberInfo.Nullable && !TypeHelper.IsNullableType(mm.Type)) + if (!mm.Type.IsClass && !mm.Type.IsInterface && mm.MapMemberInfo.Nullable && !TypeHelper.IsNullableType(mm.Type)) { var method = ReflectionHelper.Expressor.MethodExpressor(_ => ConvertNullable(0, 0)) .GetGenericMethodDefinition() @@ -512,7 +576,10 @@ static ParameterAccessor GetParameter(IDataContext dataContext, SqlField fie getter = Expression.Call(null, method, getter, Expression.Constant(mm.MapMemberInfo.NullValue)); } else - getter = Expression.Convert(getter, typeof(object)); + { + if (getter.Type != typeof(object)) + getter = Expression.Convert(getter, typeof(object)); + } var mapper = Expression.Lambda>( getter, @@ -525,8 +592,10 @@ static ParameterAccessor GetParameter(IDataContext dataContext, SqlField fie SqlParameter = new SqlParameter(field.SystemType, field.Name.Replace('.', '_'), null, dataContext.MappingSchema) }; - if (field.SystemType.IsEnum) - param.SqlParameter.SetEnumConverter(field.SystemType, dataContext.MappingSchema); + if (TypeHelper.IsEnumOrNullableEnum(field.SystemType)) + { + param.SqlParameter.SetEnumConverter(field.MemberMapper.ComplexMemberAccessor, dataContext.MappingSchema); + } return param; } @@ -645,6 +714,64 @@ public static object InsertWithIdentity(IDataContextInfo dataContextInfo, T obj) } #endregion + + #region InsertWithOutput + + public static object InsertWithOutput( IDataContextInfo dataContextInfo, T obj ) + { + if ( Equals( default( T ), obj ) ) + return 0; + + Query ei; + + var key = new { dataContextInfo.MappingSchema, dataContextInfo.ContextID }; + + if ( !ObjectOperation.InsertWithOutput.TryGetValue( key, out ei ) ) + lock ( _sync ) + if ( !ObjectOperation.InsertWithOutput.TryGetValue( key, out ei ) ) + { + var sqlTable = new SqlTable( dataContextInfo.MappingSchema ); + var sqlQuery = new SqlQuery { QueryType = QueryType.Insert }; + + sqlQuery.Insert.Into = sqlTable; + sqlQuery.Insert.WithIdentity = true; + + ei = new Query + { + MappingSchema = dataContextInfo.MappingSchema, + ContextID = dataContextInfo.ContextID, + CreateSqlProvider = dataContextInfo.CreateSqlProvider, + Queries = { new Query.QueryInfo { SqlQuery = sqlQuery, } } + }; + + foreach ( var field in sqlTable.Fields ) + { + if ( field.Value.IsInsertable ) + { + var param = GetParameter( dataContextInfo.DataContext, field.Value ); + + ei.Queries[0].Parameters.Add( param ); + + sqlQuery.Insert.Items.Add( new SqlQuery.SetExpression( field.Value, param.SqlParameter ) ); + } + else if ( field.Value.IsIdentity ) + { + var expr = ei.SqlProvider.GetIdentityExpression( sqlTable, field.Value, true ); + + if ( expr != null ) + sqlQuery.Insert.Items.Add( new SqlQuery.SetExpression( field.Value, expr ) ); + } + } + + ei.SetScalarQuery(); + + ObjectOperation.InsertWithOutput.Add( key, ei ); + } + + return ei.GetElement( null, dataContextInfo, Expression.Constant( obj ), null ); + } + + #endregion #region InsertOrReplace @@ -869,6 +996,9 @@ public static int Update(IDataContextInfo dataContextInfo, T obj) ei.Queries[0].Parameters.Add(param); sqlQuery.Where.Field(field).Equal.Expr(param.SqlParameter); + + if (field.Nullable) + sqlQuery.IsParameterDependent = true; } ei.SetNonQueryQuery(); @@ -922,6 +1052,9 @@ public static int Delete(IDataContextInfo dataContextInfo, T obj) ei.Queries[0].Parameters.Add(param); sqlQuery.Where.Field(field).Equal.Expr(param.SqlParameter); + + if (field.Nullable) + sqlQuery.IsParameterDependent = true; } ei.SetNonQueryQuery(); @@ -981,7 +1114,7 @@ TE RunQuery( } } - internal void SetQuery(Func mapper) + Func> GetQuery() { FinalizeQuery(); @@ -1030,6 +1163,16 @@ internal void SetQuery(Func mapper) + { + var query = GetQuery(); + + // TODO => Add the possibility to switch to the FullMappingSchema + //mapper = (context, dataContext, arg3, arg4, arg5) => MappingSchema.MapDataReaderToObject(arg3); + GetIEnumerable = (ctx,db,expr,ps) => Map(query(db, expr, ps, 0), ctx, db, expr, ps, mapper); } @@ -1045,7 +1188,32 @@ static IEnumerable Map( queryContext = new QueryContext(dataContextInfo, expr, ps); foreach (var dr in data) - yield return mapper(queryContext, dataContextInfo.DataContext, dr, expr, ps); + { + yield return mapper(queryContext, dataContextInfo.DataContext, dr, expr, ps); + } + } + + internal void SetQuery(Func mapper) + { + var query = GetQuery(); + GetIEnumerable = (ctx,db,expr,ps) => Map(query(db, expr, ps, 0), ctx, db, expr, ps, mapper); + } + + static IEnumerable Map( + IEnumerable data, + QueryContext queryContext, + IDataContextInfo dataContextInfo, + Expression expr, + object[] ps, + Func mapper) + { + if (queryContext == null) + queryContext = new QueryContext(dataContextInfo, expr, ps); + + var counter = 0; + + foreach (var dr in data) + yield return mapper(queryContext, dataContextInfo.DataContext, dr, expr, ps, counter++); } #endregion diff --git a/Source/Data/Linq/ReflectionHelper.cs b/Source/Data/Linq/ReflectionHelper.cs index 999447cc2..36d6b9d04 100644 --- a/Source/Data/Linq/ReflectionHelper.cs +++ b/Source/Data/Linq/ReflectionHelper.cs @@ -13,6 +13,7 @@ #endif using LinqBinary = System.Data.Linq.Binary; +using BLToolkit.Reflection; namespace BLToolkit.Data.Linq { @@ -193,7 +194,8 @@ internal class QueryCtx : Expressor public class MapSchema : Expressor { - public static MethodInfo MapValueToEnum = MethodExpressor(m => m.MapValueToEnum (null, null)); + public static MethodInfo MapValueToEnum = MethodExpressor(m => m.MapValueToEnum(null, (Type)null)); + public static MethodInfo MapValueToEnumWithMemberAccessor = MethodExpressor(m => m.MapValueToEnum(null, (MemberAccessor)null)); public static MethodInfo ChangeType = MethodExpressor(m => m.ConvertChangeType(null, null)); public static Dictionary Converters = new Dictionary diff --git a/Source/Data/Linq/Sql.cs b/Source/Data/Linq/Sql.cs index 1b6c0c71a..60cd902af 100644 --- a/Source/Data/Linq/Sql.cs +++ b/Source/Data/Linq/Sql.cs @@ -151,6 +151,7 @@ public static TTo From(TFrom obj) [SqlProperty("Firebird", "TimeStamp", ServerSideOnly=true)] [SqlProperty( "DateTime", ServerSideOnly=true)] public static DateTime DateTime { get { return DateTime.Now; } } + [SqlProperty("MsSql2000", "DateTime", ServerSideOnly=true)] [SqlProperty("MsSql2005", "DateTime", ServerSideOnly=true)] [SqlProperty("PostgreSQL", "TimeStamp", ServerSideOnly=true)] [SqlProperty("Firebird", "TimeStamp", ServerSideOnly=true)] @@ -165,6 +166,7 @@ public static TTo From(TFrom obj) [SqlProperty("SqlCe", "DateTime", ServerSideOnly=true)] [SqlProperty( "SmallDateTime", ServerSideOnly=true)] public static DateTime SmallDateTime { get { return DateTime.Now; } } + [SqlProperty("MsSql2000", "Datetime", ServerSideOnly=true)] [SqlProperty("MsSql2005", "Datetime", ServerSideOnly=true)] [SqlProperty("SqlCe", "Datetime", ServerSideOnly=true)] [SqlProperty( "Date", ServerSideOnly=true)] public static DateTime Date { get { return DateTime.Now; } } @@ -174,6 +176,7 @@ public static TTo From(TFrom obj) [SqlProperty("PostgreSQL", "TimeStamp", ServerSideOnly=true)] [SqlProperty("Firebird", "TimeStamp", ServerSideOnly=true)] [SqlProperty("MsSql2008", "DateTimeOffset", ServerSideOnly=true)] + [SqlProperty("MsSql2012", "DateTimeOffset", ServerSideOnly=true)] [SqlProperty( "DateTime", ServerSideOnly=true)] public static DateTimeOffset DateTimeOffset { get { return DateTimeOffset.Now; } } [SqlFunction("SqlCe", "NChar", ServerSideOnly=true)] @@ -217,8 +220,10 @@ public static TTo From(TFrom obj) [SqlFunction( PreferServerSide = true)] [SqlFunction("Access", "Len", PreferServerSide = true)] [SqlFunction("Firebird", "Char_Length", PreferServerSide = true)] + [SqlFunction("MsSql2000", "Len", PreferServerSide = true)] [SqlFunction("MsSql2005", "Len", PreferServerSide = true)] [SqlFunction("MsSql2008", "Len", PreferServerSide = true)] + [SqlFunction("MsSql2012", "Len", PreferServerSide = true)] [SqlFunction("SqlCe", "Len", PreferServerSide = true)] [SqlFunction("Sybase", "Len", PreferServerSide = true)] public static int? Length(string str) @@ -271,6 +276,15 @@ public static bool Like(string matchExpression, string pattern, char? escapeChar return str.IndexOf(value) + 1; } + [SqlFunction] + public static int? ContainsExactly(string value, string str) + { + if (str == null || value == null) + return null; + + return str.ContainsExactly(value); + } + [SqlFunction] [SqlFunction("DB2", "Locate")] [SqlFunction("MySql", "Locate")] @@ -439,8 +453,10 @@ public static string Upper(string str) [SqlFunction( PreferServerSide = true)] [SqlFunction("Access", "Len", PreferServerSide = true)] [SqlFunction("Firebird", "Octet_Length", PreferServerSide = true)] + [SqlFunction("MsSql2000", "DataLength", PreferServerSide = true)] [SqlFunction("MsSql2005", "DataLength", PreferServerSide = true)] [SqlFunction("MsSql2008", "DataLength", PreferServerSide = true)] + [SqlFunction("MsSql2012", "DataLength", PreferServerSide = true)] [SqlFunction("SqlCe", "DataLength", PreferServerSide = true)] [SqlFunction("Sybase", "DataLength", PreferServerSide = true)] public static int? Length(Binary value) @@ -455,6 +471,7 @@ public static string Upper(string str) [SqlProperty("CURRENT_TIMESTAMP")] [SqlProperty("Informix", "CURRENT")] [SqlProperty("Access", "Now")] + [SqlProperty("Oracle", "SYSDATE")] public static DateTime GetDate() { return DateTime.Now; @@ -465,6 +482,7 @@ public static DateTime GetDate() [SqlProperty("Access", "Now", ServerSideOnly = true)] [SqlFunction("SqlCe", "GetDate", ServerSideOnly = true)] [SqlFunction("Sybase", "GetDate", ServerSideOnly = true)] + [SqlFunction("Oracle", "SYSDATE", ServerSideOnly = true)] public static DateTime CurrentTimestamp { get { throw new LinqException("The 'CurrentTimestamp' is server side only property."); } @@ -475,6 +493,7 @@ public static DateTime CurrentTimestamp [SqlProperty("Access", "Now")] [SqlFunction("SqlCe", "GetDate")] [SqlFunction("Sybase", "GetDate")] + [SqlFunction("Oracle", "SYSDATE")] public static DateTime CurrentTimestamp2 { get { return DateTime.Now; } @@ -691,7 +710,9 @@ public static int DateFirst [SqlFunction] public static Double? Atan (Double? value) { return value == null ? null : (Double?) Math.Atan (value.Value); } [CLSCompliant(false)] + [SqlFunction( "MsSql2012", "Atn2")] [SqlFunction( "MsSql2008", "Atn2")] + [SqlFunction( "MsSql2000", "Atn2")] [SqlFunction( "MsSql2005", "Atn2")] [SqlFunction( "DB2", "Atan2", 1, 0)] [SqlFunction( "SqlCe", "Atn2")] @@ -839,8 +860,10 @@ public static int DateFirst [SqlFunction] public static Double? Tan (Double? value) { return value == null ? null : (Double?)Math.Tan (value.Value); } [SqlFunction] public static Double? Tanh (Double? value) { return value == null ? null : (Double?)Math.Tanh(value.Value); } + [SqlExpression("MsSql2012", "Round({0}, 0, 1)")] [SqlExpression("MsSql2008", "Round({0}, 0, 1)")] [SqlExpression("MsSql2005", "Round({0}, 0, 1)")] + [SqlExpression("MsSql2000", "Round({0}, 0, 1)")] [SqlExpression("DB2", "Truncate({0}, 0)")] [SqlExpression("Informix", "Trunc({0}, 0)")] [SqlExpression("Oracle", "Trunc({0}, 0)")] @@ -858,8 +881,10 @@ public static int DateFirst #endif } + [SqlExpression("MsSql2012", "Round({0}, 0, 1)")] [SqlExpression("MsSql2008", "Round({0}, 0, 1)")] [SqlExpression("MsSql2005", "Round({0}, 0, 1)")] + [SqlExpression("MsSql2000", "Round({0}, 0, 1)")] [SqlExpression("DB2", "Truncate({0}, 0)")] [SqlExpression("Informix", "Trunc({0}, 0)")] [SqlExpression("Oracle", "Trunc({0}, 0)")] diff --git a/Source/Data/Linq/TableT.cs b/Source/Data/Linq/TableT.cs index 7e59f8234..c9561e794 100644 --- a/Source/Data/Linq/TableT.cs +++ b/Source/Data/Linq/TableT.cs @@ -51,5 +51,10 @@ public override string ToString() #endif #endregion + + public object Select(object p) + { + throw new NotImplementedException(); + } } } diff --git a/Source/Data/Sql/QueryElementType.cs b/Source/Data/Sql/QueryElementType.cs index 4c227a9fe..382c47a12 100644 --- a/Source/Data/Sql/QueryElementType.cs +++ b/Source/Data/Sql/QueryElementType.cs @@ -36,6 +36,7 @@ public enum QueryElementType InsertClause, UpdateClause, SetExpression, + DeleteClause, FromClause, WhereClause, GroupByClause, diff --git a/Source/Data/Sql/QueryVisitor.cs b/Source/Data/Sql/QueryVisitor.cs index 45381713d..9f7b10aa7 100644 --- a/Source/Data/Sql/QueryVisitor.cs +++ b/Source/Data/Sql/QueryVisitor.cs @@ -212,6 +212,13 @@ void Visit1(IQueryElement element) break; } + case QueryElementType.DeleteClause: + { + if (((SqlQuery.DeleteClause)element).Table != null) + Visit1(((SqlQuery.DeleteClause)element).Table); + break; + } + case QueryElementType.SelectClause: { //var sc = (SqlQuery.SelectClause)element; @@ -282,13 +289,18 @@ void Visit1(IQueryElement element) Visit1(q.Update); break; + case QueryType.Delete : + Visit1(q.Delete); + Visit1(q.Select); + break; + case QueryType.Insert : Visit1(q.Insert); - if (q.From.Tables.Count == 0) - break; + if (q.From.Tables.Count != 0) + Visit1(q.Select); - goto default; + break; default : Visit1(q.Select); @@ -512,6 +524,13 @@ void Visit2(IQueryElement element) break; } + case QueryElementType.DeleteClause: + { + if (((SqlQuery.DeleteClause)element).Table != null) + Visit2(((SqlQuery.DeleteClause)element).Table); + break; + } + case QueryElementType.SelectClause: { //var sc = (SqlQuery.SelectClause)element; @@ -582,13 +601,18 @@ void Visit2(IQueryElement element) Visit2(q.Update); break; + case QueryType.Delete : + Visit2(q.Delete); + Visit2(q.Select); + break; + case QueryType.Insert : Visit2(q.Insert); - if (q.From.Tables.Count == 0) - break; + if (q.From.Tables.Count != 0) + Visit2(q.Select); - goto default; + break; default : Visit2(q.Select); @@ -790,6 +814,12 @@ public IQueryElement Find(IQueryElement element, FindFunc find) Find(sc.Keys, find); } + case QueryElementType.DeleteClause: + { + var sc = (SqlQuery.DeleteClause)element; + return Find(sc.Table, find); + } + case QueryElementType.SelectClause: { var sc = (SqlQuery.SelectClause)element; @@ -1115,8 +1145,8 @@ IQueryElement ConvertInternal(IQueryElement element, ConvertFunc action) if (t != null && !ReferenceEquals(s.Into, t) || i != null && !ReferenceEquals(s.Items, i)) { - var sc = new SqlQuery.InsertClause(); - sc.Into = t ?? sc.Into; + var sc = new SqlQuery.InsertClause { Into = t ?? s.Into }; + sc.Items.AddRange(i ?? s.Items); sc.WithIdentity = s.WithIdentity; @@ -1137,8 +1167,8 @@ IQueryElement ConvertInternal(IQueryElement element, ConvertFunc action) i != null && !ReferenceEquals(s.Items, i) || k != null && !ReferenceEquals(s.Keys, k)) { - var sc = new SqlQuery.UpdateClause(); - sc.Table = t ?? sc.Table; + var sc = new SqlQuery.UpdateClause { Table = t ?? s.Table }; + sc.Items.AddRange(i ?? s.Items); sc.Keys. AddRange(k ?? s.Keys); @@ -1148,6 +1178,19 @@ IQueryElement ConvertInternal(IQueryElement element, ConvertFunc action) break; } + case QueryElementType.DeleteClause: + { + var s = (SqlQuery.DeleteClause)element; + var t = s.Table != null ? (SqlTable)ConvertInternal(s.Table, action) : null; + + if (t != null && !ReferenceEquals(s.Table, t)) + { + newElement = new SqlQuery.DeleteClause { Table = t ?? s.Table }; + } + + break; + } + case QueryElementType.SelectClause: { var sc = (SqlQuery.SelectClause)element; @@ -1297,6 +1340,7 @@ IQueryElement ConvertInternal(IQueryElement element, ConvertFunc action) var sc = (SqlQuery.SelectClause) ConvertInternal(q.Select, action) ?? q.Select; var ic = q.IsInsert ? ((SqlQuery.InsertClause)ConvertInternal(q.Insert, action) ?? q.Insert) : null; var uc = q.IsUpdate ? ((SqlQuery.UpdateClause)ConvertInternal(q.Update, action) ?? q.Update) : null; + var dc = q.IsDelete ? ((SqlQuery.DeleteClause)ConvertInternal(q.Delete, action) ?? q.Delete) : null; var wc = (SqlQuery.WhereClause) ConvertInternal(q.Where, action) ?? q.Where; var gc = (SqlQuery.GroupByClause)ConvertInternal(q.GroupBy, action) ?? q.GroupBy; var hc = (SqlQuery.WhereClause) ConvertInternal(q.Having, action) ?? q.Having; @@ -1318,7 +1362,7 @@ IQueryElement ConvertInternal(IQueryElement element, ConvertFunc action) } } - nq.Init(ic, uc, sc, fc, wc, gc, hc, oc, us, (SqlQuery)parent, q.IsParameterDependent, ps); + nq.Init(ic, uc, dc, sc, fc, wc, gc, hc, oc, us, (SqlQuery)parent, q.IsParameterDependent, ps); _visitedElements[q] = action(nq) ?? nq; diff --git a/Source/Data/Sql/SqlParameter.cs b/Source/Data/Sql/SqlParameter.cs index 241311210..73282ccb1 100644 --- a/Source/Data/Sql/SqlParameter.cs +++ b/Source/Data/Sql/SqlParameter.cs @@ -7,7 +7,7 @@ namespace BLToolkit.Data.Sql { using Mapping; - public class SqlParameter : ISqlExpression, IValueContainer + public class SqlParameter : SqlValueBase, ISqlExpression { public SqlParameter(Type systemType, string name, object value, MappingSchema mappingSchema) { @@ -25,7 +25,7 @@ public SqlParameter(Type systemType, string name, object value, MappingSchema ma public SqlParameter(Type systemType, string name, object value, Converter valueConverter) : this(systemType, name, value, (MappingSchema)null) { - _valueConverter = valueConverter; + ValueConverter = valueConverter; } [Obsolete] @@ -46,140 +46,6 @@ public SqlParameter(string name, object value, Converter valueCon public DbType DbType { get; set; } public int DbSize { get; set; } - private object _value; - public object Value - { - get - { - var valueConverter = ValueConverter; - return valueConverter == null? _value: valueConverter(_value); - } - - set { _value = value; } - } - - #region Value Converter - - internal List EnumTypes; - internal List TakeValues; - internal string LikeStart, LikeEnd; - - private Converter _valueConverter; - public Converter ValueConverter - { - get - { - if (_valueConverter == null) - { - if (EnumTypes != null) - foreach (var type in EnumTypes.ToArray()) - SetEnumConverter(type, Map.DefaultSchema); - else if (TakeValues != null) - foreach (var take in TakeValues.ToArray()) - SetTakeConverter(take); - else if (LikeStart != null) - SetLikeConverter(LikeStart, LikeEnd); - } - - return _valueConverter; - } - - set { _valueConverter = value; } - } - - bool _isEnumConverterSet; - - internal void SetEnumConverter(Type type, MappingSchema ms) - { - if (!_isEnumConverterSet) - { - _isEnumConverterSet = true; - - if (EnumTypes == null) - EnumTypes = new List(); - - EnumTypes.Add(type); - - SetEnumConverterInternal(type, ms); - } - } - - void SetEnumConverterInternal(Type type, MappingSchema ms) - { - if (_valueConverter == null) - { - _valueConverter = o => ms.MapEnumToValue(o, type, true); - } - else - { - var converter = _valueConverter; - _valueConverter = o => ms.MapEnumToValue(converter(o), type, true); - } - } - - internal void SetTakeConverter(int take) - { - if (TakeValues == null) - TakeValues = new List(); - - TakeValues.Add(take); - - SetTakeConverterInternal(take); - } - - void SetTakeConverterInternal(int take) - { - var conv = _valueConverter; - - if (conv == null) - _valueConverter = v => v == null ? null : (object) ((int) v + take); - else - _valueConverter = v => v == null ? null : (object) ((int) conv(v) + take); - } - - internal void SetLikeConverter(string start, string end) - { - LikeStart = start; - LikeEnd = end; - _valueConverter = GetLikeEscaper(start, end); - } - - static Converter GetLikeEscaper(string start, string end) - { - return value => - { - if (value == null) -#if DEBUG - value = ""; -#else - throw new SqlException("NULL cannot be used as a LIKE predicate parameter."); -#endif - - var text = value.ToString(); - - if (text.IndexOfAny(new[] { '%', '_', '[' }) < 0) - return start + text + end; - - var sb = new StringBuilder(start, text.Length + start.Length + end.Length); - - foreach (var c in text) - { - if (c == '%' || c == '_' || c == '[') - { - sb.Append('['); - sb.Append(c); - sb.Append(']'); - } - else - sb.Append(c); - } - - return sb.ToString(); - }; - } - - #endregion - #region Overrides #if OVERRIDETOSTRING @@ -252,7 +118,7 @@ public ICloneableElement Clone(Dictionary o if (!objectTree.TryGetValue(this, out clone)) { - var p = new SqlParameter(SystemType, Name, _value, _valueConverter) { IsQueryParameter = IsQueryParameter, DbType = DbType, DbSize = DbSize }; + var p = new SqlParameter(SystemType, Name, _value, ValueConverter) { IsQueryParameter = IsQueryParameter, DbType = DbType, DbSize = DbSize }; objectTree.Add(this, clone = p); } diff --git a/Source/Data/Sql/SqlProvider/AccessSqlProvider.cs b/Source/Data/Sql/SqlProvider/AccessSqlProvider.cs index c58d2843c..c69c4ac40 100644 --- a/Source/Data/Sql/SqlProvider/AccessSqlProvider.cs +++ b/Source/Data/Sql/SqlProvider/AccessSqlProvider.cs @@ -338,7 +338,7 @@ SqlFunction ConvertCase(Type systemType, ISqlExpression[] parameters, int start) return new SqlFunction(systemType, "Iif", parameters[start], parameters[start + 1], ConvertCase(systemType, parameters, start + 2)); } - public override void BuildValue(StringBuilder sb, object value) + public override void BuildValue(StringBuilder sb, object value, SqlParameter sqlParameter = null) { if (value is bool) sb.Append(value); diff --git a/Source/Data/Sql/SqlProvider/BasicSqlProvider.cs b/Source/Data/Sql/SqlProvider/BasicSqlProvider.cs index 534d29ac3..6453344f9 100644 --- a/Source/Data/Sql/SqlProvider/BasicSqlProvider.cs +++ b/Source/Data/Sql/SqlProvider/BasicSqlProvider.cs @@ -19,19 +19,8 @@ public abstract class BasicSqlProvider : ISqlProvider { #region Init - private SqlQuery _sqlQuery; - public SqlQuery SqlQuery - { - get { return _sqlQuery; } - set { _sqlQuery = value; } - } - - private int _indent; - public int Indent - { - get { return _indent; } - set { _indent = value; } - } + public SqlQuery SqlQuery { get; set; } + public int Indent { get; set; } private int _nextNesting = 1; private int _nesting; @@ -42,18 +31,14 @@ public int Nesting bool _skipAlias; - private Step _buildStep; - public Step BuildStep - { - get { return _buildStep; } - set { _buildStep = value; } - } + public Step BuildStep { get; set; } #endregion #region Support Flags - public virtual bool SkipAcceptsParameter { get { return true; } } + public bool UseQueryText { get; set; } + public virtual bool SkipAcceptsParameter { get { return true; } } public virtual bool TakeAcceptsParameter { get { return true; } } public virtual bool IsTakeSupported { get { return true; } } public virtual bool IsSkipSupported { get { return true; } } @@ -67,6 +52,7 @@ public Step BuildStep public virtual bool IsInsertOrUpdateSupported { get { return true; } } public virtual bool CanCombineParameters { get { return true; } } public virtual bool IsGroupByExpressionSupported { get { return true; } } + public virtual int MaxInListValuesCount { get { return int.MaxValue; } } public virtual bool ConvertCountSubQuery(SqlQuery subQuery) { @@ -88,8 +74,8 @@ public virtual int CommandCount(SqlQuery sqlQuery) public virtual int BuildSql(int commandNumber, SqlQuery sqlQuery, StringBuilder sb, int indent, int nesting, bool skipAlias) { - _sqlQuery = sqlQuery; - _indent = indent; + SqlQuery = sqlQuery; + Indent = indent; _nesting = nesting; _nextNesting = _nesting + 1; _skipAlias = skipAlias; @@ -107,7 +93,9 @@ public virtual int BuildSql(int commandNumber, SqlQuery sqlQuery, StringBuilder if (union.IsAll) sb.Append(" ALL"); sb.AppendLine(); - CreateSqlProvider().BuildSql(commandNumber, union.SqlQuery, sb, indent, nesting, skipAlias); + var sqlProvider = CreateSqlProvider(); + sqlProvider.UseQueryText = UseQueryText; + sqlProvider.BuildSql(commandNumber, union.SqlQuery, sb, indent, nesting, skipAlias); } } } @@ -135,7 +123,9 @@ protected virtual int BuildSqlBuilder(SqlQuery sqlQuery, StringBuilder sb, int i if (!IsTakeSupported && sqlQuery.Select.TakeValue != null) throw new SqlException("Take for subqueries is not supported by the '{0}' provider.", Name); - return CreateSqlProvider().BuildSql(0, sqlQuery, sb, indent, nesting, skipAlias); + var sqlProvider = CreateSqlProvider(); + sqlProvider.UseQueryText = UseQueryText; + return sqlProvider.BuildSql(0, sqlQuery, sb, indent, nesting, skipAlias); } protected abstract ISqlProvider CreateSqlProvider(); @@ -147,7 +137,7 @@ protected virtual bool ParenthesizeJoin() protected virtual void BuildSql(StringBuilder sb) { - switch (_sqlQuery.QueryType) + switch (SqlQuery.QueryType) { case QueryType.Select : BuildSelectQuery (sb); break; case QueryType.Delete : BuildDeleteQuery (sb); break; @@ -160,59 +150,65 @@ protected virtual void BuildSql(StringBuilder sb) protected virtual void BuildDeleteQuery(StringBuilder sb) { - _buildStep = Step.DeleteClause; BuildDeleteClause (sb); - _buildStep = Step.FromClause; BuildFromClause (sb); - _buildStep = Step.WhereClause; BuildWhereClause (sb); - _buildStep = Step.GroupByClause; BuildGroupByClause(sb); - _buildStep = Step.HavingClause; BuildHavingClause (sb); - _buildStep = Step.OrderByClause; BuildOrderByClause(sb); - _buildStep = Step.OffsetLimit; BuildOffsetLimit (sb); + BuildStep = Step.DeleteClause; BuildDeleteClause (sb); + BuildStep = Step.FromClause; BuildFromClause (sb); + BuildStep = Step.WhereClause; BuildWhereClause (sb); + BuildStep = Step.GroupByClause; BuildGroupByClause(sb); + BuildStep = Step.HavingClause; BuildHavingClause (sb); + BuildStep = Step.OrderByClause; BuildOrderByClause(sb); + BuildStep = Step.OffsetLimit; BuildOffsetLimit (sb); } protected virtual void BuildUpdateQuery(StringBuilder sb) { - _buildStep = Step.UpdateClause; BuildUpdateClause (sb); - _buildStep = Step.FromClause; BuildFromClause (sb); - _buildStep = Step.WhereClause; BuildWhereClause (sb); - _buildStep = Step.GroupByClause; BuildGroupByClause(sb); - _buildStep = Step.HavingClause; BuildHavingClause (sb); - _buildStep = Step.OrderByClause; BuildOrderByClause(sb); - _buildStep = Step.OffsetLimit; BuildOffsetLimit (sb); + BuildStep = Step.UpdateClause; BuildUpdateClause (sb); + BuildStep = Step.FromClause; BuildFromClause (sb); + BuildStep = Step.WhereClause; BuildWhereClause (sb); + BuildStep = Step.GroupByClause; BuildGroupByClause(sb); + BuildStep = Step.HavingClause; BuildHavingClause (sb); + BuildStep = Step.OrderByClause; BuildOrderByClause(sb); + BuildStep = Step.OffsetLimit; BuildOffsetLimit (sb); } protected virtual void BuildSelectQuery(StringBuilder sb) { - _buildStep = Step.SelectClause; BuildSelectClause (sb); - _buildStep = Step.FromClause; BuildFromClause (sb); - _buildStep = Step.WhereClause; BuildWhereClause (sb); - _buildStep = Step.GroupByClause; BuildGroupByClause(sb); - _buildStep = Step.HavingClause; BuildHavingClause (sb); - _buildStep = Step.OrderByClause; BuildOrderByClause(sb); - _buildStep = Step.OffsetLimit; BuildOffsetLimit (sb); + BuildStep = Step.SelectClause; BuildSelectClause (sb); + BuildStep = Step.FromClause; BuildFromClause (sb); + BuildStep = Step.WhereClause; BuildWhereClause (sb); + BuildStep = Step.GroupByClause; BuildGroupByClause(sb); + BuildStep = Step.HavingClause; BuildHavingClause (sb); + BuildStep = Step.OrderByClause; BuildOrderByClause(sb); + BuildStep = Step.OffsetLimit; BuildOffsetLimit (sb); } protected virtual void BuildInsertQuery(StringBuilder sb) { - _buildStep = Step.InsertClause; BuildInsertClause(sb); + if (SqlQuery.Insert.WithOutput) + BuildSetOutput(sb); + + BuildStep = Step.InsertClause; BuildInsertClause(sb); - if (_sqlQuery.QueryType == QueryType.Insert && _sqlQuery.From.Tables.Count != 0) + if (SqlQuery.QueryType == QueryType.Insert && SqlQuery.From.Tables.Count != 0) { - _buildStep = Step.SelectClause; BuildSelectClause (sb); - _buildStep = Step.FromClause; BuildFromClause (sb); - _buildStep = Step.WhereClause; BuildWhereClause (sb); - _buildStep = Step.GroupByClause; BuildGroupByClause(sb); - _buildStep = Step.HavingClause; BuildHavingClause (sb); - _buildStep = Step.OrderByClause; BuildOrderByClause(sb); - _buildStep = Step.OffsetLimit; BuildOffsetLimit (sb); + BuildStep = Step.SelectClause; BuildSelectClause (sb); + BuildStep = Step.FromClause; BuildFromClause (sb); + BuildStep = Step.WhereClause; BuildWhereClause (sb); + BuildStep = Step.GroupByClause; BuildGroupByClause(sb); + BuildStep = Step.HavingClause; BuildHavingClause (sb); + BuildStep = Step.OrderByClause; BuildOrderByClause(sb); + BuildStep = Step.OffsetLimit; BuildOffsetLimit (sb); } if (SqlQuery.Insert.WithIdentity) BuildGetIdentity(sb); + + if (SqlQuery.Insert.WithOutput) + BuildGetOutput(sb); } protected virtual void BuildUnknownQuery(StringBuilder sb) { - throw new SqlException("Unknown query type '{0}'.", _sqlQuery.QueryType); + throw new SqlException("Unknown query type '{0}'.", SqlQuery.QueryType); } public virtual StringBuilder BuildTableName(StringBuilder sb, string database, string owner, string table) @@ -252,12 +248,12 @@ protected virtual void BuildSelectClause(StringBuilder sb) protected virtual IEnumerable GetSelectedColumns() { - return _sqlQuery.Select.Columns; + return SqlQuery.Select.Columns; } protected virtual void BuildColumns(StringBuilder sb) { - _indent++; + Indent++; var first = true; @@ -270,7 +266,7 @@ protected virtual void BuildColumns(StringBuilder sb) var addAlias = true; AppendIndent(sb); - BuildColumn(sb, col, ref addAlias); + BuildColumnExpression(sb, col.Expression, col.Alias, ref addAlias); if (!_skipAlias && addAlias && col.Alias != null) sb.Append(" as ").Append(Convert(col.Alias, ConvertType.NameToQueryFieldAlias)); @@ -279,14 +275,19 @@ protected virtual void BuildColumns(StringBuilder sb) if (first) AppendIndent(sb).Append("*"); - _indent--; + Indent--; sb.AppendLine(); } - protected virtual void BuildColumn(StringBuilder sb, SqlQuery.Column col, ref bool addAlias) +// protected virtual void BuildColumn(StringBuilder sb, SqlQuery.Column col, ref bool addAlias) +// { +// BuildExpression(sb, col.Expression, true, true, col.Alias, ref addAlias); +// } + + protected virtual void BuildColumnExpression(StringBuilder sb, ISqlExpression expr, string alias, ref bool addAlias) { - BuildExpression(sb, col.Expression, true, true, col.Alias, ref addAlias); + BuildExpression(sb, expr, true, true, alias, ref addAlias); } #endregion @@ -331,11 +332,11 @@ protected virtual void BuildUpdateSet(StringBuilder sb) AppendIndent(sb) .AppendLine("SET"); - _indent++; + Indent++; var first = true; - foreach (var expr in _sqlQuery.Update.Items) + foreach (var expr in SqlQuery.Update.Items) { if (!first) sb.Append(',').AppendLine(); @@ -344,10 +345,13 @@ protected virtual void BuildUpdateSet(StringBuilder sb) AppendIndent(sb); BuildExpression(sb, expr.Column, false, true); sb.Append(" = "); - BuildExpression(sb, expr.Expression); + + var addAlias = false; + + BuildColumnExpression(sb, expr.Expression, null, ref addAlias); } - _indent--; + Indent--; sb.AppendLine(); } @@ -373,7 +377,7 @@ protected virtual void BuildInsertClause(StringBuilder sb, string insertText, bo if (appendTableName) BuildPhysicalTable(sb, SqlQuery.Insert.Into, null); - if (_sqlQuery.Insert.Items.Count == 0) + if (SqlQuery.Insert.Items.Count == 0) { sb.Append(' '); BuildEmptyInsert(sb); @@ -384,11 +388,11 @@ protected virtual void BuildInsertClause(StringBuilder sb, string insertText, bo AppendIndent(sb).AppendLine("("); - _indent++; + Indent++; var first = true; - foreach (var expr in _sqlQuery.Insert.Items) + foreach (var expr in SqlQuery.Insert.Items) { if (!first) sb.Append(',').AppendLine(); @@ -398,21 +402,28 @@ protected virtual void BuildInsertClause(StringBuilder sb, string insertText, bo BuildExpression(sb, expr.Column, false, true); } - _indent--; + Indent--; sb.AppendLine(); AppendIndent(sb).AppendLine(")"); - - if (_sqlQuery.QueryType == QueryType.InsertOrUpdate || _sqlQuery.From.Tables.Count == 0) + + if ( SqlQuery.Insert.WithOutput ) + { + var pkField = SqlQuery.Insert.Into.Fields.FirstOrDefault(x=>x.Value.IsIdentity && x.Value.IsPrimaryKey); + + AppendIndent( sb ).Append( "output inserted.[" ).Append( pkField.Value.Name ).AppendLine( "] into @tabTempInsert" ); + } + + if (SqlQuery.QueryType == QueryType.InsertOrUpdate || SqlQuery.From.Tables.Count == 0) { AppendIndent(sb).AppendLine("VALUES"); AppendIndent(sb).AppendLine("("); - _indent++; + Indent++; first = true; - foreach (var expr in _sqlQuery.Insert.Items) + foreach (var expr in SqlQuery.Insert.Items) { if (!first) sb.Append(',').AppendLine(); @@ -422,7 +433,7 @@ protected virtual void BuildInsertClause(StringBuilder sb, string insertText, bo BuildExpression(sb, expr.Expression); } - _indent--; + Indent--; sb.AppendLine(); AppendIndent(sb).AppendLine(")"); @@ -434,6 +445,16 @@ protected virtual void BuildGetIdentity(StringBuilder sb) { //throw new SqlException("Insert with identity is not supported by the '{0}' sql provider.", Name); } + + protected virtual void BuildSetOutput(StringBuilder sb) + { + //throw new SqlException("Insert with identity is not supported by the '{0}' sql provider.", Name); + } + + protected virtual void BuildGetOutput(StringBuilder sb) + { + //throw new SqlException("Insert with identity is not supported by the '{0}' sql provider.", Name); + } #endregion @@ -571,19 +592,19 @@ protected void BuildInsertOrUpdateQueryAsUpdateInsert(StringBuilder sb) protected virtual void BuildFromClause(StringBuilder sb) { - if (_sqlQuery.From.Tables.Count == 0) + if (SqlQuery.From.Tables.Count == 0) return; AppendIndent(sb); sb.Append("FROM").AppendLine(); - _indent++; + Indent++; AppendIndent(sb); var first = true; - foreach (var ts in _sqlQuery.From.Tables) + foreach (var ts in SqlQuery.From.Tables) { if (!first) { @@ -608,7 +629,7 @@ protected virtual void BuildFromClause(StringBuilder sb) BuildJoinTable(sb, jt, ref jn); } - _indent--; + Indent--; sb.AppendLine(); } @@ -624,7 +645,7 @@ protected void BuildPhysicalTable(StringBuilder sb, ISqlTableSource table, strin case QueryElementType.SqlQuery : sb.Append("(").AppendLine(); - _nextNesting = BuildSqlBuilder((SqlQuery)table, sb, _indent + 1, _nextNesting, false); + _nextNesting = BuildSqlBuilder((SqlQuery)table, sb, Indent + 1, _nextNesting, false); AppendIndent(sb).Append(")"); break; @@ -662,7 +683,7 @@ protected void BuildTableName(StringBuilder sb, SqlQuery.TableSource ts, bool bu void BuildJoinTable(StringBuilder sb, SqlQuery.JoinedTable join, ref int joinCounter) { sb.AppendLine(); - _indent++; + Indent++; AppendIndent(sb); var buildOn = BuildJoinType(sb, join); @@ -708,7 +729,7 @@ void BuildJoinTable(StringBuilder sb, SqlQuery.JoinedTable join, ref int joinCou foreach (var jt in join.Table.Joins) BuildJoinTable(sb, jt, ref joinCounter); - _indent--; + Indent--; } protected virtual bool BuildJoinType(StringBuilder sb, SqlQuery.JoinedTable join) @@ -729,7 +750,7 @@ protected virtual bool BuildJoinType(StringBuilder sb, SqlQuery.JoinedTable join protected virtual bool BuildWhere() { - return _sqlQuery.Where.SearchCondition.Conditions.Count != 0; + return SqlQuery.Where.SearchCondition.Conditions.Count != 0; } protected virtual void BuildWhereClause(StringBuilder sb) @@ -741,10 +762,10 @@ protected virtual void BuildWhereClause(StringBuilder sb) sb.Append("WHERE").AppendLine(); - _indent++; + Indent++; AppendIndent(sb); - BuildWhereSearchCondition(sb, _sqlQuery.Where.SearchCondition); - _indent--; + BuildWhereSearchCondition(sb, SqlQuery.Where.SearchCondition); + Indent--; sb.AppendLine(); } @@ -755,28 +776,28 @@ protected virtual void BuildWhereClause(StringBuilder sb) protected virtual void BuildGroupByClause(StringBuilder sb) { - if (_sqlQuery.GroupBy.Items.Count == 0) + if (SqlQuery.GroupBy.Items.Count == 0) return; AppendIndent(sb); sb.Append("GROUP BY").AppendLine(); - _indent++; + Indent++; - for (var i = 0; i < _sqlQuery.GroupBy.Items.Count; i++) + for (var i = 0; i < SqlQuery.GroupBy.Items.Count; i++) { AppendIndent(sb); - BuildExpression(sb, _sqlQuery.GroupBy.Items[i]); + BuildExpression(sb, SqlQuery.GroupBy.Items[i]); - if (i + 1 < _sqlQuery.GroupBy.Items.Count) + if (i + 1 < SqlQuery.GroupBy.Items.Count) sb.Append(','); sb.AppendLine(); } - _indent--; + Indent--; } #endregion @@ -785,17 +806,17 @@ protected virtual void BuildGroupByClause(StringBuilder sb) protected virtual void BuildHavingClause(StringBuilder sb) { - if (_sqlQuery.Having.SearchCondition.Conditions.Count == 0) + if (SqlQuery.Having.SearchCondition.Conditions.Count == 0) return; AppendIndent(sb); sb.Append("HAVING").AppendLine(); - _indent++; + Indent++; AppendIndent(sb); - BuildWhereSearchCondition(sb, _sqlQuery.Having.SearchCondition); - _indent--; + BuildWhereSearchCondition(sb, SqlQuery.Having.SearchCondition); + Indent--; sb.AppendLine(); } @@ -806,33 +827,33 @@ protected virtual void BuildHavingClause(StringBuilder sb) protected virtual void BuildOrderByClause(StringBuilder sb) { - if (_sqlQuery.OrderBy.Items.Count == 0) + if (SqlQuery.OrderBy.Items.Count == 0) return; AppendIndent(sb); sb.Append("ORDER BY").AppendLine(); - _indent++; + Indent++; - for (var i = 0; i < _sqlQuery.OrderBy.Items.Count; i++) + for (var i = 0; i < SqlQuery.OrderBy.Items.Count; i++) { AppendIndent(sb); - var item = _sqlQuery.OrderBy.Items[i]; + var item = SqlQuery.OrderBy.Items[i]; BuildExpression(sb, item.Expression); if (item.IsDescending) sb.Append(" DESC"); - if (i + 1 < _sqlQuery.OrderBy.Items.Count) + if (i + 1 < SqlQuery.OrderBy.Items.Count) sb.Append(','); sb.AppendLine(); } - _indent--; + Indent--; } #endregion @@ -916,7 +937,7 @@ protected virtual void BuildSearchCondition(StringBuilder sb, SqlQuery.SearchCon { sb.Append(isOr.Value ? " OR" : " AND"); - if (condition.Conditions.Count < 4 && sb.Length - len < 50 || condition != _sqlQuery.Where.SearchCondition) + if (condition.Conditions.Count < 4 && sb.Length - len < 50 || condition != SqlQuery.Where.SearchCondition) { sb.Append(' '); } @@ -967,9 +988,9 @@ protected virtual void BuildPredicate(StringBuilder sb, ISqlPredicate predicate) { ISqlExpression e = null; - if (expr.Expr1 is SqlValue && ((SqlValue)expr.Expr1).Value == null) + if (expr.Expr1 is SqlValueBase && ((SqlValueBase)expr.Expr1).Value == null) e = expr.Expr2; - else if (expr.Expr2 is SqlValue && ((SqlValue)expr.Expr2).Value == null) + else if (expr.Expr2 is SqlValueBase && ((SqlValueBase)expr.Expr2).Value == null) e = expr.Expr1; if (e != null) @@ -1127,13 +1148,13 @@ void BuildInListPredicate(ISqlPredicate predicate, StringBuilder sb) if (pr.Value is IEnumerable) { - var items = (IEnumerable)pr.Value; - var firstValue = true; + var items = (IEnumerable)pr.Value; if (p.Expr1 is ISqlTableSource) { - var table = (ISqlTableSource)p.Expr1; - var keys = table.GetKeys(true); + var firstValue = true; + var table = (ISqlTableSource)p.Expr1; + var keys = table.GetKeys(true); if (keys == null || keys.Count == 0) throw new SqlException("Cannot create IN expression."); @@ -1201,55 +1222,103 @@ void BuildInListPredicate(ISqlPredicate predicate, StringBuilder sb) AppendIndent(sb); sb.Append(' '); len = sb.Length; - rem = 5 + _indent; + rem = 5 + Indent; } } if (!firstValue) sb.Remove(sb.Length - rem, rem); } + + if (firstValue) + BuildPredicate(sb, new SqlQuery.Predicate.Expr(new SqlValue(p.IsNot))); + else + sb.Remove(sb.Length - 2, 2).Append(')'); } else - foreach (var item in items) - { - if (firstValue) - { - firstValue = false; - BuildExpression(sb, GetPrecedence(p), p.Expr1); - sb.Append(p.IsNot ? " NOT IN (" : " IN ("); - } + { + BuildInListValues(sb, p, items); + } - if (item is ISqlExpression) - BuildExpression(sb, (ISqlExpression)item); - else - BuildValue(sb, item); + return; + } + } - sb.Append(", "); - } + BuildInListValues(sb, p, values); + } + } - if (firstValue) - BuildPredicate(sb, new SqlQuery.Predicate.Expr(new SqlValue(p.IsNot))); - else - sb.Remove(sb.Length - 2, 2).Append(')'); + void BuildInListValues(StringBuilder sb, SqlQuery.Predicate.InList predicate, IEnumerable values) + { + var firstValue = true; + var len = sb.Length; + var hasNull = false; + var count = 0; + var longList = false; - return; - } + foreach (var value in values) + { + if (count++ >= MaxInListValuesCount) + { + count = 1; + longList = true; + + // start building next bucked + firstValue = true; + sb.Remove(sb.Length - 2, 2).Append(')'); + sb.Append(" OR "); } - BuildExpression(sb, GetPrecedence(p), p.Expr1); - sb.Append(p.IsNot ? " NOT IN (" : " IN ("); + var val = value; - foreach (var value in values) + if (val is IValueContainer) + val = ((IValueContainer)value).Value; + + if (val == null) { - if (value is ISqlExpression) - BuildExpression(sb, (ISqlExpression)value); - else - BuildValue(sb, value); + hasNull = true; + continue; + } - sb.Append(", "); + if (firstValue) + { + firstValue = false; + BuildExpression(sb, GetPrecedence(predicate), predicate.Expr1); + sb.Append(predicate.IsNot ? " NOT IN (" : " IN ("); } + if (value is ISqlExpression) + BuildExpression(sb, (ISqlExpression)value); + else + BuildValue(sb, value); + + sb.Append(", "); + } + + if (firstValue) + { + BuildPredicate(sb, + hasNull ? + new SqlQuery.Predicate.IsNull(predicate.Expr1, predicate.IsNot) : + new SqlQuery.Predicate.Expr(new SqlValue(predicate.IsNot))); + } + else + { sb.Remove(sb.Length - 2, 2).Append(')'); + + if (hasNull) + { + sb.Insert(len, "("); + sb.Append(" OR "); + BuildPredicate(sb, new SqlQuery.Predicate.IsNull(predicate.Expr1, predicate.IsNot)); + sb.Append(")"); + } + } + + if (longList && !hasNull) + { + sb.Insert(len, "("); + sb.Append(")"); } } @@ -1310,15 +1379,15 @@ protected virtual StringBuilder BuildExpression( { if (buildTableName) { - var ts = _sqlQuery.GetTableSource(field.Table); + var ts = SqlQuery.GetTableSource(field.Table); if (ts == null) { #if DEBUG - _sqlQuery.GetTableSource(field.Table); + SqlQuery.GetTableSource(field.Table); #endif - throw new SqlException(string.Format("Table {0} not found.", field.Table)); + throw new SqlException(string.Format("Table '{0}' not found.", field.Table)); } var table = GetTableAlias(ts); @@ -1353,15 +1422,15 @@ protected virtual StringBuilder BuildExpression( // column.ToString(); //} - var sql = _sqlQuery.SqlText; + var sql = SqlQuery.SqlText; #endif - var table = _sqlQuery.GetTableSource(column.Parent); + var table = SqlQuery.GetTableSource(column.Parent); if (table == null) { #if DEBUG - table = _sqlQuery.GetTableSource(column.Parent); + table = SqlQuery.GetTableSource(column.Parent); #endif throw new SqlException(string.Format("Table not found for '{0}'.", column)); @@ -1390,7 +1459,7 @@ protected virtual StringBuilder BuildExpression( sb.Append("("); sb.AppendLine(); - _nextNesting = BuildSqlBuilder((SqlQuery)expr, sb, _indent + 1, _nextNesting, _buildStep != Step.FromClause); + _nextNesting = BuildSqlBuilder((SqlQuery)expr, sb, Indent + 1, _nextNesting, BuildStep != Step.FromClause); AppendIndent(sb); @@ -1442,13 +1511,13 @@ protected virtual StringBuilder BuildExpression( { var parm = (SqlParameter)expr; - if (parm.IsQueryParameter) - { - var name = Convert(parm.Name, ConvertType.NameToQueryParameter); - sb.Append(name); - } - else - BuildValue(sb, parm.Value); + if (!UseQueryText && parm.IsQueryParameter) + { + var name = Convert(parm.Name, ConvertType.NameToQueryParameter); + sb.Append(name); + } + else + BuildValue(sb, parm.Value, parm); } break; @@ -1468,7 +1537,7 @@ protected virtual StringBuilder BuildExpression( return sb; } - protected void BuildExpression(StringBuilder sb, int parentPrecedence, ISqlExpression expr, string alias, ref bool addAlias) + private void BuildExpression(StringBuilder sb, int parentPrecedence, ISqlExpression expr, string alias, ref bool addAlias) { var wrap = Wrap(GetPrecedence(expr), parentPrecedence); @@ -1543,17 +1612,30 @@ public object GetValue(object value) PositiveSign = NumberFormatInfo.InvariantInfo.PositiveSign, }; - public virtual void BuildValue(StringBuilder sb, object value) - { - if (value == null) sb.Append("NULL"); - else if (value is string) BuildString(sb, value.ToString()); - else if (value is char || value is char?) sb.Append('\'').Append(value.ToString().Replace("'", "''")).Append('\''); - else if (value is bool || value is bool?) sb.Append((bool)value ? "1" : "0"); - else if (value is DateTime) BuildDateTime(sb, value); - else if (value is Guid) sb.Append('\'').Append(value).Append('\''); - else if (value is decimal) sb.Append(((decimal)value).ToString(NumberFormatInfo)); - else if (value is double) sb.Append(((double) value).ToString(NumberFormatInfo)); - else if (value is float) sb.Append(((float) value).ToString(NumberFormatInfo)); + public virtual void BuildValue(StringBuilder sb, object value, SqlParameter sqlParameter = null) + { + if (value == null) sb.Append("NULL"); + else if (value is string) BuildString(sb, value.ToString()); + else if (value is char) BuildChar (sb, (char)value); + else if (value is bool) sb.Append((bool)value ? "1" : "0"); + else if (value is DateTime) + { + var dt = (DateTime) value; + if (sqlParameter != null && sqlParameter.DbType == DbType.Date) + { + dt = new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0, dt.Kind); + } + if (dt.TimeOfDay.TotalSeconds == 0) + { + BuildDate(sb, dt); + } + else + BuildDateTime(sb, dt); + } + else if (value is Guid) sb.Append('\'').Append(value).Append('\''); + else if (value is decimal) sb.Append(((decimal)value).ToString(NumberFormatInfo)); + else if (value is double) sb.Append(((double) value).ToString(NumberFormatInfo)); + else if (value is float) sb.Append(((float) value).ToString(NumberFormatInfo)); else { var type = value.GetType(); @@ -1595,31 +1677,29 @@ public virtual void BuildValue(StringBuilder sb, object value) protected virtual void BuildString(StringBuilder sb, string value) { - for (var i = 0; i < value.Length; i++) - { - if (value[i] > 127) - { - BuildUnicodeString(sb, value); - return; - } - } - sb .Append('\'') .Append(value.Replace("'", "''")) .Append('\''); } - protected virtual void BuildUnicodeString(StringBuilder sb, string value) + protected virtual void BuildChar(StringBuilder sb, char value) { - sb - .Append('\'') - .Append(value.Replace("'", "''")) - .Append("\'"); + sb.Append('\''); + + if (value == '\'') sb.Append("''"); + else sb.Append(value); + + sb.Append('\''); } - protected virtual void BuildDateTime(StringBuilder sb, object value) - { + protected virtual void BuildDate(StringBuilder sb, object value) + { + sb.Append(string.Format("'{0:yyyy-MM-dd}'", value)); + } + + protected virtual void BuildDateTime(StringBuilder sb, object value) + { sb.Append(string.Format("'{0:yyyy-MM-dd HH:mm:ss.fff}'", value)); } @@ -1671,7 +1751,7 @@ protected virtual void BuildFunction(StringBuilder sb, SqlFunction func) { sb.Append(func.Name).AppendLine(); - _indent++; + Indent++; var i = 0; @@ -1708,7 +1788,7 @@ protected virtual void BuildFunction(StringBuilder sb, SqlFunction func) sb.AppendLine(); } - _indent--; + Indent--; AppendIndent(sb).Append("END"); } @@ -1790,7 +1870,7 @@ public enum Step protected virtual void BuildAliases(StringBuilder sb, string table, List columns, string postfix) { - _indent++; + Indent++; var first = true; @@ -1806,7 +1886,7 @@ protected virtual void BuildAliases(StringBuilder sb, string table, List buil AppendIndent(sb).Append("SELECT *").AppendLine(); AppendIndent(sb).Append("FROM") .AppendLine(); AppendIndent(sb).Append("(") .AppendLine(); - _indent++; + Indent++; AppendIndent(sb).Append("SELECT TOP "); BuildExpression(sb, SqlQuery.Select.TakeValue); sb.Append(" *").AppendLine(); AppendIndent(sb).Append("FROM").AppendLine(); AppendIndent(sb).Append("(") .AppendLine(); - _indent++; + Indent++; if (SqlQuery.OrderBy.IsEmpty) { @@ -1930,20 +2010,20 @@ protected void AlternativeBuildSql2(StringBuilder sb, Action buil sb.Append(" *").AppendLine(); AppendIndent(sb).Append("FROM").AppendLine(); AppendIndent(sb).Append("(") .AppendLine(); - _indent++; + Indent++; } buildSql(sb); if (SqlQuery.OrderBy.IsEmpty) { - _indent--; + Indent--; AppendIndent(sb).AppendFormat(") {0}", aliases[2]).AppendLine(); AppendIndent(sb).Append("ORDER BY").AppendLine(); BuildAliases(sb, aliases[2], SqlQuery.Select.Columns, null); } - _indent--; + Indent--; AppendIndent(sb).AppendFormat(") {0}", aliases[1]).AppendLine(); if (SqlQuery.OrderBy.IsEmpty) @@ -1956,7 +2036,7 @@ protected void AlternativeBuildSql2(StringBuilder sb, Action buil BuildAlternativeOrderBy(sb, false); } - _indent--; + Indent--; AppendIndent(sb).AppendFormat(") {0}", aliases[0]).AppendLine(); if (SqlQuery.OrderBy.IsEmpty) @@ -1976,7 +2056,7 @@ protected void BuildAlternativeOrderBy(StringBuilder sb, bool ascending) var obys = GetTempAliases(SqlQuery.OrderBy.Items.Count, "oby"); - _indent++; + Indent++; for (var i = 0; i < obys.Length; i++) { @@ -1992,7 +2072,7 @@ protected void BuildAlternativeOrderBy(StringBuilder sb, bool ascending) sb.AppendLine(); } - _indent--; + Indent--; } protected delegate IEnumerable ColumnSelector(); @@ -2061,7 +2141,7 @@ protected SqlQuery GetAlternativeDelete(SqlQuery sqlQuery) (sqlQuery.From.Tables.Count > 1 || sqlQuery.From.Tables[0].Joins.Count > 0) && sqlQuery.From.Tables[0].Source is SqlTable) { - var sql = new SqlQuery { QueryType = QueryType.Delete }; + var sql = new SqlQuery { QueryType = QueryType.Delete, IsParameterDependent = sqlQuery.IsParameterDependent }; sqlQuery.ParentSql = sql; sqlQuery.QueryType = QueryType.Select; @@ -2072,9 +2152,27 @@ protected SqlQuery GetAlternativeDelete(SqlQuery sqlQuery) var tableKeys = table.GetKeys(true); var copyKeys = copy. GetKeys(true); - for (var i = 0; i < tableKeys.Count; i++) - sqlQuery.Where - .Expr(copyKeys[i]).Equal.Expr(tableKeys[i]); + if (sqlQuery.Where.SearchCondition.Conditions.Any(c => c.IsOr)) + { + var sc1 = new SqlQuery.SearchCondition(sqlQuery.Where.SearchCondition.Conditions); + var sc2 = new SqlQuery.SearchCondition(); + + for (var i = 0; i < tableKeys.Count; i++) + { + sc2.Conditions.Add(new SqlQuery.Condition( + false, + new SqlQuery.Predicate.ExprExpr(copyKeys[i], SqlQuery.Predicate.Operator.Equal, tableKeys[i]))); + } + + sqlQuery.Where.SearchCondition.Conditions.Clear(); + sqlQuery.Where.SearchCondition.Conditions.Add(new SqlQuery.Condition(false, sc1)); + sqlQuery.Where.SearchCondition.Conditions.Add(new SqlQuery.Condition(false, sc2)); + } + else + { + for (var i = 0; i < tableKeys.Count; i++) + sqlQuery.Where.Expr(copyKeys[i]).Equal.Expr(tableKeys[i]); + } sql.From.Table(copy).Where.Exists(sqlQuery); sql.Parameters.AddRange(sqlQuery.Parameters); @@ -2089,17 +2187,23 @@ protected SqlQuery GetAlternativeDelete(SqlQuery sqlQuery) protected SqlQuery GetAlternativeUpdate(SqlQuery sqlQuery) { - if (sqlQuery.IsUpdate && sqlQuery.From.Tables[0].Source is SqlTable) + if (sqlQuery.IsUpdate && (sqlQuery.From.Tables[0].Source is SqlTable || sqlQuery.Update.Table != null)) { if (sqlQuery.From.Tables.Count > 1 || sqlQuery.From.Tables[0].Joins.Count > 0) { - var sql = new SqlQuery { QueryType = QueryType.Update }; + var sql = new SqlQuery { QueryType = QueryType.Update, IsParameterDependent = sqlQuery.IsParameterDependent }; sqlQuery.ParentSql = sql; sqlQuery.QueryType = QueryType.Select; - var table = (SqlTable)sqlQuery.From.Tables[0].Source; - var copy = new SqlTable(table); + var table = sqlQuery.Update.Table ?? (SqlTable)sqlQuery.From.Tables[0].Source; + + if (sqlQuery.Update.Table != null) + if (new QueryVisitor().Find(sqlQuery.From, t => t == table) == null) + table = (SqlTable)new QueryVisitor().Find(sqlQuery.From, + ex => ex is SqlTable && ((SqlTable)ex).ObjectType == table.ObjectType) ?? table; + + var copy = new SqlTable(table); var tableKeys = table.GetKeys(true); var copyKeys = copy. GetKeys(true); @@ -2117,16 +2221,17 @@ protected SqlQuery GetAlternativeUpdate(SqlQuery sqlQuery) foreach (var item in sqlQuery.Update.Items) { - ((ISqlExpressionWalkable)item).Walk(false, expr => + var ex = new QueryVisitor().Convert(item, expr => { var fld = expr as SqlField; return fld != null && map.TryGetValue(fld, out fld) ? fld : expr; }); - sql.Update.Items.Add(item); + sql.Update.Items.Add(ex); } sql.Parameters.AddRange(sqlQuery.Parameters); + sql.Update.Table = sqlQuery.Update.Table; sqlQuery.Parameters.Clear(); sqlQuery.Update.Items.Clear(); @@ -2140,6 +2245,38 @@ protected SqlQuery GetAlternativeUpdate(SqlQuery sqlQuery) return sqlQuery; } + static bool IsBooleanParameter(ISqlExpression expr, int count, int i) + { + if ((i % 2 == 1 || i == count - 1) && expr.SystemType == typeof(bool) || expr.SystemType == typeof(bool?)) + { + switch (expr.ElementType) + { + case QueryElementType.SearchCondition : return true; + } + } + + return false; + } + + protected SqlFunction ConvertFunctionParameters(SqlFunction func) + { + if (func.Name == "CASE" && + func.Parameters.Select((p,i) => new { p, i }).Any(p => IsBooleanParameter(p.p, func.Parameters.Length, p.i))) + { + return new SqlFunction( + func.SystemType, + func.Name, + func.Precedence, + func.Parameters.Select((p,i) => + IsBooleanParameter(p, func.Parameters.Length, i) ? + ConvertExpression(new SqlFunction(typeof(bool), "CASE", p, new SqlValue(true), new SqlValue(false))) : + p + ).ToArray()); + } + + return func; + } + #endregion #region Helpers @@ -2340,8 +2477,8 @@ string GetTablePhysicalName(ISqlTableSource table, string alias) protected StringBuilder AppendIndent(StringBuilder sb) { - if (_indent > 0) - sb.Append('\t', _indent); + if (Indent > 0) + sb.Append('\t', Indent); return sb; } diff --git a/Source/Data/Sql/SqlProvider/DB2SqlProvider.cs b/Source/Data/Sql/SqlProvider/DB2SqlProvider.cs index fa371498d..d5566d9e6 100644 --- a/Source/Data/Sql/SqlProvider/DB2SqlProvider.cs +++ b/Source/Data/Sql/SqlProvider/DB2SqlProvider.cs @@ -181,6 +181,12 @@ public override ISqlExpression ConvertExpression(ISqlExpression expr) return expr; } + protected override void BuildFunction(StringBuilder sb, SqlFunction func) + { + func = ConvertFunctionParameters(func); + base.BuildFunction(sb, func); + } + static void SetQueryParameter(IQueryElement element) { if (element.ElementType == QueryElementType.SqlParameter) @@ -212,7 +218,7 @@ protected override void BuildFromClause(StringBuilder sb) base.BuildFromClause(sb); } - public override void BuildValue(StringBuilder sb, object value) + public override void BuildValue(StringBuilder sb, object value, SqlParameter sqlParameter = null) { if (value is Guid) { @@ -235,23 +241,23 @@ public override void BuildValue(StringBuilder sb, object value) base.BuildValue(sb, value); } - protected override void BuildColumn(StringBuilder sb, SqlQuery.Column col, ref bool addAlias) + protected override void BuildColumnExpression(StringBuilder sb, ISqlExpression expr, string alias, ref bool addAlias) { var wrap = false; - if (col.SystemType == typeof(bool)) + if (expr.SystemType == typeof(bool)) { - if (col.Expression is SqlQuery.SearchCondition) + if (expr is SqlQuery.SearchCondition) wrap = true; else { - var ex = col.Expression as SqlExpression; + var ex = expr as SqlExpression; wrap = ex != null && ex.Expr == "{0}" && ex.Parameters.Length == 1 && ex.Parameters[0] is SqlQuery.SearchCondition; } } if (wrap) sb.Append("CASE WHEN "); - base.BuildColumn(sb, col, ref addAlias); + base.BuildColumnExpression(sb, expr, alias, ref addAlias); if (wrap) sb.Append(" THEN 1 ELSE 0 END"); } diff --git a/Source/Data/Sql/SqlProvider/FirebirdSqlProvider.cs b/Source/Data/Sql/SqlProvider/FirebirdSqlProvider.cs index 13f19b4f8..4e0e4c886 100644 --- a/Source/Data/Sql/SqlProvider/FirebirdSqlProvider.cs +++ b/Source/Data/Sql/SqlProvider/FirebirdSqlProvider.cs @@ -1,8 +1,6 @@ using System; using System.Data; using System.Text; -using BLToolkit.Mapping; -using BLToolkit.Reflection; #region ReSharper disable // ReSharper disable SuggestUseVarKeywordEverywhere @@ -12,6 +10,8 @@ namespace BLToolkit.Data.Sql.SqlProvider { using DataProvider; + using Mapping; + using Reflection; using Linq; @@ -146,6 +146,12 @@ public override ISqlExpression ConvertExpression(ISqlExpression expr) return expr; } + protected override void BuildFunction(StringBuilder sb, SqlFunction func) + { + func = ConvertFunctionParameters(func); + base.BuildFunction(sb, func); + } + protected override void BuildDataType(StringBuilder sb, SqlDataType type) { switch (type.SqlDbType) @@ -216,23 +222,23 @@ protected override void BuildFromClause(StringBuilder sb) base.BuildFromClause(sb); } - protected override void BuildColumn(StringBuilder sb, SqlQuery.Column col, ref bool addAlias) + protected override void BuildColumnExpression(StringBuilder sb, ISqlExpression expr, string alias, ref bool addAlias) { var wrap = false; - if (col.SystemType == typeof(bool)) + if (expr.SystemType == typeof(bool)) { - if (col.Expression is SqlQuery.SearchCondition) + if (expr is SqlQuery.SearchCondition) wrap = true; else { - var ex = col.Expression as SqlExpression; + var ex = expr as SqlExpression; wrap = ex != null && ex.Expr == "{0}" && ex.Parameters.Length == 1 && ex.Parameters[0] is SqlQuery.SearchCondition; } } if (wrap) sb.Append("CASE WHEN "); - base.BuildColumn(sb, col, ref addAlias); + base.BuildColumnExpression(sb, expr, alias, ref addAlias); if (wrap) sb.Append(" THEN 1 ELSE 0 END"); } diff --git a/Source/Data/Sql/SqlProvider/ISqlProvider.cs b/Source/Data/Sql/SqlProvider/ISqlProvider.cs index d5b2ccea5..23395a3c1 100644 --- a/Source/Data/Sql/SqlProvider/ISqlProvider.cs +++ b/Source/Data/Sql/SqlProvider/ISqlProvider.cs @@ -22,6 +22,7 @@ public interface ISqlProvider string Name { get; } SqlQuery SqlQuery { get; set; } + bool UseQueryText { get; set; } bool SkipAcceptsParameter { get; } bool TakeAcceptsParameter { get; } diff --git a/Source/Data/Sql/SqlProvider/InformixSqlProvider.cs b/Source/Data/Sql/SqlProvider/InformixSqlProvider.cs index 04e9a3173..b919384b3 100644 --- a/Source/Data/Sql/SqlProvider/InformixSqlProvider.cs +++ b/Source/Data/Sql/SqlProvider/InformixSqlProvider.cs @@ -1,11 +1,11 @@ using System; using System.Data; using System.Text; -using BLToolkit.Reflection; namespace BLToolkit.Data.Sql.SqlProvider { using DataProvider; + using Reflection; public class InformixSqlProvider : BasicSqlProvider { @@ -173,12 +173,18 @@ public override ISqlExpression ConvertExpression(ISqlExpression expr) return expr; } + protected override void BuildFunction(StringBuilder sb, SqlFunction func) + { + func = ConvertFunctionParameters(func); + base.BuildFunction(sb, func); + } + public virtual object ConvertBooleanValue(bool value) { return value ? 't' : 'f'; } - public override void BuildValue(StringBuilder sb, object value) + public override void BuildValue(StringBuilder sb, object value, SqlParameter sqlParameter = null) { if (value is bool || value is bool?) sb.Append("'").Append(ConvertBooleanValue((bool)value)).Append("'"); diff --git a/Source/Data/Sql/SqlProvider/MSSqlSqlProvider.cs b/Source/Data/Sql/SqlProvider/MSSqlSqlProvider.cs index 6753ea66c..e3856c3af 100644 --- a/Source/Data/Sql/SqlProvider/MSSqlSqlProvider.cs +++ b/Source/Data/Sql/SqlProvider/MSSqlSqlProvider.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Text; -using System.Linq; namespace BLToolkit.Data.Sql.SqlProvider { @@ -12,6 +11,8 @@ public abstract class MsSqlSqlProvider : BasicSqlProvider { public override bool IsApplyJoinSupported { get { return true; } } + protected virtual bool BuildAlternativeSql { get { return true; } } + protected override string FirstFormat { get { return SqlQuery.Select.SkipValue == null ? "TOP ({0})" : null; } @@ -19,7 +20,10 @@ protected override string FirstFormat protected override void BuildSql(StringBuilder sb) { - AlternativeBuildSql(sb, true, base.BuildSql); + if (BuildAlternativeSql) + AlternativeBuildSql(sb, true, base.BuildSql); + else + base.BuildSql(sb); } protected override void BuildGetIdentity(StringBuilder sb) @@ -28,16 +32,31 @@ protected override void BuildGetIdentity(StringBuilder sb) .AppendLine() .AppendLine("SELECT SCOPE_IDENTITY()"); } + + protected override void BuildSetOutput( StringBuilder sb ) + { + // TODO: set the right data type + sb + .AppendLine() + .Append( "declare @tabTempInsert table(TempID " ).Append( "uniqueidentifier" ).AppendLine( ")" ); + } + + protected override void BuildGetOutput( StringBuilder sb ) + { + sb + .AppendLine() + .AppendLine( "select top 1 TempID from @tabTempInsert" ); + } protected override void BuildOrderByClause(StringBuilder sb) { - if (!NeedSkip) + if (!BuildAlternativeSql || !NeedSkip) base.BuildOrderByClause(sb); } protected override IEnumerable GetSelectedColumns() { - if (NeedSkip && !SqlQuery.OrderBy.IsEmpty) + if (BuildAlternativeSql && NeedSkip && !SqlQuery.OrderBy.IsEmpty) return AlternativeGetSelectedColumns(base.GetSelectedColumns); return base.GetSelectedColumns(); } @@ -104,45 +123,67 @@ public override ISqlExpression ConvertExpression(ISqlExpression expr) protected override void BuildDeleteClause(StringBuilder sb) { + var table = SqlQuery.Delete.Table != null ? + (SqlQuery.From.FindTableSource(SqlQuery.Delete.Table) ?? SqlQuery.Delete.Table) : + SqlQuery.From.Tables[0]; + AppendIndent(sb) .Append("DELETE ") - .Append(Convert(GetTableAlias(SqlQuery.From.Tables[0]), ConvertType.NameToQueryTableAlias)) + .Append(Convert(GetTableAlias(table), ConvertType.NameToQueryTableAlias)) .AppendLine(); } protected override void BuildUpdateTableName(StringBuilder sb) { - if (SqlQuery.Update.Table != null && SqlQuery.Update.Table != SqlQuery.From.Tables[0].Source) - BuildPhysicalTable(sb, SqlQuery.Update.Table, null); + var table = SqlQuery.Update.Table != null ? + (SqlQuery.From.FindTableSource(SqlQuery.Update.Table) ?? SqlQuery.Update.Table) : + SqlQuery.From.Tables[0]; + + if (table is SqlTable) + BuildPhysicalTable(sb, table, null); else - sb.Append(Convert(GetTableAlias(SqlQuery.From.Tables[0]), ConvertType.NameToQueryTableAlias)); + sb.Append(Convert(GetTableAlias(table), ConvertType.NameToQueryTableAlias)); } - protected override void BuildUnicodeString(StringBuilder sb, string value) + protected override void BuildString(StringBuilder sb, string value) { - sb - .Append("N\'") - .Append(value.Replace("'", "''")) - .Append('\''); + foreach (var ch in value) + { + if (ch > 127) + { + sb.Append("N"); + break; + } + } + + base.BuildString(sb, value); + } + + protected override void BuildChar(StringBuilder sb, char value) + { + if (value > 127) + sb.Append("N"); + + base.BuildChar(sb, value); } - protected override void BuildColumn(StringBuilder sb, SqlQuery.Column col, ref bool addAlias) + protected override void BuildColumnExpression(StringBuilder sb, ISqlExpression expr, string alias, ref bool addAlias) { var wrap = false; - if (col.SystemType == typeof(bool)) + if (expr.SystemType == typeof(bool)) { - if (col.Expression is SqlQuery.SearchCondition) + if (expr is SqlQuery.SearchCondition) wrap = true; else { - var ex = col.Expression as SqlExpression; + var ex = expr as SqlExpression; wrap = ex != null && ex.Expr == "{0}" && ex.Parameters.Length == 1 && ex.Parameters[0] is SqlQuery.SearchCondition; } } if (wrap) sb.Append("CASE WHEN "); - base.BuildColumn(sb, col, ref addAlias); + base.BuildColumnExpression(sb, expr, alias, ref addAlias); if (wrap) sb.Append(" THEN 1 ELSE 0 END"); } @@ -199,17 +240,17 @@ protected override void BuildInsertOrUpdateQuery(StringBuilder sb) BuildInsertOrUpdateQueryAsUpdateInsert(sb); } - protected override void BuildDateTime(StringBuilder sb, object value) - { - sb.Append(string.Format("'{0:yyyy-MM-ddTHH:mm:ss.fff}'", value)); + protected override void BuildDateTime(StringBuilder sb, object value) + { + sb.Append(string.Format("'{0:yyyy-MM-ddTHH:mm:ss.fff}'", value)); } - public override void BuildValue(StringBuilder sb, object value) + public override void BuildValue(StringBuilder sb, object value, SqlParameter sqlParameter = null) { - if (value is sbyte) sb.Append((byte)(sbyte)value); + if (value is sbyte) sb.Append((byte)(sbyte)value); else if (value is ushort) sb.Append((short)(ushort)value); - else if (value is uint) sb.Append((int)(uint)value); - else if (value is ulong) sb.Append((long)(ulong)value); + else if (value is uint) sb.Append((int)(uint)value); + else if (value is ulong) sb.Append((long)(ulong)value); else base.BuildValue(sb, value); } } diff --git a/Source/Data/Sql/SqlProvider/MsSql2000SqlProvider.cs b/Source/Data/Sql/SqlProvider/MsSql2000SqlProvider.cs new file mode 100644 index 000000000..2be95bf32 --- /dev/null +++ b/Source/Data/Sql/SqlProvider/MsSql2000SqlProvider.cs @@ -0,0 +1,90 @@ +using System; +using System.Data; +using System.Text; + +namespace BLToolkit.Data.Sql.SqlProvider +{ + using Reflection; + + public class MsSql2000SqlProvider : MsSqlSqlProvider + { + protected override string FirstFormat { get { return "TOP {0}"; } } + + public override bool IsSkipSupported { get { return false; } } + public override bool IsApplyJoinSupported { get { return false; } } + public override bool TakeAcceptsParameter { get { return false; } } + public override bool IsCountSubQuerySupported { get { return false; } } + + public override ISqlExpression ConvertExpression(ISqlExpression expr) + { + expr = base.ConvertExpression(expr); + + if (expr is SqlFunction) + { + var func = (SqlFunction)expr; + + switch (Type.GetTypeCode(TypeHelper.GetUnderlyingType(func.SystemType))) + { + case TypeCode.DateTime : + + if (func.Name == "Convert") + { + var type1 = TypeHelper.GetUnderlyingType(func.Parameters[1].SystemType); + + if (IsTimeDataType(func.Parameters[0])) + { + if (type1 == typeof(DateTime) || type1 == typeof(DateTimeOffset)) + return new SqlExpression( + func.SystemType, "Cast(Convert(Char, {0}, 114) as DateTime)", Precedence.Primary, func.Parameters[1]); + + if (func.Parameters[1].SystemType == typeof(string)) + return func.Parameters[1]; + + return new SqlExpression( + func.SystemType, "Convert(Char, {0}, 114)", Precedence.Primary, func.Parameters[1]); + } + + if (type1 == typeof(DateTime) || type1 == typeof(DateTimeOffset)) + { + if (IsDateDataType(func.Parameters[0], "Datetime")) + return new SqlExpression( + func.SystemType, "Cast(Floor(Cast({0} as Float)) as DateTime)", Precedence.Primary, func.Parameters[1]); + } + + if (func.Parameters.Length == 2 && func.Parameters[0] is SqlDataType && func.Parameters[0] == SqlDataType.DateTime) + return new SqlFunction(func.SystemType, func.Name, func.Precedence, func.Parameters[0], func.Parameters[1], new SqlValue(120)); + } + + break; + } + } + + return expr; + } + + protected override void BuildFunction(StringBuilder sb, SqlFunction func) + { + func = ConvertFunctionParameters(func); + base.BuildFunction(sb, func); + } + + protected override ISqlProvider CreateSqlProvider() + { + return new MsSql2000SqlProvider(); + } + + protected override void BuildDataType(System.Text.StringBuilder sb, SqlDataType type) + { + switch (type.SqlDbType) + { +#if !MONO + case SqlDbType.DateTimeOffset : + case SqlDbType.DateTime2 : +#endif + case SqlDbType.Time : + case SqlDbType.Date : sb.Append("DateTime"); break; + default : base.BuildDataType(sb, type); break; + } + } + } +} diff --git a/Source/Data/Sql/SqlProvider/MsSql2005SqlProvider.cs b/Source/Data/Sql/SqlProvider/MsSql2005SqlProvider.cs index b6c22e8b9..ec176796f 100644 --- a/Source/Data/Sql/SqlProvider/MsSql2005SqlProvider.cs +++ b/Source/Data/Sql/SqlProvider/MsSql2005SqlProvider.cs @@ -1,5 +1,6 @@ using System; using System.Data; +using System.Text; namespace BLToolkit.Data.Sql.SqlProvider { @@ -54,6 +55,12 @@ public override ISqlExpression ConvertExpression(ISqlExpression expr) return expr; } + protected override void BuildFunction(StringBuilder sb, SqlFunction func) + { + func = ConvertFunctionParameters(func); + base.BuildFunction(sb, func); + } + protected override ISqlProvider CreateSqlProvider() { return new MsSql2005SqlProvider(); diff --git a/Source/Data/Sql/SqlProvider/MsSql2008SqlProvider.cs b/Source/Data/Sql/SqlProvider/MsSql2008SqlProvider.cs index 586c3e0b0..87dbf4cff 100644 --- a/Source/Data/Sql/SqlProvider/MsSql2008SqlProvider.cs +++ b/Source/Data/Sql/SqlProvider/MsSql2008SqlProvider.cs @@ -10,6 +10,12 @@ protected override ISqlProvider CreateSqlProvider() return new MsSql2008SqlProvider(); } + protected override void BuildFunction(StringBuilder sb, SqlFunction func) + { + func = ConvertFunctionParameters(func); + base.BuildFunction(sb, func); + } + protected override void BuildInsertOrUpdateQuery(StringBuilder sb) { BuildInsertOrUpdateQueryAsMerge(sb, null); diff --git a/Source/Data/Sql/SqlProvider/MsSql2012SqlProvider.cs b/Source/Data/Sql/SqlProvider/MsSql2012SqlProvider.cs new file mode 100644 index 000000000..f6729c845 --- /dev/null +++ b/Source/Data/Sql/SqlProvider/MsSql2012SqlProvider.cs @@ -0,0 +1,89 @@ +using System; +using System.Text; + +namespace BLToolkit.Data.Sql.SqlProvider +{ + public class MsSql2012SqlProvider : MsSqlSqlProvider + { + protected override string LimitFormat { get { return SqlQuery.Select.SkipValue != null ? "FETCH NEXT {0} ROWS ONLY" : null; } } + protected override string OffsetFormat { get { return "OFFSET {0} ROWS"; } } + protected override bool OffsetFirst { get { return true; } } + protected override bool BuildAlternativeSql { get { return false; } } + + protected override ISqlProvider CreateSqlProvider() + { + return new MsSql2012SqlProvider(); + } + + protected override void BuildInsertOrUpdateQuery(StringBuilder sb) + { + BuildInsertOrUpdateQueryAsMerge(sb, null); + sb.AppendLine(";"); + } + + protected override void BuildSql(StringBuilder sb) + { + if (NeedSkip && SqlQuery.OrderBy.IsEmpty) + { + for (var i = 0; i < SqlQuery.Select.Columns.Count; i++) + SqlQuery.OrderBy.ExprAsc(new SqlValue(i + 1)); + } + + base.BuildSql(sb); + } + + protected override void BuildFunction(StringBuilder sb, SqlFunction func) + { + func = ConvertFunctionParameters(func); + + switch (func.Name) + { + case "CASE" : func = ConvertCase(func.SystemType, func.Parameters, 0); break; + case "Coalesce" : + + if (func.Parameters.Length > 2) + { + var parms = new ISqlExpression[func.Parameters.Length - 1]; + + Array.Copy(func.Parameters, 1, parms, 0, parms.Length); + BuildFunction(sb, new SqlFunction(func.SystemType, func.Name, func.Parameters[0], + new SqlFunction(func.SystemType, func.Name, parms))); + return; + } + + var sc = new SqlQuery.SearchCondition(); + + sc.Conditions.Add(new SqlQuery.Condition(false, new SqlQuery.Predicate.IsNull(func.Parameters[0], false))); + + func = new SqlFunction(func.SystemType, "IIF", sc, func.Parameters[1], func.Parameters[0]); + + break; + } + + base.BuildFunction(sb, func); + } + + static SqlFunction ConvertCase(Type systemType, ISqlExpression[] parameters, int start) + { + var len = parameters.Length - start; + var name = start == 0 ? "IIF" : "CASE"; + var cond = parameters[start]; + + if (start == 0 && SqlExpression.NeedsEqual(cond)) + { + cond = new SqlQuery.SearchCondition( + new SqlQuery.Condition( + false, + new SqlQuery.Predicate.ExprExpr(cond, SqlQuery.Predicate.Operator.Equal, new SqlValue(1)))); + } + + if (len == 3) + return new SqlFunction(systemType, name, cond, parameters[start + 1], parameters[start + 2]); + + return new SqlFunction(systemType, name, + cond, + parameters[start + 1], + ConvertCase(systemType, parameters, start + 2)); + } + } +} diff --git a/Source/Data/Sql/SqlProvider/MySqlSqlProvider.cs b/Source/Data/Sql/SqlProvider/MySqlSqlProvider.cs index b7dc12b56..6b531df7f 100644 --- a/Source/Data/Sql/SqlProvider/MySqlSqlProvider.cs +++ b/Source/Data/Sql/SqlProvider/MySqlSqlProvider.cs @@ -147,9 +147,13 @@ protected override void BuildDataType(StringBuilder sb, SqlDataType type) protected override void BuildDeleteClause(StringBuilder sb) { + var table = SqlQuery.Delete.Table != null ? + (SqlQuery.From.FindTableSource(SqlQuery.Delete.Table) ?? SqlQuery.Delete.Table) : + SqlQuery.From.Tables[0]; + AppendIndent(sb) .Append("DELETE ") - .Append(Convert(GetTableAlias(SqlQuery.From.Tables[0]), ConvertType.NameToQueryTableAlias)) + .Append(Convert(GetTableAlias(table), ConvertType.NameToQueryTableAlias)) .AppendLine(); } @@ -297,5 +301,48 @@ protected override void BuildEmptyInsert(StringBuilder sb) { sb.AppendLine("() VALUES ()"); } + + public static bool GenerateOldGuid = false; + + public override void BuildValue(StringBuilder sb, object value, SqlParameter sqlParameter = null) + { + if (GenerateOldGuid && value is Guid) + { + var bytes = ((Guid)value).ToByteArray(); + + sb.Append("X'").Append(ByteArrayToHex(bytes)).Append('\''); + } + else + base.BuildValue(sb, value); + } + + static string ByteArrayToHex(byte[] barray) + { + var c = new char[barray.Length * 2]; + + for (var i = 0; i < barray.Length; ++i) + { + var b = ((byte)(barray[i] >> 4)); + + c[i * 2] = (char)(b > 9 ? b + 0x37 : b + 0x30); + b = ((byte)(barray[i] & 0xF)); + c[i * 2 + 1] = (char)(b > 9 ? b + 0x37 : b + 0x30); + } + + return new string(c); + } + + protected override void BuildString(StringBuilder sb, string value) + { + base.BuildString(sb, value.Replace("\\", "\\\\")); + } + + protected override void BuildChar(StringBuilder sb, char value) + { + if (value == '\\') + sb.Append("\\\\"); + else + base.BuildChar(sb, value); + } } } diff --git a/Source/Data/Sql/SqlProvider/OracleSqlProvider.cs b/Source/Data/Sql/SqlProvider/OracleSqlProvider.cs index b82ecbc49..6b8cfecf6 100644 --- a/Source/Data/Sql/SqlProvider/OracleSqlProvider.cs +++ b/Source/Data/Sql/SqlProvider/OracleSqlProvider.cs @@ -11,6 +11,7 @@ public class OracleSqlProvider : BasicSqlProvider { public override bool IsCountSubQuerySupported { get { return false; } } public override bool IsIdentityParameterRequired { get { return true; } } + public override int MaxInListValuesCount { get { return 1000; } } protected override void BuildSelectClause(StringBuilder sb) { @@ -214,11 +215,14 @@ public override ISqlExpression ConvertExpression(ISqlExpression expr) return new SqlExpression(func.SystemType, "Cast({0} as {1})", Precedence.Primary, FloorBeforeConvert(func), func.Parameters[0]); } - + case "ContainsExactly": + return func.Parameters.Length == 2 ? + new SqlFunction(func.SystemType, "Contains", func.Parameters[1], func.Parameters[0]) : + new SqlFunction(func.SystemType, "Contains", func.Parameters[1], func.Parameters[0], func.Parameters[2]); case "CharIndex" : - return func.Parameters.Length == 2? - new SqlFunction(func.SystemType, "InStr", func.Parameters[1], func.Parameters[0]): - new SqlFunction(func.SystemType, "InStr", func.Parameters[1], func.Parameters[0], func.Parameters[2]); + return func.Parameters.Length == 2 ? + new SqlFunction(func.SystemType, "InStr", func.Parameters[1], func.Parameters[0]) : + new SqlFunction(func.SystemType, "InStr", func.Parameters[1], func.Parameters[0], func.Parameters[2]); case "AddYear" : return new SqlFunction(func.SystemType, "Add_Months", func.Parameters[0], Mul(func.Parameters[1], 12)); case "AddQuarter" : return new SqlFunction(func.SystemType, "Add_Months", func.Parameters[0], Mul(func.Parameters[1], 3)); case "AddMonth" : return new SqlFunction(func.SystemType, "Add_Months", func.Parameters[0], func.Parameters[1]); @@ -249,6 +253,12 @@ public override ISqlExpression ConvertExpression(ISqlExpression expr) return expr; } + protected override void BuildFunction(StringBuilder sb, SqlFunction func) + { + func = ConvertFunctionParameters(func); + base.BuildFunction(sb, func); + } + protected override void BuildDataType(StringBuilder sb, SqlDataType type) { switch (type.SqlDbType) @@ -292,50 +302,59 @@ protected override void BuildFromClause(StringBuilder sb) base.BuildFromClause(sb); } - public override void BuildValue(StringBuilder sb, object value) - { - if (value is Guid) - { - var s = ((Guid)value).ToString("N"); - - sb - .Append("Cast('") - .Append(s.Substring( 6, 2)) - .Append(s.Substring( 4, 2)) - .Append(s.Substring( 2, 2)) - .Append(s.Substring( 0, 2)) - .Append(s.Substring(10, 2)) - .Append(s.Substring( 8, 2)) - .Append(s.Substring(14, 2)) - .Append(s.Substring(12, 2)) - .Append(s.Substring(16, 16)) - .Append("' as raw(16))"); - } - else if (value is DateTime) - { - sb.AppendFormat("TO_TIMESTAMP('{0:yyyy-MM-dd HH:mm:ss.fffffff}', 'YYYY-MM-DD HH24:MI:SS.FF7')", value); - } - else - base.BuildValue(sb, value); - } - - protected override void BuildColumn(StringBuilder sb, SqlQuery.Column col, ref bool addAlias) + public override void BuildValue(StringBuilder sb, object value, SqlParameter sqlParameter = null) + { + if (value is Guid) + { + var s = ((Guid) value).ToString("N"); + + sb + .Append("Cast('") + .Append(s.Substring(6, 2)) + .Append(s.Substring(4, 2)) + .Append(s.Substring(2, 2)) + .Append(s.Substring(0, 2)) + .Append(s.Substring(10, 2)) + .Append(s.Substring(8, 2)) + .Append(s.Substring(14, 2)) + .Append(s.Substring(12, 2)) + .Append(s.Substring(16, 16)) + .Append("' as raw(16))"); + } + else + base.BuildValue(sb, value, sqlParameter); + } + + protected override void BuildDate(StringBuilder sb, object value) + { + sb.AppendFormat("TO_DATE('{0:yyyy-MM-dd}', 'YYYY-MM-DD')", value); + } + + protected override void BuildDateTime(StringBuilder sb, object value) + { + var dt = (DateTime) value; + sb.AppendFormat(dt.Millisecond == 0 + ? "TO_DATE('{0:yyyy-MM-dd HH:mm:ss}', 'YYYY-MM-DD HH24:MI:SS')" + : "TO_TIMESTAMP('{0:yyyy-MM-dd HH:mm:ss.fffffff}', 'YYYY-MM-DD HH24:MI:SS.FF7')", value); + } + + protected override void BuildColumnExpression(StringBuilder sb, ISqlExpression expr, string alias, ref bool addAlias) { var wrap = false; - if (col.SystemType == typeof(bool)) + if (expr.SystemType == typeof(bool)) { - if (col.Expression is SqlQuery.SearchCondition) + if (expr is SqlQuery.SearchCondition) wrap = true; else { - var ex = col.Expression as SqlExpression; + var ex = expr as SqlExpression; wrap = ex != null && ex.Expr == "{0}" && ex.Parameters.Length == 1 && ex.Parameters[0] is SqlQuery.SearchCondition; } } if (wrap) sb.Append("CASE WHEN "); - base.BuildColumn(sb, col, ref addAlias); + base.BuildColumnExpression(sb, expr, alias, ref addAlias); if (wrap) sb.Append(" THEN 1 ELSE 0 END"); } diff --git a/Source/Data/Sql/SqlProvider/PostgreSQLSqlProvider.cs b/Source/Data/Sql/SqlProvider/PostgreSQLSqlProvider.cs index 11cb7c2d0..8ddc52de8 100644 --- a/Source/Data/Sql/SqlProvider/PostgreSQLSqlProvider.cs +++ b/Source/Data/Sql/SqlProvider/PostgreSQLSqlProvider.cs @@ -2,11 +2,10 @@ using System.Data; using System.Text; -using BLToolkit.Reflection; - namespace BLToolkit.Data.Sql.SqlProvider { using DataProvider; + using Reflection; public class PostgreSQLSqlProvider : BasicSqlProvider { @@ -98,7 +97,7 @@ public override ISqlExpression ConvertExpression(ISqlExpression expr) return expr; } - public override void BuildValue(StringBuilder sb, object value) + public override void BuildValue(StringBuilder sb, object value, SqlParameter sqlParameter = null) { if (value is bool) sb.Append(value); @@ -187,19 +186,18 @@ public override object Convert(object value, ConvertType convertType) return value; } - - public override ISqlExpression GetIdentityExpression(SqlTable table, SqlField identityField, bool forReturning) - { - if (table.SequenceAttributes != null) - { - var attr = GetSequenceNameAttribute(table, false); - - if (attr != null) - return new SqlExpression("nextval('" + attr.SequenceName+"')", Precedence.Primary); - } - - return base.GetIdentityExpression(table, identityField, forReturning); - } + + public override ISqlExpression GetIdentityExpression(SqlTable table, SqlField identityField, bool forReturning) + { + if (table.SequenceAttributes != null) + { + var attr = GetSequenceNameAttribute(table, false); + + if (attr != null) + return new SqlExpression("nextval('" + attr.SequenceName + "')", Precedence.Primary); + } + return base.GetIdentityExpression(table, identityField, forReturning); + } //protected override void BuildInsertOrUpdateQuery(StringBuilder sb) //{ diff --git a/Source/Data/Sql/SqlProvider/SQLiteSqlProvider.cs b/Source/Data/Sql/SqlProvider/SQLiteSqlProvider.cs index 31c98c83d..382eb1cc4 100644 --- a/Source/Data/Sql/SqlProvider/SQLiteSqlProvider.cs +++ b/Source/Data/Sql/SqlProvider/SQLiteSqlProvider.cs @@ -1,11 +1,10 @@ using System; using System.Text; -using BLToolkit.Reflection; - namespace BLToolkit.Data.Sql.SqlProvider { using DataProvider; + using Reflection; public class SQLiteSqlProvider : BasicSqlProvider { @@ -128,7 +127,7 @@ protected override void BuildFromClause(StringBuilder sb) base.BuildFromClause(sb); } - public override void BuildValue(StringBuilder sb, object value) + public override void BuildValue(StringBuilder sb, object value, SqlParameter sqlParameter = null) { if (value is Guid) { diff --git a/Source/Data/Sql/SqlProvider/SqlCeSqlProvider.cs b/Source/Data/Sql/SqlProvider/SqlCeSqlProvider.cs index a79c453ef..b271b87a5 100644 --- a/Source/Data/Sql/SqlProvider/SqlCeSqlProvider.cs +++ b/Source/Data/Sql/SqlProvider/SqlCeSqlProvider.cs @@ -113,6 +113,12 @@ public override ISqlExpression ConvertExpression(ISqlExpression expr) return expr; } + protected override void BuildFunction(StringBuilder sb, SqlFunction func) + { + func = ConvertFunctionParameters(func); + base.BuildFunction(sb, func); + } + public override SqlQuery Finalize(SqlQuery sqlQuery) { sqlQuery = base.Finalize(sqlQuery); @@ -185,23 +191,23 @@ protected override void BuildOrderByClause(StringBuilder sb) base.BuildOrderByClause(sb); } - protected override void BuildColumn(StringBuilder sb, SqlQuery.Column col, ref bool addAlias) + protected override void BuildColumnExpression(StringBuilder sb, ISqlExpression expr, string alias, ref bool addAlias) { var wrap = false; - if (col.SystemType == typeof(bool)) + if (expr.SystemType == typeof(bool)) { - if (col.Expression is SqlQuery.SearchCondition) + if (expr is SqlQuery.SearchCondition) wrap = true; else { - var ex = col.Expression as SqlExpression; + var ex = expr as SqlExpression; wrap = ex != null && ex.Expr == "{0}" && ex.Parameters.Length == 1 && ex.Parameters[0] is SqlQuery.SearchCondition; } } if (wrap) sb.Append("CASE WHEN "); - base.BuildColumn(sb, col, ref addAlias); + base.BuildColumnExpression(sb, expr, alias, ref addAlias); if (wrap) sb.Append(" THEN 1 ELSE 0 END"); } diff --git a/Source/Data/Sql/SqlProvider/SybaseSqlProvider.cs b/Source/Data/Sql/SqlProvider/SybaseSqlProvider.cs index 50b322706..2fb0c7aac 100644 --- a/Source/Data/Sql/SqlProvider/SybaseSqlProvider.cs +++ b/Source/Data/Sql/SqlProvider/SybaseSqlProvider.cs @@ -71,6 +71,12 @@ public override ISqlExpression ConvertExpression(ISqlExpression expr) return expr; } + protected override void BuildFunction(StringBuilder sb, SqlFunction func) + { + func = ConvertFunctionParameters(func); + base.BuildFunction(sb, func); + } + private bool _isSelect; readonly bool _skipAliases; @@ -86,22 +92,23 @@ protected override void BuildSelectClause(StringBuilder sb) _isSelect = false; } - protected override void BuildColumn(StringBuilder sb, SqlQuery.Column col, ref bool addAlias) - { var wrap = false; + protected override void BuildColumnExpression(StringBuilder sb, ISqlExpression expr, string alias, ref bool addAlias) + { + var wrap = false; - if (col.SystemType == typeof(bool)) + if (expr.SystemType == typeof(bool)) { - if (col.Expression is SqlQuery.SearchCondition) + if (expr is SqlQuery.SearchCondition) wrap = true; else { - var ex = col.Expression as SqlExpression; + var ex = expr as SqlExpression; wrap = ex != null && ex.Expr == "{0}" && ex.Parameters.Length == 1 && ex.Parameters[0] is SqlQuery.SearchCondition; } } if (wrap) sb.Append("CASE WHEN "); - base.BuildColumn(sb, col, ref addAlias); + base.BuildColumnExpression(sb, expr, alias, ref addAlias); if (wrap) sb.Append(" THEN 1 ELSE 0 END"); if (_skipAliases) addAlias = false; @@ -127,7 +134,22 @@ protected override void BuildDeleteClause(StringBuilder sb) { AppendIndent(sb); sb.Append("DELETE FROM "); - BuildTableName(sb, SqlQuery.From.Tables[0], true, false); +// BuildTableName(sb, SqlQuery.From.Tables[0], true, false); + + ISqlTableSource table; + ISqlTableSource source; + + if (SqlQuery.Delete.Table != null) + table = source = SqlQuery.Delete.Table; + else + { + table = SqlQuery.From.Tables[0]; + source = SqlQuery.From.Tables[0].Source; + } + + var alias = GetTableAlias(table); + BuildPhysicalTable(sb, source, alias); + sb.AppendLine(); } @@ -139,12 +161,26 @@ protected override void BuildUpdateTableName(StringBuilder sb) BuildTableName(sb, SqlQuery.From.Tables[0], true, false); } - protected override void BuildUnicodeString(StringBuilder sb, string value) + protected override void BuildString(StringBuilder sb, string value) { - sb - .Append("N\'") - .Append(value.Replace("'", "''")) - .Append('\''); + foreach (var ch in value) + { + if (ch > 127) + { + sb.Append("N"); + break; + } + } + + base.BuildString(sb, value); + } + + protected override void BuildChar(StringBuilder sb, char value) + { + if (value > 127) + sb.Append("N"); + + base.BuildChar(sb, value); } public override object Convert(object value, ConvertType convertType) diff --git a/Source/Data/Sql/SqlQuery.cs b/Source/Data/Sql/SqlQuery.cs index fcf129a6a..17dbacf1c 100644 --- a/Source/Data/Sql/SqlQuery.cs +++ b/Source/Data/Sql/SqlQuery.cs @@ -60,6 +60,7 @@ internal SqlQuery(int id) internal void Init( InsertClause insert, UpdateClause update, + DeleteClause delete, SelectClause select, FromClause from, WhereClause where, @@ -73,6 +74,7 @@ internal void Init( { _insert = insert; _update = update; + _delete = delete; _select = select; _from = from; _where = where; @@ -424,6 +426,15 @@ public void ForEach(Action action, HashSet visitedQueries ((SqlQuery)Source).ForEachTable(action, visitedQueries); } + public IEnumerable GetTables() + { + yield return Source; + + foreach (var join in Joins) + foreach (var table in join.Table.GetTables()) + yield return table; + } + public int GetJoinNumber() { var n = Joins.Count; @@ -579,10 +590,11 @@ public class JoinedTable : IQueryElement, ISqlExpressionWalkable, ICloneableElem { public JoinedTable(JoinType joinType, TableSource table, bool isWeak, SearchCondition searchCondition) { - JoinType = joinType; - Table = table; - IsWeak = isWeak; - Condition = searchCondition; + JoinType = joinType; + Table = table; + IsWeak = isWeak; + Condition = searchCondition; + CanConvertApply = true; } public JoinedTable(JoinType joinType, TableSource table, bool isWeak) @@ -595,10 +607,11 @@ public JoinedTable(JoinType joinType, ISqlTableSource table, string alias, bool { } - public JoinType JoinType { get; set; } - public TableSource Table { get; set; } - public SearchCondition Condition { get; private set; } - public bool IsWeak { get; set; } + public JoinType JoinType { get; set; } + public TableSource Table { get; set; } + public SearchCondition Condition { get; private set; } + public bool IsWeak { get; set; } + public bool CanConvertApply { get; set; } public ICloneableElement Clone(Dictionary objectTree, Predicate doClone) { @@ -1819,6 +1832,7 @@ internal SelectClause( : base(sqlQuery) { _columns.AddRange(clone._columns.ConvertAll(c => (Column)c.Clone(objectTree, doClone))); + IsDistinct = clone.IsDistinct; TakeValue = clone.TakeValue == null ? null : (ISqlExpression)clone.TakeValue.Clone(objectTree, doClone); SkipValue = clone.SkipValue == null ? null : (ISqlExpression)clone.SkipValue.Clone(objectTree, doClone); @@ -1830,6 +1844,7 @@ internal SelectClause(bool isDistinct, ISqlExpression takeValue, ISqlExpression IsDistinct = isDistinct; TakeValue = takeValue; SkipValue = skipValue; + _columns.AddRange(columns); } @@ -2168,7 +2183,7 @@ public SetExpression(ISqlExpression column, ISqlExpression expression) { Column = column; Expression = expression; - + if (expression is SqlParameter) { var p = (SqlParameter)expression; @@ -2189,7 +2204,7 @@ public SetExpression(ISqlExpression column, ISqlExpression expression) p.DbSize = field.MemberMapper.MapMemberInfo.DbSize; } } - } + } } public ISqlExpression Column { get; set; } @@ -2267,6 +2282,7 @@ public InsertClause() public List Items { get; private set; } public SqlTable Into { get; set; } public bool WithIdentity { get; set; } + public bool WithOutput { get; set; } #region Overrides @@ -2288,7 +2304,7 @@ public ICloneableElement Clone(Dictionary if (!doClone(this)) return this; - var clone = new InsertClause { WithIdentity = WithIdentity }; + var clone = new InsertClause { WithIdentity = WithIdentity, WithOutput = WithOutput }; if (Into != null) clone.Into = (SqlTable)Into.Clone(objectTree, doClone); @@ -2468,6 +2484,89 @@ public void ClearUpdate() #endregion + #region DeleteClause + + public class DeleteClause : IQueryElement, ISqlExpressionWalkable, ICloneableElement + { + public SqlTable Table { get; set; } + + #region Overrides + +#if OVERRIDETOSTRING + + public override string ToString() + { + return ((IQueryElement)this).ToString(new StringBuilder(), new Dictionary()).ToString(); + } + +#endif + + #endregion + + #region ICloneableElement Members + + public ICloneableElement Clone(Dictionary objectTree, Predicate doClone) + { + if (!doClone(this)) + return this; + + var clone = new DeleteClause(); + + if (Table != null) + clone.Table = (SqlTable)Table.Clone(objectTree, doClone); + + objectTree.Add(this, clone); + + return clone; + } + + #endregion + + #region ISqlExpressionWalkable Members + + [Obsolete] + ISqlExpression ISqlExpressionWalkable.Walk(bool skipColumns, Func func) + { + if (Table != null) + ((ISqlExpressionWalkable)Table).Walk(skipColumns, func); + + return null; + } + + #endregion + + #region IQueryElement Members + + public QueryElementType ElementType { get { return QueryElementType.DeleteClause; } } + + StringBuilder IQueryElement.ToString(StringBuilder sb, Dictionary dic) + { + sb.Append("DELETE FROM "); + + if (Table != null) + ((IQueryElement)Table).ToString(sb, dic); + + sb.AppendLine(); + + return sb; + } + + #endregion + } + + private DeleteClause _delete; + public DeleteClause Delete + { + get { return _delete ?? (_delete = new DeleteClause()); } + } + + public void ClearDelete() + { + _delete = null; + } + + #endregion + #region FromClause public class FromClause : ClauseBase, IQueryElement, ISqlExpressionWalkable @@ -2623,7 +2722,7 @@ public List Tables get { return _tables; } } - IEnumerable GetJoinTables(TableSource source, QueryElementType elementType) + static IEnumerable GetJoinTables(TableSource source, QueryElementType elementType) { if (source.Source.ElementType == elementType) yield return source.Source; @@ -2643,6 +2742,33 @@ internal IEnumerable GetFromQueries() return Tables.SelectMany(_ => GetJoinTables(_, QueryElementType.SqlQuery)); } + static TableSource FindTableSource(TableSource source, SqlTable table) + { + if (source.Source == table) + return source; + + foreach (var join in source.Joins) + { + var ts = FindTableSource(join.Table, table); + if (ts != null) + return ts; + } + + return null; + } + + public ISqlTableSource FindTableSource(SqlTable table) + { + foreach (var source in Tables) + { + var ts = FindTableSource(source, table); + if (ts != null) + return ts; + } + + return null; + } + #region Overrides #if OVERRIDETOSTRING @@ -3138,7 +3264,7 @@ public void FinalizeAndValidate(bool isApplySupported, bool optimizeColumns) #endif OptimizeUnions(); - FinalizeAndValidateInternal(isApplySupported, optimizeColumns, true); + FinalizeAndValidateInternal(isApplySupported, optimizeColumns, true, new List()); ResolveFields(); SetAliases(); @@ -3420,7 +3546,7 @@ void OptimizeUnions() { var sql = e as SqlQuery; - if (sql == null || sql.From.Tables.Count != 1 || !sql.IsSimple || sql._insert != null || sql._update != null) + if (sql == null || sql.From.Tables.Count != 1 || !sql.IsSimple || sql._insert != null || sql._update != null || sql._delete != null) return; var table = sql.From.Tables[0]; @@ -3479,7 +3605,7 @@ void OptimizeUnions() }); } - void FinalizeAndValidateInternal(bool isApplySupported, bool optimizeColumns, bool optimizeSearchCondition) + void FinalizeAndValidateInternal(bool isApplySupported, bool optimizeColumns, bool optimizeSearchCondition, List tables) { OptimizeSearchCondition(Where. SearchCondition); OptimizeSearchCondition(Having.SearchCondition); @@ -3500,14 +3626,14 @@ void FinalizeAndValidateInternal(bool isApplySupported, bool optimizeColumns, bo if (sql != null && sql != this) { sql.ParentSql = this; - sql.FinalizeAndValidateInternal(isApplySupported, optimizeColumns, false); + sql.FinalizeAndValidateInternal(isApplySupported, optimizeColumns, false, tables); if (sql.IsParameterDependent) IsParameterDependent = true; } }); - ResolveWeakJoins(); + ResolveWeakJoins(tables); OptimizeColumns(); OptimizeApplies (isApplySupported, optimizeColumns); OptimizeSubQueries(isApplySupported, optimizeColumns); @@ -3646,10 +3772,10 @@ internal static void OptimizeSearchCondition(SearchCondition searchCondition) void ForEachTable(Action action, HashSet visitedQueries) { - if (!visitedQueries.Add(this)) + if (!visitedQueries.Add(this)) return; - foreach (var table in From.Tables) + foreach (var table in From.Tables) table.ForEach(action, visitedQueries); new QueryVisitor().Visit(this, e => @@ -3665,10 +3791,8 @@ void RemoveOrderBy() OrderBy.Items.Clear(); } - void ResolveWeakJoins() + internal void ResolveWeakJoins(List tables) { - List tables = null; - Func findTable = null; findTable = table => { if (tables.Contains(table.Source)) @@ -3691,6 +3815,8 @@ void ResolveWeakJoins() return false; }; + var areTablesCollected = false; + ForEachTable(table => { for (var i = 0; i < table.Joins.Count; i++) @@ -3699,9 +3825,9 @@ void ResolveWeakJoins() if (join.IsWeak) { - if (tables == null) + if (!areTablesCollected) { - tables = new List(); + areTablesCollected = true; Action tableCollector = expr => { @@ -3724,6 +3850,22 @@ void ResolveWeakJoins() if (_update != null) visitor.VisitAll(Update, tableCollector); + + if (_delete != null) + visitor.VisitAll(Delete, tableCollector); + + visitor.VisitAll(From, expr => + { + var tbl = expr as SqlTable; + + if (tbl != null && tbl.TableArguments != null) + { + var v = new QueryVisitor(); + + foreach (var arg in tbl.TableArguments) + v.VisitAll(arg, tableCollector); + } + }); } if (findTable(join.Table)) @@ -3734,7 +3876,6 @@ void ResolveWeakJoins() { table.Joins.RemoveAt(i); i--; - continue; } } } @@ -3820,7 +3961,7 @@ TableSource RemoveSubQuery( bool optimizeValues, bool optimizeColumns) { - var query = (SqlQuery)childSource. Source; + var query = (SqlQuery)childSource.Source; var isQueryOK = query.From.Tables.Count == 1; @@ -3911,6 +4052,9 @@ void OptimizeApply(TableSource tableSource, JoinedTable joinTable, bool isApplyS if (join.JoinType == JoinType.CrossApply || join.JoinType == JoinType.OuterApply) OptimizeApply(joinSource, join, isApplySupported, optimizeColumns); + if (isApplySupported && !joinTable.CanConvertApply) + return; + if (joinSource.Source.ElementType == QueryElementType.SqlQuery) { var sql = (SqlQuery)joinSource.Source; @@ -4010,9 +4154,10 @@ void OptimizeSubQueries(bool isApplySupported, bool optimizeColumns) { var sql = From.Tables[i].Source as SqlQuery; - if (sql != null && sql.OrderBy.Items.Count > 0) - foreach (var item in sql.OrderBy.Items) - OrderBy.Expr(item.Expression, item.IsDescending); + if (!Select.Columns.All(c => IsAggregationFunction(c.Expression))) + if (sql != null && sql.OrderBy.Items.Count > 0) + foreach (var item in sql.OrderBy.Items) + OrderBy.Expr(item.Expression, item.IsDescending); From.Tables[i] = table; } @@ -4072,7 +4217,7 @@ public string GetAlias(string desiredAlias, string defaultAlias) var alias = desiredAlias; - if (string.IsNullOrEmpty(desiredAlias)) + if (string.IsNullOrEmpty(desiredAlias) || desiredAlias.Length > 30) { desiredAlias = defaultAlias; alias = defaultAlias + "1"; @@ -4454,6 +4599,7 @@ static SqlField GetUnderlayingField(ISqlExpression expr) if (IsInsert) _insert = (InsertClause)clone._insert.Clone(objectTree, doClone); if (IsUpdate) _update = (UpdateClause)clone._update.Clone(objectTree, doClone); + if (IsDelete) _delete = (DeleteClause)clone._delete.Clone(objectTree, doClone); _select = new SelectClause (this, clone._select, objectTree, doClone); _from = new FromClause (this, clone._from, objectTree, doClone); @@ -4589,6 +4735,7 @@ ISqlExpression ISqlExpressionWalkable.Walk(bool skipColumns, Func(); + var generator = mm.MapMemberInfo.KeyGenerator as SequenceKeyGenerator; + + _sequenceAttributes = generator != null + ? new[] {new SequenceNameAttribute(generator.Sequence)} + : mm.MapMemberInfo.MemberAccessor.GetAttributes(); } } diff --git a/Source/Data/Sql/SqlValue.cs b/Source/Data/Sql/SqlValue.cs index dc167adbb..19c01342e 100644 --- a/Source/Data/Sql/SqlValue.cs +++ b/Source/Data/Sql/SqlValue.cs @@ -4,12 +4,12 @@ namespace BLToolkit.Data.Sql { - public class SqlValue : ISqlExpression, IValueContainer + public class SqlValue : SqlValueBase, ISqlExpression { public SqlValue(Type systemType, object value) { _systemType = systemType; - _value = value; + _value = value; } public SqlValue(object value) @@ -20,8 +20,22 @@ public SqlValue(object value) _systemType = value.GetType(); } - readonly object _value; public object Value { get { return _value; } } - readonly Type _systemType; public Type SystemType { get { return _systemType; } } + public override object Value + { + get + { + var rv = base.Value; + + if (rv != null && rv.GetType() != _systemType) + { + _systemType = rv.GetType(); + } + + return rv; + } + } + + Type _systemType; public Type SystemType { get { return _systemType; } } #region Overrides @@ -107,16 +121,16 @@ public ICloneableElement Clone(Dictionary StringBuilder IQueryElement.ToString(StringBuilder sb, Dictionary dic) { - return - _value == null ? + return + Value == null ? sb.Append("NULL") : - _value is string ? + Value is string ? sb .Append('\'') - .Append(_value.ToString().Replace("\'", "''")) + .Append(Value.ToString().Replace("\'", "''")) .Append('\'') : - sb.Append(_value); + sb.Append(Value); } #endregion diff --git a/Source/Data/Sql/SqlValueBase.cs b/Source/Data/Sql/SqlValueBase.cs new file mode 100644 index 000000000..4d8675d2f --- /dev/null +++ b/Source/Data/Sql/SqlValueBase.cs @@ -0,0 +1,179 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using BLToolkit.Mapping; +using BLToolkit.Reflection; + +namespace BLToolkit.Data.Sql +{ + public abstract class SqlValueBase: IValueContainer + { + [CLSCompliant(false)] + protected object _value; + public virtual object Value + { + get + { + var valueConverter = ValueConverter; + return valueConverter == null ? _value : valueConverter(_value); + } + + set { _value = value; } + } + + #region Value Converter + + internal List EnumTypes; + internal List TakeValues; + internal string LikeStart, LikeEnd; + + private Converter _valueConverter; + public Converter ValueConverter + { + get + { + if (_valueConverter == null) + { + if (EnumTypes != null) + foreach (var type in EnumTypes.ToArray()) + SetEnumConverter(type, Map.DefaultSchema); + else if (TakeValues != null) + foreach (var take in TakeValues.ToArray()) + SetTakeConverter(take); + else if (LikeStart != null) + SetLikeConverter(LikeStart, LikeEnd); + } + + return _valueConverter; + } + + set { _valueConverter = value; } + } + + bool _isEnumConverterSet; + + internal void SetEnumConverter(Type type, MappingSchema ms) + { + if (!_isEnumConverterSet) + { + _isEnumConverterSet = true; + + if (EnumTypes == null) + EnumTypes = new List(); + + EnumTypes.Add(type); + + SetEnumConverterInternal(type, ms); + } + } + + internal void SetEnumConverter(MemberAccessor ma, MappingSchema ms) + { + if (!_isEnumConverterSet) + { + _isEnumConverterSet = true; + + if (EnumTypes == null) + EnumTypes = new List(); + + EnumTypes.Add(ma.Type); + + SetEnumConverterInternal(ma, ms); + } + } + + void SetEnumConverterInternal(MemberAccessor ma, MappingSchema ms) + { + if (_valueConverter == null) + { + _valueConverter = o => ms.MapEnumToValue(o, ma, true); + } + else + { + var converter = _valueConverter; + _valueConverter = o => ms.MapEnumToValue(converter(o), ma, true); + } + // update system type in SqlValue :-/ + var tmp = Value; + } + + void SetEnumConverterInternal(Type type, MappingSchema ms) + { + if (_valueConverter == null) + { + _valueConverter = o => ms.MapEnumToValue(o, type, true); + } + else + { + var converter = _valueConverter; + _valueConverter = o => ms.MapEnumToValue(converter(o), type, true); + } + // update system type in SqlValue :-/ + var tmp = Value; + } + + internal void SetTakeConverter(int take) + { + if (TakeValues == null) + TakeValues = new List(); + + TakeValues.Add(take); + + SetTakeConverterInternal(take); + } + + void SetTakeConverterInternal(int take) + { + var conv = _valueConverter; + + if (conv == null) + _valueConverter = v => v == null ? null : (object)((int)v + take); + else + _valueConverter = v => v == null ? null : (object)((int)conv(v) + take); + } + + internal void SetLikeConverter(string start, string end) + { + LikeStart = start; + LikeEnd = end; + _valueConverter = GetLikeEscaper(start, end); + } + + static Converter GetLikeEscaper(string start, string end) + { + return value => + { + if (value == null) + #if DEBUG + value = ""; + #else + throw new SqlException("NULL cannot be used as a LIKE predicate parameter."); + #endif + + var text = value.ToString(); + + if (text.IndexOfAny(new[] { '%', '_', '[' }) < 0) + return start + text + end; + + var sb = new StringBuilder(start, text.Length + start.Length + end.Length); + + foreach (var c in text) + { + if (c == '%' || c == '_' || c == '[') + { + sb.Append('['); + sb.Append(c); + sb.Append(']'); + } + else + sb.Append(c); + } + + return sb.ToString(); + }; + } + + #endregion + } +} diff --git a/Source/DataAccess/DataAccessorBuilder.cs b/Source/DataAccess/DataAccessorBuilder.cs index a899779c0..dd58de4f6 100644 --- a/Source/DataAccess/DataAccessorBuilder.cs +++ b/Source/DataAccess/DataAccessorBuilder.cs @@ -19,2084 +19,2089 @@ namespace BLToolkit.DataAccess { - public class DataAccessorBuilder : AbstractTypeBuilderBase - { - private struct MapOutputParametersValue - { - public readonly string ReturnValueMember; - public readonly ParameterInfo ParameterInfo; - - public MapOutputParametersValue(string returnValueMember, ParameterInfo parameterInfo) - { - ReturnValueMember = returnValueMember; - ParameterInfo = parameterInfo; - } - } - - public override int GetPriority(BuildContext context) - { - return TypeBuilderConsts.Priority.DataAccessor; - } - - public override bool IsApplied(BuildContext context, AbstractTypeBuilderList builders) - { - if (context.IsBuildStep) - { - if (context.IsAbstractMethod) - { - // Give up if there is any builder that builds the method body. - // - if (builders.Count > 1) - foreach (IAbstractTypeBuilder builder in builders) - if (builder != this && builder.IsApplied(context, builders)) - return false; - - return true; - } - - // Treat an abstract getter/setter as a regular method - // when the property has [NoInstance] attribute - // - if (context.IsAbstractGetter || context.IsAbstractSetter) - return context.CurrentProperty.IsDefined(typeof(NoInstanceAttribute), true); - } - - return false; - } - - private Dictionary _actualTypes; - private Dictionary ActualTypes - { - get - { - if (_actualTypes == null) - { - _actualTypes = new Dictionary(); - - object[] attrs = Context.Type.GetAttributes(typeof(ActualTypeAttribute)); - - foreach (ActualTypeAttribute attr in attrs) - if (!_actualTypes.ContainsKey(attr.BaseType)) - _actualTypes.Add(attr.BaseType, attr.ActualType); - } - - return _actualTypes; - } - } - - enum ReturnType - { - DataReader, - DataSet, - DataTable, - List, - Dictionary, - Enumerable, - Void, - Scalar, - Object - } - - private static ReturnType GetReturnType(Type returnType) - { - if (returnType == typeof(IDataReader)) - return ReturnType.DataReader; - - if (returnType == typeof(DataSet) || returnType.IsSubclassOf(typeof(DataSet))) - return ReturnType.DataSet; - - if (returnType == typeof(DataTable) || returnType.IsSubclassOf(typeof(DataTable))) - return ReturnType.DataTable; - - if (!returnType.IsArray && - (IsInterfaceOf(returnType, typeof(IList)) || - returnType.IsGenericType && returnType.GetGenericTypeDefinition() == typeof(IList<>))) - return ReturnType.List; - - if (IsInterfaceOf(returnType, typeof(IDictionary)) || - returnType.IsGenericType && returnType.GetGenericTypeDefinition() == typeof(IDictionary<,>)) - return ReturnType.Dictionary; - - if (returnType == typeof(IEnumerable) || - returnType.IsGenericType && returnType.GetGenericTypeDefinition() == typeof(IEnumerable<>)) - return ReturnType.Enumerable; - - if (returnType == typeof(void)) - return ReturnType.Void; - - if (TypeHelper.IsScalar(returnType.IsByRef ? returnType.GetElementType() : returnType)) - return ReturnType.Scalar; - - return ReturnType.Object; - } - - void ThrowTypeBuilderException(string message) - { - throw new TypeBuilderException( - string.Format(message, Context.CurrentMethod.DeclaringType.Name, Context.CurrentMethod.Name)); - } - - const BindingFlags _bindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; - - readonly Type _baseType = typeof(DataAccessor); - Type _objectType; - bool _explicitObjectType; - ParameterInfo[] _parameters; - ArrayList _paramList; - ArrayList _refParamList; - bool _createManager; - LocalBuilder _locManager; - LocalBuilder _locObjType; - ArrayList _outputParameters; - SqlQueryAttribute _sqlQueryAttribute; - ArrayList _formatParamList; - ParameterInfo _destination; - ArrayList _mapOutputParameters; - - protected override void BuildAbstractMethod() - { - // Any class variable must be initialized before use - // as the same instance of the class is utilized to build abstract methods. - // - _paramList = new ArrayList(); - _refParamList = new ArrayList(); - _formatParamList = new ArrayList(); - _mapOutputParameters = new ArrayList(); - _destination = null; - _createManager = true; - _objectType = null; - _explicitObjectType = false; - _parameters = Context.CurrentMethod.GetParameters(); - _locManager = Context.MethodBuilder.Emitter.DeclareLocal(typeof(DbManager)); - _locObjType = Context.MethodBuilder.Emitter.DeclareLocal(typeof(Type)); - _outputParameters = null; - _sqlQueryAttribute = null; - - GetSqlQueryAttribute(); - ProcessParameters(); - - Type returnType = MethodReturnType; - ReturnType rt = GetReturnType(returnType); - - CreateDbManager(rt != ReturnType.Enumerable); - SetObjectType(); - - // Define execution method type. - // - switch (rt) - { - case ReturnType.DataReader: ExecuteReader(); break; - case ReturnType.DataSet: ExecuteDataSet(returnType); break; - case ReturnType.DataTable: ExecuteDataTable(); break; - case ReturnType.Void: ExecuteNonQuery(); break; - case ReturnType.Scalar: ExecuteScalar(); break; - case ReturnType.Enumerable: ExecuteEnumerable(); break; - - case ReturnType.List: - - if (!_explicitObjectType) - { - Type elementType = TypeHelper.GetListItemType(returnType); - - if (elementType == typeof(object) && _destination != null) - elementType = TypeHelper.GetListItemType(Context.CurrentMethod.ReturnType); - - if (elementType != typeof(object)) - _objectType = elementType; - - if (ActualTypes.ContainsKey(_objectType)) - _objectType = ActualTypes[_objectType]; - } - - if (_objectType == null || _objectType == typeof(object)) - ThrowTypeBuilderException(Resources.DataAccessorBuilder_BadListItemType); - - if (TypeHelper.IsScalar(_objectType)) - ExecuteScalarList(); - else - ExecuteList(); - - break; - - case ReturnType.Dictionary: - { - Type elementType = null; - Type keyType = typeof(object); - Type[] gTypes = TypeHelper.GetGenericArguments(returnType, typeof(IDictionary)); - - if ((gTypes == null || gTypes.Length != 2) && _destination != null) - gTypes = TypeHelper.GetGenericArguments(_destination.ParameterType, typeof(IDictionary)); - - if (gTypes != null && gTypes.Length == 2) - { - keyType = gTypes[0]; - elementType = gTypes[1]; - } - - if (elementType == null || _explicitObjectType) - elementType = _objectType; - - if (elementType == null || elementType == typeof(object)) - ThrowTypeBuilderException(Resources.DataAccessorBuilder_BadListItemType); - - bool isIndex = TypeHelper.IsSameOrParent(typeof(CompoundValue), keyType); - - if (keyType != typeof(object) && !isIndex && !TypeHelper.IsScalar(keyType)) - ThrowTypeBuilderException( - Resources.DataAccessorBuilder_BadKeyType); - - MethodInfo mi = Context.CurrentMethod; - - object[] attrs = mi.GetCustomAttributes(typeof(IndexAttribute), true); - NameOrIndexParameter[] fields = new NameOrIndexParameter[0]; - - if (attrs.Length != 0) - fields = ((IndexAttribute)attrs[0]).Fields; - - if (fields.Length > 1 && keyType != typeof(object) && !isIndex) - ThrowTypeBuilderException( - Resources.DataAccessor_InvalidKeyType); - - if (TypeHelper.IsScalar(elementType)) - { - attrs = mi.GetCustomAttributes(typeof(ScalarFieldNameAttribute), true); - - if (attrs.Length == 0) - ThrowTypeBuilderException(Resources.DataAccessorBuilder_ScalarFieldNameMissing); - - NameOrIndexParameter scalarField = ((ScalarFieldNameAttribute)attrs[0]).NameOrIndex; - - if (fields.Length == 0) - ExecuteScalarDictionaryWithPK(keyType, scalarField, elementType); - else if (isIndex || fields.Length > 1) - ExecuteScalarDictionaryWithMapIndex(fields, scalarField, elementType); - else - ExecuteScalarDictionaryWithScalarKey(fields[0], keyType, scalarField, elementType); - } - else - { - if (!_explicitObjectType && ActualTypes.ContainsKey(elementType)) - elementType = ActualTypes[elementType]; - - if (fields.Length == 0) - ExecuteDictionaryWithPK(keyType, elementType); - else if (isIndex || fields.Length > 1) - ExecuteDictionaryWithMapIndex(fields, elementType); - else - ExecuteDictionaryWithScalarKey(fields[0], elementType); - } - } - - break; - - default: - - if (_objectType == null) - _objectType = returnType; - - if (!_explicitObjectType && ActualTypes.ContainsKey(_objectType)) - _objectType = ActualTypes[_objectType]; - - ExecuteObject(); - - break; - } - - GetOutRefParameters(); - - if (rt != ReturnType.Enumerable) - Finally(); - } - - protected override void BuildAbstractGetter() - { - BuildAbstractMethod(); - } - - protected override void BuildAbstractSetter() - { - BuildAbstractMethod(); - } - - private void GetSqlQueryAttribute() - { - object[] attrs = Context.CurrentMethod.GetCustomAttributes(typeof(SqlQueryAttribute), true); - - if (attrs.Length != 0) - _sqlQueryAttribute = (SqlQueryAttribute)attrs[0]; - } - - private void AddParameter(ParameterInfo pi) - { - Type pType = pi.ParameterType; - - if (pType.IsByRef) - pType = pType.GetElementType(); - - if (TypeHelper.IsScalar(pType) || pi.IsRefCursor()) - _paramList.Add(pi); - else if (pType == typeof(DbManager) || pType.IsSubclassOf(typeof(DbManager))) - _createManager = false; - else - _refParamList.Add(pi); - } - - private void ProcessParameters() - { - for (int i = 0; i < _parameters.Length; i++) - { - ParameterInfo pi = _parameters[i]; - NoMapAttribute[] attrs = (NoMapAttribute[])pi.GetCustomAttributes(typeof(NoMapAttribute), true); - - if (attrs.Length == 0) - AddParameter(pi); - else - { - for (int j = 0; j < attrs.Length; ++j) - { - if (!attrs[j].NoMap) - AddParameter(pi); - - if (attrs[j] is FormatAttribute) - { - int index = ((FormatAttribute)attrs[j]).Index; - - if (index < 0) - index = 0; - else if (index > _formatParamList.Count) - index = _formatParamList.Count; - - _formatParamList.Insert(index, pi); - } - else if (attrs[j] is DestinationAttribute) - { - if (_destination != null) - throw new TypeBuilderException(Resources.DataAccessorBuilderTooManyDestinations); - - _destination = pi; - } - } - } - } - } - - private void CreateDbManager(bool beginException) - { - EmitHelper emit = Context.MethodBuilder.Emitter; - - if (_createManager) - { - emit - .ldarg_0 - .callvirt(_baseType, "GetDbManager") - .stloc(_locManager); - - if (beginException) - emit.BeginExceptionBlock(); - } - else - { - for (int i = 0; i < _parameters.Length; i++) - { - Type pType = _parameters[i].ParameterType; - - if (pType == typeof(DbManager) || pType.IsSubclassOf(typeof(DbManager))) - { - emit - .ldarg(_parameters[i]) - .stloc(_locManager) - ; - - break; - } - } - } - } - - private void SetObjectType() - { - MethodInfo mi = Context.CurrentMethod; - - object[] attrs = mi.GetCustomAttributes(typeof(ObjectTypeAttribute), true); - - if (attrs.Length == 0) - attrs = mi.DeclaringType.GetCustomAttributes(typeof(ObjectTypeAttribute), true); - else - _explicitObjectType = true; - - if (attrs.Length != 0) - _objectType = ((ObjectTypeAttribute)attrs[0]).ObjectType; - - if (_objectType == null) - { - Type[] types = TypeHelper.GetGenericArguments(mi.DeclaringType, typeof(DataAccessor)); - - if (types != null) - _objectType = types[0]; - } - } - - #region ExecuteReader - - private void ExecuteReader() - { - InitObjectType(); - GetSprocNameOrSqlQueryTest(); - CallSetCommand(); - - object[] attrs = Context.CurrentMethod.GetCustomAttributes(typeof(CommandBehaviorAttribute), true); - - if (attrs.Length == 0) - { - Context.MethodBuilder.Emitter - .callvirt(typeof(DbManager).GetMethod("ExecuteReader", Type.EmptyTypes)) - .stloc(Context.ReturnValue) - ; - } - else - { - Context.MethodBuilder.Emitter - .ldc_i4_((int)((CommandBehaviorAttribute)attrs[0]).CommandBehavior) - .callvirt(typeof(DbManager), "ExecuteReader", typeof(CommandBehavior)) - .stloc(Context.ReturnValue) - ; - } - } - - #endregion - - #region ExecuteDataSet - - private void ExecuteDataSet(Type returnType) - { - CreateReturnTypeInstance(); - InitObjectType(); - GetSprocNameOrSqlQueryTest(); - CallSetCommand(); - - EmitHelper emit = Context.MethodBuilder.Emitter; - - if (returnType == typeof(DataSet)) - { - LoadDestinationOrReturnValue(); - - object[] attrs = Context.CurrentMethod.GetCustomAttributes(typeof(DataSetTableAttribute), true); - - if (attrs.Length == 0) - { - emit - .callvirt(typeof(DbManager), "ExecuteDataSet", typeof(DataSet)) - .pop - .end() - ; - } - else - { - emit - .ldNameOrIndex(((DataSetTableAttribute)attrs[0]).NameOrIndex) - .callvirt(typeof(DbManager), "ExecuteDataSet", typeof(DataSet), typeof(NameOrIndexParameter)) - .pop - .end() - ; - } - } - else - { - emit - .pop - .end() - ; - - LoadDestinationOrReturnValue(); - - Label l1 = emit.DefineLabel(); - Label l2 = emit.DefineLabel(); - - emit - .callvirt(typeof(DataSet).GetProperty("Tables").GetGetMethod()) - .callvirt(typeof(InternalDataCollectionBase).GetProperty("Count").GetGetMethod()) - .ldc_i4_0 - .ble_s(l1) - .ldloc(_locManager); - - LoadDestinationOrReturnValue(); - - object[] attrs = Context.CurrentMethod.GetCustomAttributes(typeof(DataSetTableAttribute), true); - - if (attrs.Length == 0) - { - LoadDestinationOrReturnValue(); - - emit - .callvirt(typeof(DataSet).GetProperty("Tables").GetGetMethod()) - .ldc_i4_0 - .callvirt(typeof(DataTableCollection), "get_Item", typeof(int)) - .callvirt(typeof(DataTable).GetProperty("TableName").GetGetMethod()) - .call(typeof(NameOrIndexParameter), "op_Implicit", typeof(string)) - ; - } - else - { - emit - .ldNameOrIndex(((DataSetTableAttribute)attrs[0]).NameOrIndex) - ; - } - - emit - .callvirt(typeof(DbManager), "ExecuteDataSet", typeof(DataSet), typeof(NameOrIndexParameter)) - .pop - .br_s(l2) - .MarkLabel(l1) - .ldloc(_locManager); - - LoadDestinationOrReturnValue(); - - emit - .callvirt(typeof(DbManager), "ExecuteDataSet", typeof(DataSet)) - .pop - .MarkLabel(l2) - ; - } - } - - #endregion - - #region ExecuteDataTable - - private void ExecuteDataTable() - { - CreateReturnTypeInstance(); - InitObjectType(); - GetSprocNameOrSqlQueryTest(); - CallSetCommand(); - LoadDestinationOrReturnValue(); - - EmitHelper emit = Context.MethodBuilder.Emitter; - - emit - .callvirt(typeof(DbManager), "ExecuteDataTable", typeof(DataTable)) - .pop - .end() - ; - - // When DataSetTableAttribute is present, simply set table name to the name specified. - // - object[] attrs = Context.CurrentMethod.GetCustomAttributes(typeof(DataSetTableAttribute), true); - - if (attrs.Length != 0) - { - DataSetTableAttribute attr = (DataSetTableAttribute)attrs[0]; - - if (!attr.NameOrIndex.ByName) - throw new TypeBuilderException(string.Format( - Resources.DataAccessorBuilder_DataSetTableMustBeByName, - Context.CurrentMethod.DeclaringType.Name, Context.CurrentMethod.Name)); - - LoadDestinationOrReturnValue(); - - emit - .ldstr(attr.NameOrIndex.Name) - .callvirt(typeof(DataTable), "set_TableName", typeof(string)) - ; - } - } - - #endregion - - #region ExecuteScalarList - - private void ExecuteScalarList() - { - CreateReturnTypeInstance(); - InitObjectType(); - GetSprocNameOrSqlQueryTest(); - CallSetCommand(); - LoadDestinationOrReturnValue(); - - object[] attrs = Context.CurrentMethod.GetCustomAttributes(typeof(ScalarFieldNameAttribute), true); - - if (attrs.Length == 0) - { - Context.MethodBuilder.Emitter - .ldloc(_locObjType) - .callvirt(typeof(DbManager), "ExecuteScalarList", typeof(IList), typeof(Type)) - .pop - .end() - ; - } - else - { - Context.MethodBuilder.Emitter - .ldloc(_locObjType) - .ldNameOrIndex(((ScalarFieldNameAttribute)attrs[0]).NameOrIndex) - .callvirt(typeof(DbManager), "ExecuteScalarList", typeof(IList), typeof(Type), typeof(NameOrIndexParameter)) - .pop - .end() - ; - } - } - - private void ExecuteList() - { - CreateReturnTypeInstance(); - InitObjectType(); - GetSprocNameOrSqlQueryTest(); - CallSetCommand(); - LoadDestinationOrReturnValue(); - - Context.MethodBuilder.Emitter - .CastIfNecessary(typeof(IList), MethodReturnType) - .ldloc(_locObjType) - .callvirt(typeof(DbManager), "ExecuteList", typeof(IList), typeof(Type)) - .pop - .end() - ; - } - - #endregion - - #region ExecuteDictionary - - public FieldBuilder GetIndexField(NameOrIndexParameter[] namesOrIndexes) - { - string id = "index$" + string.Join("%", - Array.ConvertAll(namesOrIndexes, - delegate(NameOrIndexParameter nameOrIndex) - { - return nameOrIndex.ToString(); - })); - - FieldBuilder fieldBuilder = Context.GetField(id); - - if (fieldBuilder == null) - { - fieldBuilder = Context.CreatePrivateStaticField(id, typeof(MapIndex)); - - EmitHelper emit = Context.TypeBuilder.TypeInitializer.Emitter; - - emit - .ldc_i4_(namesOrIndexes.Length) - .newarr(typeof(NameOrIndexParameter)) - ; - - for (int i = 0; i < namesOrIndexes.Length; i++) - { - emit - .dup - .ldc_i4_(i) - .ldelema(typeof(NameOrIndexParameter)); - - if (namesOrIndexes[i].ByName) - { - emit - .ldstr(namesOrIndexes[i].Name) - .call(typeof(NameOrIndexParameter), "op_Implicit", typeof(string)); - } - else - { - emit - .ldc_i4_(namesOrIndexes[i].Index) - .call(typeof(NameOrIndexParameter), "op_Implicit", typeof(int)); - } - - emit - .stobj(typeof(NameOrIndexParameter)) - .end() - ; - } - - emit - .newobj(typeof(MapIndex), typeof(NameOrIndexParameter[])) - .stsfld(fieldBuilder) - ; - } - - return fieldBuilder; - } - - /// - /// Maps primary keys(s) to a scalar field. - /// - private void ExecuteScalarDictionaryWithPK( - Type keyType, - NameOrIndexParameter scalarField, - Type elementType) - { - CreateReturnTypeInstance(); - InitObjectType(); - - Context.MethodBuilder.Emitter - .ldarg_0 - .end() - ; - - GetSprocNameOrSqlQueryTest(); - CallSetCommand(); - LoadDestinationOrReturnValue(); - - Context.MethodBuilder.Emitter - .ldloc(_locObjType) - .LoadType(keyType) - .ldstr(Context.CurrentMethod.Name) - .ldNameOrIndex(scalarField) - .LoadType(elementType) - .callvirt(_baseType, "ExecuteScalarDictionary", _bindingFlags, - typeof(DbManager), typeof(IDictionary), typeof(Type), - typeof(Type), typeof(string), typeof(NameOrIndexParameter), typeof(Type)) - ; - } - - /// - /// Maps a complex index to a scalar field. - /// - private void ExecuteScalarDictionaryWithMapIndex( - NameOrIndexParameter[] index, - NameOrIndexParameter scalarField, - Type elementType) - { - _objectType = elementType; - - CreateReturnTypeInstance(); - InitObjectType(); - GetSprocNameOrSqlQueryTest(); - CallSetCommand(); - LoadDestinationOrReturnValue(); - - Context.MethodBuilder.Emitter - .ldsfld(GetIndexField(index)) - .ldNameOrIndex(scalarField) - .ldloc(_locObjType) - .callvirt(typeof(DbManager), "ExecuteScalarDictionary", - typeof(IDictionary), typeof(MapIndex), - typeof(NameOrIndexParameter), typeof(Type)) - .pop - .end() - ; - } - - /// - /// Maps any single field to any (other) single field. - /// - private void ExecuteScalarDictionaryWithScalarKey( - NameOrIndexParameter keyField, Type keyType, - NameOrIndexParameter scalarField, Type elementType) - { - _objectType = elementType; - - CreateReturnTypeInstance(); - InitObjectType(); - GetSprocNameOrSqlQueryTest(); - CallSetCommand(); - LoadDestinationOrReturnValue(); - - Context.MethodBuilder.Emitter - .ldNameOrIndex(keyField) - .LoadType(keyType) - .ldNameOrIndex(scalarField) - .ldloc(_locObjType) - .callvirt(typeof(DbManager), "ExecuteScalarDictionary", - typeof(IDictionary), typeof(NameOrIndexParameter), typeof(Type), - typeof(NameOrIndexParameter), typeof(Type)) - .pop - .end() - ; - } - - /// - /// Maps primary keys(s) to an object of the specified type. - /// - private void ExecuteDictionaryWithPK( - Type keyType, - Type elementType) - { - EmitHelper emit = Context.MethodBuilder.Emitter; - - _objectType = elementType; - - CreateReturnTypeInstance(); - InitObjectType(); - - emit - .ldarg_0 - .end() - ; - - GetSprocNameOrSqlQueryTest(); - CallSetCommand(); - LoadDestinationOrReturnValue(); - - if (IsGenericDestinationOrReturnValue()) - { - Type[] genericArgs = Context.ReturnValue.LocalType.GetGenericArguments(); - Type[] types = new Type[] + public class DataAccessorBuilder : AbstractTypeBuilderBase + { + struct MapOutputParametersValue + { + public readonly string ReturnValueMember; + public readonly ParameterInfo ParameterInfo; + + public MapOutputParametersValue(string returnValueMember, ParameterInfo parameterInfo) + { + ReturnValueMember = returnValueMember; + ParameterInfo = parameterInfo; + } + } + + public override int GetPriority(BuildContext context) + { + return TypeBuilderConsts.Priority.DataAccessor; + } + + public override bool IsApplied(BuildContext context, AbstractTypeBuilderList builders) + { + if (context.IsBuildStep) + { + if (context.IsAbstractMethod) + { + // Give up if there is any builder that builds the method body. + // + if (builders.Count > 1) + foreach (IAbstractTypeBuilder builder in builders) + if (builder != this && builder.IsApplied(context, builders)) + return false; + + return true; + } + + // Treat an abstract getter/setter as a regular method + // when the property has [NoInstance] attribute + // + if (context.IsAbstractGetter || context.IsAbstractSetter) + return context.CurrentProperty.IsDefined(typeof(NoInstanceAttribute), true); + } + + return false; + } + + private Dictionary _actualTypes; + private Dictionary ActualTypes + { + get + { + if (_actualTypes == null) + { + _actualTypes = new Dictionary(); + + object[] attrs = Context.Type.GetAttributes(typeof(ActualTypeAttribute)); + + foreach (ActualTypeAttribute attr in attrs) + if (!_actualTypes.ContainsKey(attr.BaseType)) + _actualTypes.Add(attr.BaseType, attr.ActualType); + } + + return _actualTypes; + } + } + + enum ReturnType + { + DataReader, + DataSet, + DataTable, + List, + Dictionary, + Enumerable, + Void, + Scalar, + Object + } + + static ReturnType GetReturnType(Type returnType) + { + if (returnType == typeof(IDataReader)) + return ReturnType.DataReader; + + if (returnType == typeof(DataSet) || returnType.IsSubclassOf(typeof(DataSet))) + return ReturnType.DataSet; + + if (returnType == typeof(DataTable) || returnType.IsSubclassOf(typeof(DataTable))) + return ReturnType.DataTable; + + if (!returnType.IsArray && + (IsInterfaceOf(returnType, typeof(IList)) || + returnType.IsGenericType && returnType.GetGenericTypeDefinition() == typeof(IList<>))) + return ReturnType.List; + + if (IsInterfaceOf(returnType, typeof(IDictionary)) || + returnType.IsGenericType && returnType.GetGenericTypeDefinition() == typeof(IDictionary<,>)) + return ReturnType.Dictionary; + + if (returnType == typeof(IEnumerable) || + returnType.IsGenericType && returnType.GetGenericTypeDefinition() == typeof(IEnumerable<>)) + return ReturnType.Enumerable; + + if (returnType == typeof(void)) + return ReturnType.Void; + + if (TypeHelper.IsScalar(returnType.IsByRef ? returnType.GetElementType() : returnType)) + return ReturnType.Scalar; + + return ReturnType.Object; + } + + void ThrowTypeBuilderException(string message) + { + throw new TypeBuilderException( + string.Format(message, Context.CurrentMethod.DeclaringType.Name, Context.CurrentMethod.Name)); + } + + const BindingFlags _bindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; + + readonly Type _baseType = typeof(DataAccessor); + Type _objectType; + bool _explicitObjectType; + ParameterInfo[] _parameters; + ArrayList _paramList; + ArrayList _refParamList; + bool _createManager; + LocalBuilder _locManager; + LocalBuilder _locObjType; + ArrayList _outputParameters; + SqlQueryAttribute _sqlQueryAttribute; + ArrayList _formatParamList; + ParameterInfo _destination; + ArrayList _mapOutputParameters; + + protected override void BuildAbstractMethod() + { + // Any class variable must be initialized before use + // as the same instance of the class is utilized to build abstract methods. + // + _paramList = new ArrayList(); + _refParamList = new ArrayList(); + _formatParamList = new ArrayList(); + _mapOutputParameters = new ArrayList(); + _destination = null; + _createManager = true; + _objectType = null; + _explicitObjectType = false; + _parameters = Context.CurrentMethod.GetParameters(); + _locManager = Context.MethodBuilder.Emitter.DeclareLocal(typeof(DbManager)); + _locObjType = Context.MethodBuilder.Emitter.DeclareLocal(typeof(Type)); + _outputParameters = null; + _sqlQueryAttribute = null; + + GetSqlQueryAttribute(); + ProcessParameters(); + + var returnType = MethodReturnType; + var rt = GetReturnType(returnType); + + CreateDbManager(rt != ReturnType.Enumerable); + SetObjectType(); + + // Define execution method type. + // + switch (rt) + { + case ReturnType.DataReader : ExecuteReader(); break; + case ReturnType.DataSet : ExecuteDataSet(returnType); break; + case ReturnType.DataTable : ExecuteDataTable(); break; + case ReturnType.Void : ExecuteNonQuery(); break; + case ReturnType.Scalar : ExecuteScalar(); break; + case ReturnType.Enumerable : ExecuteEnumerable(); break; + + case ReturnType.List: + + if (!_explicitObjectType) + { + Type elementType = TypeHelper.GetListItemType(returnType); + + if (elementType == typeof(object) && _destination != null) + elementType = TypeHelper.GetListItemType(Context.CurrentMethod.ReturnType); + + if (elementType != typeof(object)) + _objectType = elementType; + + if (ActualTypes.ContainsKey(_objectType)) + _objectType = ActualTypes[_objectType]; + } + + if (_objectType == null || _objectType == typeof(object)) + ThrowTypeBuilderException(Resources.DataAccessorBuilder_BadListItemType); + + if (TypeHelper.IsScalar(_objectType)) + ExecuteScalarList(); + else + ExecuteList(); + + break; + + case ReturnType.Dictionary: + { + Type elementType = null; + Type keyType = typeof(object); + Type[] gTypes = TypeHelper.GetGenericArguments(returnType, typeof(IDictionary)); + + if ((gTypes == null || gTypes.Length != 2) && _destination != null) + gTypes = TypeHelper.GetGenericArguments(_destination.ParameterType, typeof(IDictionary)); + + if (gTypes != null && gTypes.Length == 2) + { + keyType = gTypes[0]; + elementType = gTypes[1]; + } + + if (elementType == null || _explicitObjectType) + elementType = _objectType; + + if (elementType == null || elementType == typeof(object)) + ThrowTypeBuilderException(Resources.DataAccessorBuilder_BadListItemType); + + bool isIndex = TypeHelper.IsSameOrParent(typeof(CompoundValue), keyType); + + if (keyType != typeof(object) && !isIndex && !TypeHelper.IsScalar(keyType)) + ThrowTypeBuilderException( + Resources.DataAccessorBuilder_BadKeyType); + + MethodInfo mi = Context.CurrentMethod; + + object[] attrs = mi.GetCustomAttributes(typeof(IndexAttribute), true); + NameOrIndexParameter[] fields = new NameOrIndexParameter[0]; + + if (attrs.Length != 0) + fields = ((IndexAttribute)attrs[0]).Fields; + + if (fields.Length > 1 && keyType != typeof(object) && !isIndex) + ThrowTypeBuilderException( + Resources.DataAccessor_InvalidKeyType); + + if (TypeHelper.IsScalar(elementType)) + { + attrs = mi.GetCustomAttributes(typeof(ScalarFieldNameAttribute), true); + + if (attrs.Length == 0) + ThrowTypeBuilderException(Resources.DataAccessorBuilder_ScalarFieldNameMissing); + + NameOrIndexParameter scalarField = ((ScalarFieldNameAttribute)attrs[0]).NameOrIndex; + + if (fields.Length == 0) + ExecuteScalarDictionaryWithPK(keyType, scalarField, elementType); + else if (isIndex || fields.Length > 1) + ExecuteScalarDictionaryWithMapIndex(fields, scalarField, elementType); + else + ExecuteScalarDictionaryWithScalarKey(fields[0], keyType, scalarField, elementType); + } + else + { + if (!_explicitObjectType && ActualTypes.ContainsKey(elementType)) + elementType = ActualTypes[elementType]; + + if (fields.Length == 0) + ExecuteDictionaryWithPK(keyType, elementType); + else if (isIndex || fields.Length > 1) + ExecuteDictionaryWithMapIndex(fields, elementType); + else + ExecuteDictionaryWithScalarKey(fields[0], elementType); + } + } + + break; + + default: + + if (_objectType == null || !TypeHelper.IsSameOrParent(returnType, _objectType)) + _objectType = returnType; + + if (!_explicitObjectType && ActualTypes.ContainsKey(_objectType)) + _objectType = ActualTypes[_objectType]; + + ExecuteObject(); + + break; + } + + GetOutRefParameters(); + + if (rt != ReturnType.Enumerable) + Finally(); + } + + protected override void BuildAbstractGetter() + { + BuildAbstractMethod(); + } + + protected override void BuildAbstractSetter() + { + BuildAbstractMethod(); + } + + void GetSqlQueryAttribute() + { + object[] attrs = Context.CurrentMethod.GetCustomAttributes(typeof(SqlQueryAttribute), true); + + if (attrs.Length != 0) + _sqlQueryAttribute = (SqlQueryAttribute)attrs[0]; + } + + void AddParameter(ParameterInfo pi) + { + Type pType = pi.ParameterType; + + if (pType.IsByRef) + pType = pType.GetElementType(); + + if (TypeHelper.IsScalar(pType) +#if FW4 + || pi.IsRefCursor() +#endif + ) + _paramList.Add(pi); + else if (pType == typeof(DbManager) || pType.IsSubclassOf(typeof(DbManager))) + _createManager = false; + else + _refParamList.Add(pi); + } + + void ProcessParameters() + { + for (int i = 0; i < _parameters.Length; i++) + { + ParameterInfo pi = _parameters[i]; + NoMapAttribute[] attrs = (NoMapAttribute[])pi.GetCustomAttributes(typeof(NoMapAttribute), true); + + if (attrs.Length == 0) + AddParameter(pi); + else + { + for (int j = 0; j < attrs.Length; ++j) + { + if (!attrs[j].NoMap) + AddParameter(pi); + + if (attrs[j] is FormatAttribute) + { + int index = ((FormatAttribute)attrs[j]).Index; + + if (index < 0) + index = 0; + else if (index > _formatParamList.Count) + index = _formatParamList.Count; + + _formatParamList.Insert(index, pi); + } + else if (attrs[j] is DestinationAttribute) + { + if (_destination != null) + throw new TypeBuilderException(Resources.DataAccessorBuilderTooManyDestinations); + + _destination = pi; + } + } + } + } + } + + void CreateDbManager(bool beginException) + { + EmitHelper emit = Context.MethodBuilder.Emitter; + + if (_createManager) + { + emit + .ldarg_0 + .callvirt(_baseType, "GetDbManager") + .stloc(_locManager); + + if (beginException) + emit.BeginExceptionBlock(); + } + else + { + for (int i = 0; i < _parameters.Length; i++) + { + Type pType = _parameters[i].ParameterType; + + if (pType == typeof(DbManager) || pType.IsSubclassOf(typeof(DbManager))) + { + emit + .ldarg(_parameters[i]) + .stloc(_locManager) + ; + + break; + } + } + } + } + + void SetObjectType() + { + var mi = Context.CurrentMethod; + var attrs = mi.GetCustomAttributes(typeof(ObjectTypeAttribute), true); + + if (attrs.Length == 0) + attrs = mi.DeclaringType.GetCustomAttributes(typeof(ObjectTypeAttribute), true); + else + _explicitObjectType = true; + + if (attrs.Length != 0) + _objectType = ((ObjectTypeAttribute)attrs[0]).ObjectType; + + if (_objectType == null) + { + var types = TypeHelper.GetGenericArguments(mi.DeclaringType, typeof(DataAccessor)); + + if (types != null) + _objectType = types[0]; + } + } + + #region ExecuteReader + + void ExecuteReader() + { + InitObjectType(); + GetSprocNameOrSqlQueryTest(); + CallSetCommand(); + + var attrs = Context.CurrentMethod.GetCustomAttributes(typeof(CommandBehaviorAttribute), true); + + if (attrs.Length == 0) + { + Context.MethodBuilder.Emitter + .callvirt(typeof(DbManager).GetMethod("ExecuteReader", Type.EmptyTypes)) + .stloc(Context.ReturnValue) + ; + } + else + { + Context.MethodBuilder.Emitter + .ldc_i4_((int)((CommandBehaviorAttribute)attrs[0]).CommandBehavior) + .callvirt(typeof(DbManager), "ExecuteReader", typeof(CommandBehavior)) + .stloc(Context.ReturnValue) + ; + } + } + + #endregion + + #region ExecuteDataSet + + void ExecuteDataSet(Type returnType) + { + CreateReturnTypeInstance(); + InitObjectType(); + GetSprocNameOrSqlQueryTest(); + CallSetCommand(); + + var emit = Context.MethodBuilder.Emitter; + + if (returnType == typeof(DataSet)) + { + LoadDestinationOrReturnValue(); + + object[] attrs = Context.CurrentMethod.GetCustomAttributes(typeof(DataSetTableAttribute), true); + + if (attrs.Length == 0) + { + emit + .callvirt(typeof(DbManager), "ExecuteDataSet", typeof(DataSet)) + .pop + .end() + ; + } + else + { + emit + .ldNameOrIndex(((DataSetTableAttribute)attrs[0]).NameOrIndex) + .callvirt(typeof(DbManager), "ExecuteDataSet", typeof(DataSet), typeof(NameOrIndexParameter)) + .pop + .end() + ; + } + } + else + { + emit + .pop + .end() + ; + + LoadDestinationOrReturnValue(); + + Label l1 = emit.DefineLabel(); + Label l2 = emit.DefineLabel(); + + emit + .callvirt(typeof(DataSet).GetProperty("Tables").GetGetMethod()) + .callvirt(typeof(InternalDataCollectionBase).GetProperty("Count").GetGetMethod()) + .ldc_i4_0 + .ble_s(l1) + .ldloc(_locManager); + + LoadDestinationOrReturnValue(); + + object[] attrs = Context.CurrentMethod.GetCustomAttributes(typeof(DataSetTableAttribute), true); + + if (attrs.Length == 0) + { + LoadDestinationOrReturnValue(); + + emit + .callvirt(typeof(DataSet).GetProperty("Tables").GetGetMethod()) + .ldc_i4_0 + .callvirt(typeof(DataTableCollection), "get_Item", typeof(int)) + .callvirt(typeof(DataTable).GetProperty("TableName").GetGetMethod()) + .call(typeof(NameOrIndexParameter), "op_Implicit", typeof(string)) + ; + } + else + { + emit + .ldNameOrIndex(((DataSetTableAttribute)attrs[0]).NameOrIndex) + ; + } + + emit + .callvirt(typeof(DbManager), "ExecuteDataSet", typeof(DataSet), typeof(NameOrIndexParameter)) + .pop + .br_s(l2) + .MarkLabel(l1) + .ldloc(_locManager); + + LoadDestinationOrReturnValue(); + + emit + .callvirt(typeof(DbManager), "ExecuteDataSet", typeof(DataSet)) + .pop + .MarkLabel(l2) + ; + } + } + + #endregion + + #region ExecuteDataTable + + void ExecuteDataTable() + { + CreateReturnTypeInstance(); + InitObjectType(); + GetSprocNameOrSqlQueryTest(); + CallSetCommand(); + LoadDestinationOrReturnValue(); + + EmitHelper emit = Context.MethodBuilder.Emitter; + + emit + .callvirt(typeof(DbManager), "ExecuteDataTable", typeof(DataTable)) + .pop + .end() + ; + + // When DataSetTableAttribute is present, simply set table name to the name specified. + // + object[] attrs = Context.CurrentMethod.GetCustomAttributes(typeof(DataSetTableAttribute), true); + + if (attrs.Length != 0) + { + DataSetTableAttribute attr = (DataSetTableAttribute)attrs[0]; + + if (!attr.NameOrIndex.ByName) + throw new TypeBuilderException(string.Format( + Resources.DataAccessorBuilder_DataSetTableMustBeByName, + Context.CurrentMethod.DeclaringType.Name, Context.CurrentMethod.Name)); + + LoadDestinationOrReturnValue(); + + emit + .ldstr(attr.NameOrIndex.Name) + .callvirt(typeof(DataTable), "set_TableName", typeof(string)) + ; + } + } + + #endregion + + #region ExecuteScalarList + + void ExecuteScalarList() + { + CreateReturnTypeInstance(); + InitObjectType(); + GetSprocNameOrSqlQueryTest(); + CallSetCommand(); + LoadDestinationOrReturnValue(); + + object[] attrs = Context.CurrentMethod.GetCustomAttributes(typeof(ScalarFieldNameAttribute), true); + + if (attrs.Length == 0) + { + Context.MethodBuilder.Emitter + .ldloc(_locObjType) + .callvirt(typeof(DbManager), "ExecuteScalarList", typeof(IList), typeof(Type)) + .pop + .end() + ; + } + else + { + Context.MethodBuilder.Emitter + .ldloc(_locObjType) + .ldNameOrIndex(((ScalarFieldNameAttribute)attrs[0]).NameOrIndex) + .callvirt(typeof(DbManager), "ExecuteScalarList", typeof(IList), typeof(Type), typeof(NameOrIndexParameter)) + .pop + .end() + ; + } + } + + void ExecuteList() + { + CreateReturnTypeInstance(); + InitObjectType(); + GetSprocNameOrSqlQueryTest(); + CallSetCommand(); + LoadDestinationOrReturnValue(); + + Context.MethodBuilder.Emitter + .CastIfNecessary(typeof(IList), MethodReturnType) + .ldloc(_locObjType) + .callvirt(typeof(DbManager), "ExecuteList", typeof(IList), typeof(Type)) + .pop + .end() + ; + } + + #endregion + + #region ExecuteDictionary + + public FieldBuilder GetIndexField(NameOrIndexParameter[] namesOrIndexes) + { + var id = "index$" + string.Join("%", + Array.ConvertAll(namesOrIndexes, + delegate(NameOrIndexParameter nameOrIndex) + { + return nameOrIndex.ToString(); + })); + + var fieldBuilder = Context.GetField(id); + + if (fieldBuilder == null) + { + fieldBuilder = Context.CreatePrivateStaticField(id, typeof(MapIndex)); + + EmitHelper emit = Context.TypeBuilder.TypeInitializer.Emitter; + + emit + .ldc_i4_(namesOrIndexes.Length) + .newarr(typeof(NameOrIndexParameter)) + ; + + for (int i = 0; i < namesOrIndexes.Length; i++) + { + emit + .dup + .ldc_i4_(i) + .ldelema(typeof(NameOrIndexParameter)); + + if (namesOrIndexes[i].ByName) + { + emit + .ldstr(namesOrIndexes[i].Name) + .call(typeof(NameOrIndexParameter), "op_Implicit", typeof(string)); + } + else + { + emit + .ldc_i4_(namesOrIndexes[i].Index) + .call(typeof(NameOrIndexParameter), "op_Implicit", typeof(int)); + } + + emit + .stobj(typeof(NameOrIndexParameter)) + .end() + ; + } + + emit + .newobj(typeof(MapIndex), typeof(NameOrIndexParameter[])) + .stsfld(fieldBuilder) + ; + } + + return fieldBuilder; + } + + /// + /// Maps primary keys(s) to a scalar field. + /// + void ExecuteScalarDictionaryWithPK( + Type keyType, + NameOrIndexParameter scalarField, + Type elementType) + { + CreateReturnTypeInstance(); + InitObjectType(); + + Context.MethodBuilder.Emitter + .ldarg_0 + .end() + ; + + GetSprocNameOrSqlQueryTest(); + CallSetCommand(); + LoadDestinationOrReturnValue(); + + Context.MethodBuilder.Emitter + .ldloc(_locObjType) + .LoadType(keyType) + .ldstr(Context.CurrentMethod.Name) + .ldNameOrIndex(scalarField) + .LoadType(elementType) + .callvirt(_baseType, "ExecuteScalarDictionary", _bindingFlags, + typeof(DbManager), typeof(IDictionary), typeof(Type), + typeof(Type), typeof(string), typeof(NameOrIndexParameter), typeof(Type)) + ; + } + + /// + /// Maps a complex index to a scalar field. + /// + void ExecuteScalarDictionaryWithMapIndex( + NameOrIndexParameter[] index, + NameOrIndexParameter scalarField, + Type elementType) + { + _objectType = elementType; + + CreateReturnTypeInstance(); + InitObjectType(); + GetSprocNameOrSqlQueryTest(); + CallSetCommand(); + LoadDestinationOrReturnValue(); + + Context.MethodBuilder.Emitter + .ldsfld(GetIndexField(index)) + .ldNameOrIndex(scalarField) + .ldloc(_locObjType) + .callvirt(typeof(DbManager), "ExecuteScalarDictionary", + typeof(IDictionary), typeof(MapIndex), + typeof(NameOrIndexParameter), typeof(Type)) + .pop + .end() + ; + } + + /// + /// Maps any single field to any (other) single field. + /// + void ExecuteScalarDictionaryWithScalarKey( + NameOrIndexParameter keyField, Type keyType, + NameOrIndexParameter scalarField, Type elementType) + { + _objectType = elementType; + + CreateReturnTypeInstance(); + InitObjectType(); + GetSprocNameOrSqlQueryTest(); + CallSetCommand(); + LoadDestinationOrReturnValue(); + + Context.MethodBuilder.Emitter + .ldNameOrIndex(keyField) + .LoadType(keyType) + .ldNameOrIndex(scalarField) + .ldloc(_locObjType) + .callvirt(typeof(DbManager), "ExecuteScalarDictionary", + typeof(IDictionary), typeof(NameOrIndexParameter), typeof(Type), + typeof(NameOrIndexParameter), typeof(Type)) + .pop + .end() + ; + } + + /// + /// Maps primary keys(s) to an object of the specified type. + /// + void ExecuteDictionaryWithPK( + Type keyType, + Type elementType) + { + EmitHelper emit = Context.MethodBuilder.Emitter; + + _objectType = elementType; + + CreateReturnTypeInstance(); + InitObjectType(); + + emit + .ldarg_0 + .end() + ; + + GetSprocNameOrSqlQueryTest(); + CallSetCommand(); + LoadDestinationOrReturnValue(); + + if (IsGenericDestinationOrReturnValue()) + { + Type[] genericArgs = Context.ReturnValue.LocalType.GetGenericArguments(); + Type[] types = new Type[] { typeof(DbManager), typeof(IDictionary<,>).MakeGenericType(genericArgs), typeof(Type), typeof(string), }; - MethodInfo method = _baseType.GetMethod("ExecuteDictionary", - _bindingFlags, GenericBinder.Generic, types, null); - - if (TypeHelper.IsSameOrParent(typeof(CompoundValue), genericArgs[0])) - method = method.MakeGenericMethod(genericArgs[1]); - else - method = method.MakeGenericMethod(genericArgs); - - emit - .ldloc(_locObjType) - .ldstr(Context.CurrentMethod.Name) - .callvirt(method) - ; - } - else - - emit - .ldloc(_locObjType) - .LoadType(keyType) - .ldstr(Context.CurrentMethod.Name) - .callvirt(_baseType, "ExecuteDictionary", _bindingFlags, - typeof(DbManager), typeof(IDictionary), typeof(Type), - typeof(Type), typeof(string)) - ; - } - - /// - /// Maps a complex index to an object of the specified type. - /// - private void ExecuteDictionaryWithMapIndex( - NameOrIndexParameter[] index, - Type elementType) - { - _objectType = elementType; - - CreateReturnTypeInstance(); - InitObjectType(); - GetSprocNameOrSqlQueryTest(); - CallSetCommand(); - LoadDestinationOrReturnValue(); - - Context.MethodBuilder.Emitter - .ldsfld(GetIndexField(index)) - .ldloc(_locObjType) - .ldnull - .callvirt(typeof(DbManager), "ExecuteDictionary", - typeof(IDictionary), typeof(MapIndex), typeof(Type), typeof(object[])) - .pop - .end() - ; - } - - /// - /// Maps any single field to object type. - /// - private void ExecuteDictionaryWithScalarKey( - NameOrIndexParameter keyField, - Type elementType) - { - EmitHelper emit = Context.MethodBuilder.Emitter; - - _objectType = elementType; - - CreateReturnTypeInstance(); - InitObjectType(); - GetSprocNameOrSqlQueryTest(); - CallSetCommand(); - LoadDestinationOrReturnValue(); - - if (IsGenericDestinationOrReturnValue()) - { - Type[] genericArgs = Context.ReturnValue.LocalType.GetGenericArguments(); - Type[] types = new Type[] + MethodInfo method = _baseType.GetMethod("ExecuteDictionary", + _bindingFlags, GenericBinder.Generic, types, null); + + if (TypeHelper.IsSameOrParent(typeof(CompoundValue), genericArgs[0])) + method = method.MakeGenericMethod(genericArgs[1]); + else + method = method.MakeGenericMethod(genericArgs); + + emit + .ldloc(_locObjType) + .ldstr(Context.CurrentMethod.Name) + .callvirt(method) + ; + } + else + + emit + .ldloc(_locObjType) + .LoadType(keyType) + .ldstr(Context.CurrentMethod.Name) + .callvirt(_baseType, "ExecuteDictionary", _bindingFlags, + typeof(DbManager), typeof(IDictionary), typeof(Type), + typeof(Type), typeof(string)) + ; + } + + /// + /// Maps a complex index to an object of the specified type. + /// + void ExecuteDictionaryWithMapIndex( + NameOrIndexParameter[] index, + Type elementType) + { + _objectType = elementType; + + CreateReturnTypeInstance(); + InitObjectType(); + GetSprocNameOrSqlQueryTest(); + CallSetCommand(); + LoadDestinationOrReturnValue(); + + Context.MethodBuilder.Emitter + .ldsfld(GetIndexField(index)) + .ldloc(_locObjType) + .ldnull + .callvirt(typeof(DbManager), "ExecuteDictionary", + typeof(IDictionary), typeof(MapIndex), typeof(Type), typeof(object[])) + .pop + .end() + ; + } + + /// + /// Maps any single field to object type. + /// + void ExecuteDictionaryWithScalarKey( + NameOrIndexParameter keyField, + Type elementType) + { + EmitHelper emit = Context.MethodBuilder.Emitter; + + _objectType = elementType; + + CreateReturnTypeInstance(); + InitObjectType(); + GetSprocNameOrSqlQueryTest(); + CallSetCommand(); + LoadDestinationOrReturnValue(); + + if (IsGenericDestinationOrReturnValue()) + { + Type[] genericArgs = Context.ReturnValue.LocalType.GetGenericArguments(); + Type[] types = new Type[] { typeof(IDictionary<,>).MakeGenericType(genericArgs), typeof(NameOrIndexParameter), typeof(Type), typeof(object[]), }; - MethodInfo method = typeof(DbManager).GetMethod("ExecuteDictionary", _bindingFlags, GenericBinder.Generic, types, null) - .MakeGenericMethod(genericArgs); - - emit - .ldNameOrIndex(keyField) - .ldloc(_locObjType) - .ldnull - .callvirt(method) - .pop - .end() - ; - } - else - { - emit - .ldNameOrIndex(keyField) - .ldloc(_locObjType) - .ldnull - .callvirt(typeof(DbManager), "ExecuteDictionary", typeof(IDictionary), typeof(NameOrIndexParameter), typeof(Type), typeof(object[])) - .pop - .end() - ; - } - } - - #endregion - - #region ExecuteEnumerable - - public void ExecuteEnumerable() - { - EmitHelper emit = Context.MethodBuilder.Emitter; - Type returnType = Context.CurrentMethod.ReturnType; - - if (_objectType == null && returnType.IsGenericType) - _objectType = returnType.GetGenericArguments()[0]; - - if (_objectType == null || _objectType == typeof(object)) - ThrowTypeBuilderException(Resources.DataAccessorBuilder_BadListItemType); - - Type returnObjectType = returnType.IsGenericType ? returnType.GetGenericArguments()[0] : _objectType; - - InitObjectType(); - - Context.MethodBuilder.Emitter - .ldarg_0 - .end() - ; - - GetSprocNameOrSqlQueryTest(); - CallSetCommand(); - - Type[] genericArgs = new Type[] { returnObjectType }; - Type[] types = new Type[] { typeof(DbManager), typeof(Type), typeof(bool), }; - MethodInfo method = _baseType - .GetMethod("ExecuteEnumerable", _bindingFlags, GenericBinder.Generic, types, null) - .MakeGenericMethod(genericArgs); - - emit - .LoadType(_objectType) - .ldc_i4_1 - .callvirt(method) - .stloc(Context.ReturnValue) - ; - } - - #endregion - - #region ExecuteNonQuery - - public void ExecuteNonQuery() - { - if (_destination != null) - throw new TypeBuilderException(Resources.DataAccessorBuilder_CantExecuteNonQueryToDestination); - - InitObjectType(); - GetSprocNameOrSqlQueryTest(); - CallSetCommand(); - - MethodInfo mi = typeof(DbManager).GetMethod("ExecuteNonQuery", Type.EmptyTypes); - LocalBuilder locExec = Context.MethodBuilder.Emitter.DeclareLocal(mi.ReturnType); - - Context.MethodBuilder.Emitter - .callvirt(mi) - .stloc(locExec) - ; - - if (Context.ReturnValue != null) - { - Context.MethodBuilder.Emitter - .ldloc(locExec) - .stloc(Context.ReturnValue) - ; - } - } - - #endregion - - #region ExecuteScalar - - public void ExecuteScalar() - { - EmitHelper emit = Context.MethodBuilder.Emitter; - Type returnType = Context.CurrentMethod.ReturnType; - Type scalarType; - - if (_destination != null) - { - if (_destination.ParameterType.IsByRef) - scalarType = _destination.ParameterType.GetElementType(); - else - throw new TypeBuilderException(Resources.DataAccessorBuilder_ScalarDestinationIsNotByRef); - - if (returnType != typeof(void) && !TypeHelper.IsSameOrParent(returnType, scalarType)) - { - // object Foo(out int num) is valid, - // IConvertible Foo(ref int num) is also ok, - // but string Bar(out DateTime dt) is not - // - throw new TypeBuilderException(string.Format( - Resources.DataAccessorBuilder_IncompatibleDestinationType, - returnType.FullName, Context.CurrentMethod.Name, scalarType.FullName)); - } - } - else - scalarType = returnType; - - if (_destination != null) - emit - .ldarg(_destination) - ; - - emit - .ldarg_0 - .ldloc(_locManager) - ; - - InitObjectType(); - GetSprocNameOrSqlQueryTest(); - CallSetCommand(); - - object[] attrs = Context.CurrentMethod.GetCustomAttributes(typeof(ScalarSourceAttribute), true); - - if (attrs.Length == 0) - { - emit - .callvirtNoGenerics(typeof(DbManager), "ExecuteScalar") - ; - } - else - { - ScalarSourceAttribute attr = (ScalarSourceAttribute)attrs[0]; - - emit - .ldc_i4_((int)attr.ScalarType) - .ldNameOrIndex(attr.NameOrIndex) - .callvirtNoGenerics(typeof(DbManager), "ExecuteScalar", typeof(ScalarSourceType), typeof(NameOrIndexParameter)); - } - - MethodInfo converter = GetConverterMethod(scalarType); - - if (converter == null) - { - emit - .LoadType(scalarType) - .ldnull - .callvirt(_baseType, "ConvertChangeType", _bindingFlags, typeof(DbManager), typeof(object), typeof(Type), typeof(object)) - .unboxIfValueType(scalarType) - ; - - } - else - { - emit - .ldnull - .callvirt(converter) - ; - } - - if (_destination != null) - { - emit - .stind(scalarType) - ; - - // The return value and a destination both are present - // - if (Context.ReturnValue != null) - { - emit - .ldargEx(_destination, false) - ; - - if (scalarType != returnType) - emit - .boxIfValueType(scalarType) - .CastFromObject(returnType) - ; - - emit.stloc(Context.ReturnValue) - ; - } - } - else - emit - .stloc(Context.ReturnValue) - ; - } - - #endregion - - #region ExecuteObject - - public void ExecuteObject() - { - InitObjectType(); - GetSprocNameOrSqlQueryTest(); - CallSetCommand(); - - EmitHelper emit = Context.MethodBuilder.Emitter; - - if (_destination != null) - { - emit - .ldarg(_destination) - .callvirt(typeof(DbManager), "ExecuteObject", typeof(Object)) - ; - } - else - { - emit - .ldloc(_locObjType) - .callvirt(typeof(DbManager), "ExecuteObject", typeof(Type)) - ; - } - - if (null != Context.ReturnValue) - { - emit - .castclass(_objectType) - .stloc(Context.ReturnValue) - ; - } - else - { - emit - .pop - .end() - ; - } - } - - #endregion - - private void Finally() - { - if (_createManager) - { - Context.MethodBuilder.Emitter - .BeginFinallyBlock() - .ldarg_0 - .ldloc(_locManager) - .callvirt(_baseType, "Dispose", _bindingFlags, typeof(DbManager)) - .EndExceptionBlock() - ; - } - } - - private void CreateReturnTypeInstance() - { - if (null == Context.ReturnValue) - return; - - if (null != _destination) - { - Context.MethodBuilder.Emitter - .ldarg(_destination) - .CastIfNecessary(Context.ReturnValue.LocalType, _destination.ParameterType) - .stloc(Context.ReturnValue) - ; - } - else - { - Type returnType = Context.CurrentMethod.ReturnType; - - if (returnType.IsInterface) - { - if (IsInterfaceOf(returnType, typeof(IList))) - returnType = typeof(ArrayList); - else if (IsInterfaceOf(returnType, typeof(IDictionary))) - returnType = typeof(Hashtable); - else if (returnType.GetGenericTypeDefinition() == typeof(IList<>)) - returnType = typeof(List<>).MakeGenericType(returnType.GetGenericArguments()); - else if (returnType.GetGenericTypeDefinition() == typeof(IDictionary<,>)) - returnType = typeof(Dictionary<,>).MakeGenericType(returnType.GetGenericArguments()); - } - - ConstructorInfo ci = TypeHelper.GetDefaultConstructor(returnType); - - if (ci == null) - throw new TypeBuilderException(string.Format(Resources.DataAccessorBuilder_CantCreateTypeInstance, - Context.CurrentMethod.ReturnType.FullName)); - - Context.MethodBuilder.Emitter - .newobj(ci) - .stloc(Context.ReturnValue) - ; - } - } - - private Type MethodReturnType - { - get - { - return _destination != null ? - _destination.ParameterType : - Context.CurrentMethod.ReturnType; - } - } - - private void LoadDestinationOrReturnValue() - { - if (_destination != null) - Context.MethodBuilder.Emitter.ldarg(_destination); - else - Context.MethodBuilder.Emitter.ldloc(Context.ReturnValue); - } - - private bool IsGenericDestinationOrReturnValue() - { - return _destination == null ? - Context.ReturnValue.LocalType.IsGenericType : - _destination.ParameterType.IsGenericType; - } - - private void InitObjectType() - { - Context.MethodBuilder.Emitter - .LoadType(_objectType) - .stloc(_locObjType) - ; - } - - static int _nameCounter; - static int _uniqueQueryID; - - private void GetSprocNameOrSqlQueryTest() - { - EmitHelper emit = Context.MethodBuilder.Emitter; - - if (_sqlQueryAttribute != null) - { - emit - .ldloc(_locManager) - ; - - if (_sqlQueryAttribute.ID != int.MinValue) - { - emit - .ldarg_0 - .ldloc(_locManager) - .ldc_i4_(_sqlQueryAttribute.ID) - .ldc_i4_(++_uniqueQueryID) - ; - } - - if (_sqlQueryAttribute.IsDynamic) - { - Type attrType = typeof(SqlQueryAttribute); - FieldBuilder field = Context.CreatePrivateStaticField(attrType + "$" + ++_nameCounter, attrType); - Label isNull = emit.DefineLabel(); - - emit - .ldsfld(field) - .brtrue_s(isNull) - - .ldarg_0 - .call(typeof(MethodBase), "GetCurrentMethod") - .castclass(typeof(MethodInfo)) - .callvirt(_baseType, "GetSqlQueryAttribute", _bindingFlags, typeof(MethodInfo)) - - .stsfld(field) - .MarkLabel(isNull) - - .ldsfld(field) - .ldarg_0 - .ldloc(_locManager) - .callvirt(attrType, "GetSqlText", _bindingFlags, typeof(DataAccessor), typeof(DbManager)) - ; - } - else - { - emit - .ldstr(_sqlQueryAttribute.SqlText) - ; - } - - if (_sqlQueryAttribute.ID != int.MinValue) - { - emit - .callvirt(_baseType, "PrepareSqlQuery", _bindingFlags, - typeof(DbManager), typeof(int), typeof(int), typeof(string)) - ; - } - } - else - { - object[] attrs = Context.CurrentMethod.GetCustomAttributes(typeof(SprocNameAttribute), true); - - if (attrs.Length == 0) - { - attrs = Context.CurrentMethod.GetCustomAttributes(typeof(ActionNameAttribute), true); - - string actionName = attrs.Length == 0 ? - Context.CurrentMethod.Name : ((ActionNameAttribute)attrs[0]).Name; - - // Call GetSpName. - // - emit - .ldloc(_locManager) - .ldarg_0 - .ldloc(_locObjType) - .ldstr(actionName) - .callvirt(_baseType, "GetSpName", _bindingFlags, typeof(Type), typeof(string)) - ; - } - else - { - emit - .ldloc(_locManager) - .ldstr(((SprocNameAttribute)attrs[0]).Name) - ; - } - } - - // string.Format - // - if (_formatParamList.Count > 0) - { - emit - .ldc_i4_(_formatParamList.Count) - .newarr(typeof(object)) - ; - - for (int i = 0; i < _formatParamList.Count; i++) - { - ParameterInfo pi = (ParameterInfo)_formatParamList[i]; - - emit - .dup - .ldc_i4_(i) - .ldarg(pi) - .boxIfValueType(pi.ParameterType) - .stelem_ref - .end() - ; - } - - emit - .call(typeof(string), "Format", typeof(string), typeof(object[])) - ; - } - } - - private void CallSetCommand() - { - EmitHelper emit = Context.MethodBuilder.Emitter; - - // Get DiscoverParametersAttribute. - // - object[] attrs = - Context.CurrentMethod.DeclaringType.GetCustomAttributes(typeof(DiscoverParametersAttribute), true); - - bool discoverParams = false; - - if (_sqlQueryAttribute == null) - { - discoverParams = attrs.Length == 0 ? - false : ((DiscoverParametersAttribute)attrs[0]).Discover; - - attrs = Context.CurrentMethod.GetCustomAttributes(typeof(DiscoverParametersAttribute), true); - - if (attrs.Length != 0) - discoverParams = ((DiscoverParametersAttribute)attrs[0]).Discover; - } - - LocalBuilder locParams = discoverParams ? - BuildParametersWithDiscoverParameters() : - BuildParameters(); - - // Call SetSpCommand. - // - string methodName = _sqlQueryAttribute == null ? "SetSpCommand" : "SetCommand"; - Type paramType = _sqlQueryAttribute == null ? typeof(object[]) : typeof(IDbDataParameter[]); - - emit - .ldloc(locParams) - .callvirt(typeof(DbManager), methodName, _bindingFlags, typeof(string), paramType) - ; - } - - private LocalBuilder BuildParameters() - { - EmitHelper emit = Context.MethodBuilder.Emitter; - - LocalBuilder retParams = emit - .DeclareLocal(typeof(IDbDataParameter[])); - - LocalBuilder locParams = _refParamList.Count > 0 ? - BuildRefParameters() : - BuildSimpleParameters(); - - emit - .ldarg_0 - .ldloc(_locManager) - .ldloc(locParams) - .callvirt(_baseType, "PrepareParameters", _bindingFlags, typeof(DbManager), typeof(object[])) - .stloc(retParams) - ; - - return retParams; - } - - private LocalBuilder BuildSimpleParameters() - { - EmitHelper emit = Context.MethodBuilder.Emitter; - - // Parameters. - // - LocalBuilder locParams = emit.DeclareLocal( - _sqlQueryAttribute == null ? typeof(object[]) : typeof(IDbDataParameter[])); - - emit - .ldc_i4_(_paramList.Count) - .newarr(_sqlQueryAttribute == null ? typeof(object) : typeof(IDbDataParameter)) - ; - - for (int i = 0; i < _paramList.Count; i++) - { - ParameterInfo pi = (ParameterInfo)_paramList[i]; - - emit - .dup - .ldc_i4_(i) - ; - - BuildParameter(pi); - - emit - .stelem_ref - .end() - ; - } - - emit.stloc(locParams); - return locParams; - } - - private FieldBuilder CreateStringArrayField(object[] attrs) - { - if (attrs.Length == 0) - return null; - - List list = new List(); - - foreach (Direction attr in attrs) - if (attr.Members != null) - list.AddRange(attr.Members); - - if (list.Count == 0) - return null; - - list.Sort(string.CompareOrdinal); - - string[] strings = list.ToArray(); - - // There a no limit for a field name length, but Visual Studio Debugger - // may crash on fields with name longer then 256 symbols. - // - string key = "_string_array$" + string.Join("%", strings); - FieldBuilder fieldBuilder = Context.GetField(key); - - if (null == fieldBuilder) - { - fieldBuilder = Context.CreatePrivateStaticField(key, typeof(string[])); - - EmitHelper emit = Context.TypeBuilder.TypeInitializer.Emitter; - - emit - .ldc_i4_(strings.Length) - .newarr(typeof(string)) - ; - - for (int i = 0; i < strings.Length; i++) - { - emit - .dup - .ldc_i4_(i) - .ldstr(strings[i]) - .stelem_ref - .end() - ; - } - - emit - .stsfld(fieldBuilder) - ; - } - - return fieldBuilder; - } - - private FieldBuilder CreateNullValueField(Type type, string value) - { - string key = "_null_value$" + type.FullName + "%" + value; - FieldBuilder fieldBuilder = Context.GetField(key); - - if (null == fieldBuilder) - { - fieldBuilder = Context.CreatePrivateStaticField(key, type); - - EmitHelper emit = Context.TypeBuilder.TypeInitializer.Emitter; - - emit - .LoadType(type) - .call(typeof(TypeDescriptor), "GetConverter", typeof(Type)) - .ldstr(value) - .callvirt(typeof(TypeConverter), "ConvertFromInvariantString", typeof(string)) - .unbox_any(type) - .stsfld(fieldBuilder) - ; - } - - return fieldBuilder; - } - - private LocalBuilder BuildRefParameters() - { - EmitHelper emit = Context.MethodBuilder.Emitter; - - // Parameters. - // - LocalBuilder locParams = emit.DeclareLocal(typeof(object[])); - - emit - .ldc_i4_(_parameters.Length) - .newarr(typeof(object)) - ; - - for (int i = 0; i < _parameters.Length; i++) - { - ParameterInfo pi = _parameters[i]; - - emit - .dup - .ldc_i4_(i) - ; - - if (_paramList.Contains(pi)) - { - BuildParameter(pi); - } - else if (_refParamList.Contains(pi)) - { - bool mapOutputParameters = false; - string returnValueMember = null; - FieldBuilder fieldBuilder; - Type type = - pi.ParameterType == typeof(DataRow) || pi.ParameterType.IsSubclassOf(typeof(DataRow)) ? - typeof(DataRow) : typeof(object); - - emit - .ldarg_0 - .ldloc(_locManager) - .ldarg(pi) - ; - - fieldBuilder = CreateStringArrayField(pi.GetCustomAttributes(typeof(Direction.OutputAttribute), true)); - - if (fieldBuilder != null) - { - emit.ldsfld(fieldBuilder); - mapOutputParameters = true; - } - else - emit.ldnull.end(); - - fieldBuilder = CreateStringArrayField(pi.GetCustomAttributes(typeof(Direction.InputOutputAttribute), true)); - - if (fieldBuilder != null) - { - emit.ldsfld(fieldBuilder); - mapOutputParameters = true; - } - else - emit.ldnull.end(); - - fieldBuilder = CreateStringArrayField(pi.GetCustomAttributes(typeof(Direction.IgnoreAttribute), true)); - - if (fieldBuilder != null) - emit.ldsfld(fieldBuilder); - else - emit.ldnull.end(); - - emit - .ldnull - .callvirt(_baseType, "CreateParameters", _bindingFlags, - typeof(DbManager), type, typeof(string[]), typeof(string[]), typeof(string[]), typeof(IDbDataParameter[])) - ; - - object[] attrs = pi.GetCustomAttributes(typeof(Direction.ReturnValueAttribute), true); - - if (attrs.Length != 0) - returnValueMember = ((Direction.ReturnValueAttribute)attrs[0]).Member; - - if (null != returnValueMember || mapOutputParameters) - _mapOutputParameters.Add(new MapOutputParametersValue(returnValueMember, pi)); - } - else - { - emit - .ldnull - .end() - ; - } - - emit - .stelem_ref - .end() - ; - } - - emit.stloc(locParams); - return locParams; - } - - private void LoadParameterOrNull(ParameterInfo pi, Type type) - { - EmitHelper emit = Context.MethodBuilder.Emitter; - object[] attrs = pi.GetCustomAttributes(typeof(ParamNullValueAttribute), true); - - object nullValue = attrs.Length == 0 ? - null : ((ParamNullValueAttribute)attrs[0]).Value; - - Label labelNull = emit.DefineLabel(); - Label labelEndIf = emit.DefineLabel(); - - if (pi.Attributes == ParameterAttributes.Out) - { - emit - .ldnull - .end() - ; - - return; - } - - if (nullValue != null) - { - Type nullValueType = type; - bool isNullable = TypeHelper.IsNullable(type); - - if (type.IsEnum) - { - nullValueType = Enum.GetUnderlyingType(type); - nullValue = System.Convert.ChangeType(nullValue, nullValueType); - } - else if (isNullable) - { - nullValueType = type.GetGenericArguments()[0]; - - emit - .ldarga(pi) - .call(type, "get_HasValue") - .brfalse(labelNull) - ; - } - - if (nullValueType == nullValue.GetType() && emit.LoadWellKnownValue(nullValue)) - { - if (nullValueType == typeof(string)) - emit - .ldargEx(pi, false) - .call(nullValueType, "Equals", nullValueType) - .brtrue(labelNull) - ; - else if (isNullable) - emit - .ldarga(pi) - .call(type, "get_Value") - .beq(labelNull) - ; - else - emit - .ldargEx(pi, false) - .beq(labelNull) - ; - } - else - { - string nullString = TypeDescriptor.GetConverter(nullValue).ConvertToInvariantString(nullValue); - FieldBuilder staticField = CreateNullValueField(nullValueType, nullString); - MethodInfo miEquals = new TypeHelper(nullValueType).GetPublicMethod("Equals", nullValueType); - - if (miEquals == null) - { - // Is it possible? - // - throw new TypeBuilderException(string.Format( - Resources.DataAccessorBuilder_EqualsMethodIsNotPublic, type.FullName)); - } - - if (isNullable) - emit - .ldsflda(staticField) - .ldarga(pi) - .call(pi.ParameterType, "get_Value") - ; - else - emit - .ldsflda(staticField) - .ldarg(pi) - ; - - if (miEquals.GetParameters()[0].ParameterType.IsClass) - emit - .boxIfValueType(nullValueType) - ; - - emit - .call(miEquals) - .brtrue(labelNull) - ; - } - } - - if (type.IsEnum) - emit - .ldloc(_locManager) - .callvirt(typeof(DbManager).GetProperty("MappingSchema").GetGetMethod()) - ; - - emit - .ldargEx(pi, true) - ; - - if (type.IsEnum) - emit - .ldc_i4_1 - .callvirt(typeof(MappingSchema), "MapEnumToValue", typeof(object), typeof(bool)) - ; - - if (nullValue != null) - { - emit - .br(labelEndIf) - .MarkLabel(labelNull) - .ldnull - .MarkLabel(labelEndIf) - ; - } - } - - private void BuildParameter(ParameterInfo pi) - { - EmitHelper emit = Context.MethodBuilder.Emitter; - Type type = pi.ParameterType; - object[] attrs = pi.GetCustomAttributes(typeof(ParamNameAttribute), true); - string paramName = attrs.Length == 0 ? pi.Name : ((ParamNameAttribute)attrs[0]).Name; - - ParameterDirection direction = !type.IsByRef ? ParameterDirection.Input : - pi.IsOut ? ParameterDirection.Output : ParameterDirection.InputOutput; - - emit - .ldloc(_locManager) - .ldc_i4_((int)direction) - ; - - if (paramName[0] != '@') - { - string methodName = _sqlQueryAttribute == null ? "GetSpParameterName" : "GetQueryParameterName"; - emit - .ldarg_0 - .ldloc(_locManager) - .ldstr(paramName) - .callvirt(_baseType, methodName, _bindingFlags, typeof(DbManager), typeof(string)) - ; - } - else - emit.ldstr(paramName); - - if (type.IsByRef) - { - if (_outputParameters == null) - _outputParameters = new ArrayList(); - - _outputParameters.Add(pi); - - type = type.GetElementType(); - } - - LoadParameterOrNull(pi, type); - - // Special case for user-defined types. - // - attrs = pi.GetCustomAttributes(typeof(ParamTypeNameAttribute), true); - if (attrs.Length > 0) - { - emit - .ldstr(((ParamTypeNameAttribute)attrs[0]).TypeName) - .callvirt(typeof(DbManager), "Parameter", - typeof(ParameterDirection), typeof(string), typeof(object), typeof(string)) - ; - } - else - { - emit - .callvirt(typeof(DbManager), "Parameter", - typeof(ParameterDirection), typeof(string), typeof(object)) - ; - } - - // Check if parameter type/size is specified. - // - attrs = pi.GetCustomAttributes(typeof(ParamDbTypeAttribute), true); - if (attrs.Length > 0) - { - emit - .dup - .ldc_i4_((int)((ParamDbTypeAttribute)attrs[0]).DbType) - .callvirt(typeof(IDataParameter), "set_DbType", typeof(DbType)) - ; - } - - attrs = pi.GetCustomAttributes(typeof(ParamSizeAttribute), true); - if (attrs.Length > 0) - { - emit - .dup - .ldc_i4_(((ParamSizeAttribute)attrs[0]).Size) - .callvirt(typeof(IDbDataParameter), "set_Size", typeof(int)) - ; - } - } - - private LocalBuilder BuildParametersWithDiscoverParameters() - { - EmitHelper emit = Context.MethodBuilder.Emitter; - LocalBuilder locParams = emit.DeclareLocal(typeof(object[])); - - emit - .ldc_i4_(_paramList.Count) - .newarr(typeof(object)) - ; - - for (int i = 0; i < _paramList.Count; i++) - { - ParameterInfo pi = (ParameterInfo)_paramList[i]; - - emit - .dup - .ldc_i4_(i) - ; - - LoadParameterOrNull(pi, pi.ParameterType); - - emit - .stelem_ref - .end() - ; - } - - emit.stloc(locParams); - return locParams; - } - - private void StoreParameterValue(LocalBuilder param, ParameterInfo pi, Type type) - { - EmitHelper emit = Context.MethodBuilder.Emitter; - Label labelNull = emit.DefineLabel(); - Label labelEndIf = emit.DefineLabel(); - - object[] attrs = pi.GetCustomAttributes(typeof(ParamNullValueAttribute), true); - object nullValue = attrs.Length == 0 ? null : ((ParamNullValueAttribute)attrs[0]).Value; - - if (nullValue != null) - { - emit - .ldarg_0 - .ldloc(_locManager) - .ldloc(param) - .callvirt(typeof(IDataParameter).GetProperty("Value").GetGetMethod()) - .ldloc(param) - .callvirt(_baseType, "IsNull", _bindingFlags, typeof(DbManager), typeof(object), typeof(object)) - .brtrue(labelNull) - ; - } - - if (type.IsEnum) - { - emit - .ldloc(_locManager) - .callvirt(typeof(DbManager).GetProperty("MappingSchema").GetGetMethod()) - .ldloc(param) - .callvirt(typeof(IDataParameter).GetProperty("Value").GetGetMethod()) - .LoadType(type) - .callvirt(typeof(MappingSchema), "MapValueToEnum", typeof(object), typeof(Type)) - .CastFromObject(type) - ; - } - else if (pi.IsRefCursor()) - { - // Make sure the parameter is a List - if (!type.GetInterfaces().Contains(typeof(IList))) - { - throw new Exception("The argument '" + pi.Name + "' must be of type 'IList'"); - } - //Get the generic type of the list - Type genericType = type.GetGenericArguments().First(); - - - // Get the data reader to the ref cursor - var dataReader = emit.DeclareLocal(typeof(IDataReader)); - emit - .ldloc(_locManager) - .callvirt(typeof(DbManager).GetProperty("DataProvider").GetGetMethod()) - .ldloc(param) - .callvirt(typeof(IDataParameter).GetProperty("Value").GetGetMethod()) - .callvirt(typeof(DataProviderBase), "GetRefCursorDataReader", typeof(object)) - .CastFromObject(typeof(IDataReader)) - .stloc(dataReader) - ; - - // Create the generic methos info to invoke - var mapDataReaderToListMethodInfo = typeof (MappingSchema).GetMethod("MapDataReaderToList", - new[] - { - typeof (IDataReader), - typeof (object[]) - }) - .MakeGenericMethod(genericType); - - // Run MapDataReaderToList - emit - .ldloc(_locManager) - .callvirt(typeof(DbManager).GetProperty("MappingSchema").GetGetMethod()) - .ldloc(dataReader) - .ldnull - .callvirt(mapDataReaderToListMethodInfo) - ; - } - else - { - emit - .ldarg_0 - .ldloc(_locManager) - .ldloc(param) - .callvirt(typeof(IDataParameter).GetProperty("Value").GetGetMethod()) - ; - - MethodInfo converter = GetConverterMethod(type); - - if (converter == null) - { - emit - .LoadType(type) - .ldloc(param) - .callvirt(_baseType, "ConvertChangeType", _bindingFlags, typeof(DbManager), typeof(object), typeof(Type), typeof(object)) - .unboxIfValueType(type) - ; - } - else - { - emit - .ldloc(param) - .callvirt(converter) - ; - } - } - - if (nullValue != null) - { - emit - .br(labelEndIf) - .MarkLabel(labelNull); - - if (nullValue.GetType() != type || !emit.LoadWellKnownValue(nullValue)) - { - string nullString = TypeDescriptor.GetConverter(type).ConvertToInvariantString(nullValue); - FieldBuilder staticField = CreateNullValueField(type, nullString); - - emit - .ldsfld(staticField) - ; - } - - emit - .MarkLabel(labelEndIf) - ; - } - - emit.stind(type); - } - - private void GetOutRefParameters() - { - EmitHelper emit = Context.MethodBuilder.Emitter; - - if (_outputParameters != null) - { - LocalBuilder param = emit.DeclareLocal(typeof(IDataParameter)); - - foreach (ParameterInfo pi in _outputParameters) - { - Type type = pi.ParameterType.GetElementType(); - - emit - .ldarg(pi) - ; - - // Get parameter. - // - object[] attrs = pi.GetCustomAttributes(typeof(ParamNameAttribute), true); - - string paramName = attrs.Length == 0 ? - pi.Name : ((ParamNameAttribute)attrs[0]).Name; - - emit - .ldarg_0 - .ldloc(_locManager) - ; - - if (paramName[0] != '@') - { - string methodName = _sqlQueryAttribute == null ? "GetSpParameterName" : "GetQueryParameterName"; - - emit - .ldarg_0 - .ldloc(_locManager) - .ldstr(paramName) - .callvirt(_baseType, methodName, _bindingFlags, typeof(DbManager), typeof(string)) - ; - } - else - emit.ldstr(paramName); - - emit - .callvirt(_baseType, "GetParameter", _bindingFlags, typeof(DbManager), typeof(string)) - .stloc(param) - ; - - StoreParameterValue(param, pi, type); - } - } - - foreach (MapOutputParametersValue v in _mapOutputParameters) - { - emit - .ldloc(_locManager) - .ldstrEx(v.ReturnValueMember) - .ldarg(v.ParameterInfo) - .callvirt(typeof(DbManager), "MapOutputParameters", typeof(string), typeof(object)); - } - } - - private static bool IsInterfaceOf(Type type, Type interfaceType) - { - Type[] types = type.GetInterfaces(); - - foreach (Type t in types) - if (t == interfaceType) - return true; - - return type == interfaceType; - } - - private MethodInfo GetConverterMethod(Type type) - { - if (type.IsEnum) - type = Enum.GetUnderlyingType(type); - - Type[] types = new Type[] { typeof(DbManager), typeof(object), typeof(object) }; - return _baseType.GetMethod("ConvertTo" + type.Name, _bindingFlags, null, types, null); - } - } + MethodInfo method = typeof(DbManager).GetMethod("ExecuteDictionary", _bindingFlags, GenericBinder.Generic, types, null) + .MakeGenericMethod(genericArgs); + + emit + .ldNameOrIndex(keyField) + .ldloc(_locObjType) + .ldnull + .callvirt(method) + .pop + .end() + ; + } + else + { + emit + .ldNameOrIndex(keyField) + .ldloc(_locObjType) + .ldnull + .callvirt(typeof(DbManager), "ExecuteDictionary", typeof(IDictionary), typeof(NameOrIndexParameter), typeof(Type), typeof(object[])) + .pop + .end() + ; + } + } + + #endregion + + #region ExecuteEnumerable + + public void ExecuteEnumerable() + { + EmitHelper emit = Context.MethodBuilder.Emitter; + Type returnType = Context.CurrentMethod.ReturnType; + + if (_objectType == null && returnType.IsGenericType) + _objectType = returnType.GetGenericArguments()[0]; + + if (_objectType == null || _objectType == typeof(object)) + ThrowTypeBuilderException(Resources.DataAccessorBuilder_BadListItemType); + + Type returnObjectType = returnType.IsGenericType ? returnType.GetGenericArguments()[0] : _objectType; + + InitObjectType(); + + Context.MethodBuilder.Emitter + .ldarg_0 + .end() + ; + + GetSprocNameOrSqlQueryTest(); + CallSetCommand(); + + Type[] genericArgs = new Type[] { returnObjectType }; + Type[] types = new Type[] { typeof(DbManager), typeof(Type), typeof(bool), }; + MethodInfo method = _baseType + .GetMethod("ExecuteEnumerable", _bindingFlags, GenericBinder.Generic, types, null) + .MakeGenericMethod(genericArgs); + + emit + .LoadType(_objectType) + .ldc_i4_1 + .callvirt(method) + .stloc(Context.ReturnValue) + ; + } + + #endregion + + #region ExecuteNonQuery + + public void ExecuteNonQuery() + { + if (_destination != null) + throw new TypeBuilderException(Resources.DataAccessorBuilder_CantExecuteNonQueryToDestination); + + InitObjectType(); + GetSprocNameOrSqlQueryTest(); + CallSetCommand(); + + MethodInfo mi = typeof(DbManager).GetMethod("ExecuteNonQuery", Type.EmptyTypes); + LocalBuilder locExec = Context.MethodBuilder.Emitter.DeclareLocal(mi.ReturnType); + + Context.MethodBuilder.Emitter + .callvirt(mi) + .stloc(locExec) + ; + + if (Context.ReturnValue != null) + { + Context.MethodBuilder.Emitter + .ldloc(locExec) + .stloc(Context.ReturnValue) + ; + } + } + + #endregion + + #region ExecuteScalar + + public void ExecuteScalar() + { + EmitHelper emit = Context.MethodBuilder.Emitter; + Type returnType = Context.CurrentMethod.ReturnType; + Type scalarType; + + if (_destination != null) + { + if (_destination.ParameterType.IsByRef) + scalarType = _destination.ParameterType.GetElementType(); + else + throw new TypeBuilderException(Resources.DataAccessorBuilder_ScalarDestinationIsNotByRef); + + if (returnType != typeof(void) && !TypeHelper.IsSameOrParent(returnType, scalarType)) + { + // object Foo(out int num) is valid, + // IConvertible Foo(ref int num) is also ok, + // but string Bar(out DateTime dt) is not + // + throw new TypeBuilderException(string.Format( + Resources.DataAccessorBuilder_IncompatibleDestinationType, + returnType.FullName, Context.CurrentMethod.Name, scalarType.FullName)); + } + } + else + scalarType = returnType; + + if (_destination != null) + emit + .ldarg(_destination) + ; + + emit + .ldarg_0 + .ldloc(_locManager) + ; + + InitObjectType(); + GetSprocNameOrSqlQueryTest(); + CallSetCommand(); + + object[] attrs = Context.CurrentMethod.GetCustomAttributes(typeof(ScalarSourceAttribute), true); + + if (attrs.Length == 0) + { + emit + .callvirtNoGenerics(typeof(DbManager), "ExecuteScalar") + ; + } + else + { + ScalarSourceAttribute attr = (ScalarSourceAttribute)attrs[0]; + + emit + .ldc_i4_((int)attr.ScalarType) + .ldNameOrIndex(attr.NameOrIndex) + .callvirtNoGenerics(typeof(DbManager), "ExecuteScalar", typeof(ScalarSourceType), typeof(NameOrIndexParameter)); + } + + MethodInfo converter = GetConverterMethod(scalarType); + + if (converter == null) + { + emit + .LoadType(scalarType) + .ldnull + .callvirt(_baseType, "ConvertChangeType", _bindingFlags, typeof(DbManager), typeof(object), typeof(Type), typeof(object)) + .unboxIfValueType(scalarType) + ; + + } + else + { + emit + .ldnull + .callvirt(converter) + ; + } + + if (_destination != null) + { + emit + .stind(scalarType) + ; + + // The return value and a destination both are present + // + if (Context.ReturnValue != null) + { + emit + .ldargEx(_destination, false) + ; + + if (scalarType != returnType) + emit + .boxIfValueType(scalarType) + .CastFromObject(returnType) + ; + + emit.stloc(Context.ReturnValue) + ; + } + } + else + emit + .stloc(Context.ReturnValue) + ; + } + + #endregion + + #region ExecuteObject + + public void ExecuteObject() + { + InitObjectType(); + GetSprocNameOrSqlQueryTest(); + CallSetCommand(); + + EmitHelper emit = Context.MethodBuilder.Emitter; + + if (_destination != null) + { + emit + .ldarg(_destination) + .callvirt(typeof(DbManager), "ExecuteObject", typeof(Object)) + ; + } + else + { + emit + .ldloc(_locObjType) + .callvirt(typeof(DbManager), "ExecuteObject", typeof(Type)) + ; + } + + if (null != Context.ReturnValue) + { + emit + .castclass(_objectType) + .stloc(Context.ReturnValue) + ; + } + else + { + emit + .pop + .end() + ; + } + } + + #endregion + + void Finally() + { + if (_createManager) + { + Context.MethodBuilder.Emitter + .BeginFinallyBlock() + .ldarg_0 + .ldloc(_locManager) + .callvirt(_baseType, "Dispose", _bindingFlags, typeof(DbManager)) + .EndExceptionBlock() + ; + } + } + + void CreateReturnTypeInstance() + { + if (null == Context.ReturnValue) + return; + + if (null != _destination) + { + Context.MethodBuilder.Emitter + .ldarg(_destination) + .CastIfNecessary(Context.ReturnValue.LocalType, _destination.ParameterType) + .stloc(Context.ReturnValue) + ; + } + else + { + Type returnType = Context.CurrentMethod.ReturnType; + + if (returnType.IsInterface) + { + if (IsInterfaceOf(returnType, typeof(IList))) + returnType = typeof(ArrayList); + else if (IsInterfaceOf(returnType, typeof(IDictionary))) + returnType = typeof(Hashtable); + else if (returnType.GetGenericTypeDefinition() == typeof(IList<>)) + returnType = typeof(List<>).MakeGenericType(returnType.GetGenericArguments()); + else if (returnType.GetGenericTypeDefinition() == typeof(IDictionary<,>)) + returnType = typeof(Dictionary<,>).MakeGenericType(returnType.GetGenericArguments()); + } + + ConstructorInfo ci = TypeHelper.GetDefaultConstructor(returnType); + + if (ci == null) + throw new TypeBuilderException(string.Format(Resources.DataAccessorBuilder_CantCreateTypeInstance, + Context.CurrentMethod.ReturnType.FullName)); + + Context.MethodBuilder.Emitter + .newobj(ci) + .stloc(Context.ReturnValue) + ; + } + } + + Type MethodReturnType + { + get + { + return _destination != null ? + _destination.ParameterType : + Context.CurrentMethod.ReturnType; + } + } + + void LoadDestinationOrReturnValue() + { + if (_destination != null) + Context.MethodBuilder.Emitter.ldarg(_destination); + else + Context.MethodBuilder.Emitter.ldloc(Context.ReturnValue); + } + + bool IsGenericDestinationOrReturnValue() + { + return _destination == null ? + Context.ReturnValue.LocalType.IsGenericType : + _destination.ParameterType.IsGenericType; + } + + void InitObjectType() + { + Context.MethodBuilder.Emitter + .LoadType(_objectType) + .stloc(_locObjType) + ; + } + + static int _nameCounter; + static int _uniqueQueryID; + + void GetSprocNameOrSqlQueryTest() + { + EmitHelper emit = Context.MethodBuilder.Emitter; + + if (_sqlQueryAttribute != null) + { + emit + .ldloc(_locManager) + ; + + if (_sqlQueryAttribute.ID != int.MinValue) + { + emit + .ldarg_0 + .ldloc(_locManager) + .ldc_i4_(_sqlQueryAttribute.ID) + .ldc_i4_(++_uniqueQueryID) + ; + } + + if (_sqlQueryAttribute.IsDynamic) + { + Type attrType = typeof(SqlQueryAttribute); + FieldBuilder field = Context.CreatePrivateStaticField(attrType + "$" + ++_nameCounter, attrType); + Label isNull = emit.DefineLabel(); + + emit + .ldsfld(field) + .brtrue_s(isNull) + + .ldarg_0 + .call(typeof(MethodBase), "GetCurrentMethod") + .castclass(typeof(MethodInfo)) + .callvirt(_baseType, "GetSqlQueryAttribute", _bindingFlags, typeof(MethodInfo)) + + .stsfld(field) + .MarkLabel(isNull) + + .ldsfld(field) + .ldarg_0 + .ldloc(_locManager) + .callvirt(attrType, "GetSqlText", _bindingFlags, typeof(DataAccessor), typeof(DbManager)) + ; + } + else + { + emit + .ldstr(_sqlQueryAttribute.SqlText) + ; + } + + if (_sqlQueryAttribute.ID != int.MinValue) + { + emit + .callvirt(_baseType, "PrepareSqlQuery", _bindingFlags, + typeof(DbManager), typeof(int), typeof(int), typeof(string)) + ; + } + } + else + { + object[] attrs = Context.CurrentMethod.GetCustomAttributes(typeof(SprocNameAttribute), true); + + if (attrs.Length == 0) + { + attrs = Context.CurrentMethod.GetCustomAttributes(typeof(ActionNameAttribute), true); + + string actionName = attrs.Length == 0 ? + Context.CurrentMethod.Name : ((ActionNameAttribute)attrs[0]).Name; + + // Call GetSpName. + // + emit + .ldloc(_locManager) + .ldarg_0 + .ldloc(_locObjType) + .ldstr(actionName) + .callvirt(_baseType, "GetSpName", _bindingFlags, typeof(Type), typeof(string)) + ; + } + else + { + emit + .ldloc(_locManager) + .ldstr(((SprocNameAttribute)attrs[0]).Name) + ; + } + } + + // string.Format + // + if (_formatParamList.Count > 0) + { + emit + .ldc_i4_(_formatParamList.Count) + .newarr(typeof(object)) + ; + + for (int i = 0; i < _formatParamList.Count; i++) + { + ParameterInfo pi = (ParameterInfo)_formatParamList[i]; + + emit + .dup + .ldc_i4_(i) + .ldarg(pi) + .boxIfValueType(pi.ParameterType) + .stelem_ref + .end() + ; + } + + emit + .call(typeof(string), "Format", typeof(string), typeof(object[])) + ; + } + } + + void CallSetCommand() + { + EmitHelper emit = Context.MethodBuilder.Emitter; + + // Get DiscoverParametersAttribute. + // + object[] attrs = + Context.CurrentMethod.DeclaringType.GetCustomAttributes(typeof(DiscoverParametersAttribute), true); + + bool discoverParams = false; + + if (_sqlQueryAttribute == null) + { + discoverParams = attrs.Length == 0 ? + false : ((DiscoverParametersAttribute)attrs[0]).Discover; + + attrs = Context.CurrentMethod.GetCustomAttributes(typeof(DiscoverParametersAttribute), true); + + if (attrs.Length != 0) + discoverParams = ((DiscoverParametersAttribute)attrs[0]).Discover; + } + + LocalBuilder locParams = discoverParams ? + BuildParametersWithDiscoverParameters() : + BuildParameters(); + + // Call SetSpCommand. + // + string methodName = _sqlQueryAttribute == null ? "SetSpCommand" : "SetCommand"; + Type paramType = _sqlQueryAttribute == null ? typeof(object[]) : typeof(IDbDataParameter[]); + + emit + .ldloc(locParams) + .callvirt(typeof(DbManager), methodName, _bindingFlags, typeof(string), paramType) + ; + } + + LocalBuilder BuildParameters() + { + EmitHelper emit = Context.MethodBuilder.Emitter; + + LocalBuilder retParams = emit + .DeclareLocal(typeof(IDbDataParameter[])); + + LocalBuilder locParams = _refParamList.Count > 0 ? + BuildRefParameters() : + BuildSimpleParameters(); + + emit + .ldarg_0 + .ldloc(_locManager) + .ldloc(locParams) + .callvirt(_baseType, "PrepareParameters", _bindingFlags, typeof(DbManager), typeof(object[])) + .stloc(retParams) + ; + + return retParams; + } + + LocalBuilder BuildSimpleParameters() + { + EmitHelper emit = Context.MethodBuilder.Emitter; + + // Parameters. + // + LocalBuilder locParams = emit.DeclareLocal( + _sqlQueryAttribute == null ? typeof(object[]) : typeof(IDbDataParameter[])); + + emit + .ldc_i4_(_paramList.Count) + .newarr(_sqlQueryAttribute == null ? typeof(object) : typeof(IDbDataParameter)) + ; + + for (int i = 0; i < _paramList.Count; i++) + { + ParameterInfo pi = (ParameterInfo)_paramList[i]; + + emit + .dup + .ldc_i4_(i) + ; + + BuildParameter(pi); + + emit + .stelem_ref + .end() + ; + } + + emit.stloc(locParams); + return locParams; + } + + FieldBuilder CreateStringArrayField(object[] attrs) + { + if (attrs.Length == 0) + return null; + + List list = new List(); + + foreach (Direction attr in attrs) + if (attr.Members != null) + list.AddRange(attr.Members); + + if (list.Count == 0) + return null; + + list.Sort(string.CompareOrdinal); + + string[] strings = list.ToArray(); + + // There a no limit for a field name length, but Visual Studio Debugger + // may crash on fields with name longer then 256 symbols. + // + string key = "_string_array$" + string.Join("%", strings); + FieldBuilder fieldBuilder = Context.GetField(key); + + if (null == fieldBuilder) + { + fieldBuilder = Context.CreatePrivateStaticField(key, typeof(string[])); + + EmitHelper emit = Context.TypeBuilder.TypeInitializer.Emitter; + + emit + .ldc_i4_(strings.Length) + .newarr(typeof(string)) + ; + + for (int i = 0; i < strings.Length; i++) + { + emit + .dup + .ldc_i4_(i) + .ldstr(strings[i]) + .stelem_ref + .end() + ; + } + + emit + .stsfld(fieldBuilder) + ; + } + + return fieldBuilder; + } + + FieldBuilder CreateNullValueField(Type type, string value) + { + string key = "_null_value$" + type.FullName + "%" + value; + FieldBuilder fieldBuilder = Context.GetField(key); + + if (null == fieldBuilder) + { + fieldBuilder = Context.CreatePrivateStaticField(key, type); + + EmitHelper emit = Context.TypeBuilder.TypeInitializer.Emitter; + + emit + .LoadType(type) + .call(typeof(TypeDescriptor), "GetConverter", typeof(Type)) + .ldstr(value) + .callvirt(typeof(TypeConverter), "ConvertFromInvariantString", typeof(string)) + .unbox_any(type) + .stsfld(fieldBuilder) + ; + } + + return fieldBuilder; + } + + LocalBuilder BuildRefParameters() + { + EmitHelper emit = Context.MethodBuilder.Emitter; + + // Parameters. + // + LocalBuilder locParams = emit.DeclareLocal(typeof(object[])); + + emit + .ldc_i4_(_parameters.Length) + .newarr(typeof(object)) + ; + + for (int i = 0; i < _parameters.Length; i++) + { + ParameterInfo pi = _parameters[i]; + + emit + .dup + .ldc_i4_(i) + ; + + if (_paramList.Contains(pi)) + { + BuildParameter(pi); + } + else if (_refParamList.Contains(pi)) + { + var mapOutputParameters = false; + string returnValueMember = null; + FieldBuilder fieldBuilder; + var type = + pi.ParameterType == typeof(DataRow) || pi.ParameterType.IsSubclassOf(typeof(DataRow)) ? + typeof(DataRow) : typeof(object); + + emit + .ldarg_0 + .ldloc(_locManager) + .ldarg(pi) + ; + + fieldBuilder = CreateStringArrayField(pi.GetCustomAttributes(typeof(Direction.OutputAttribute), true)); + + if (fieldBuilder != null) + { + emit.ldsfld(fieldBuilder); + mapOutputParameters = true; + } + else + emit.ldnull.end(); + + fieldBuilder = CreateStringArrayField(pi.GetCustomAttributes(typeof(Direction.InputOutputAttribute), true)); + + if (fieldBuilder != null) + { + emit.ldsfld(fieldBuilder); + mapOutputParameters = true; + } + else + emit.ldnull.end(); + + fieldBuilder = CreateStringArrayField(pi.GetCustomAttributes(typeof(Direction.IgnoreAttribute), true)); + + if (fieldBuilder != null) + emit.ldsfld(fieldBuilder); + else + emit.ldnull.end(); + + emit + .ldnull + .callvirt(_baseType, "CreateParameters", _bindingFlags, + typeof(DbManager), type, typeof(string[]), typeof(string[]), typeof(string[]), typeof(IDbDataParameter[])) + ; + + object[] attrs = pi.GetCustomAttributes(typeof(Direction.ReturnValueAttribute), true); + + if (attrs.Length != 0) + returnValueMember = ((Direction.ReturnValueAttribute)attrs[0]).Member; + + if (null != returnValueMember || mapOutputParameters) + _mapOutputParameters.Add(new MapOutputParametersValue(returnValueMember, pi)); + } + else + { + emit + .ldnull + .end() + ; + } + + emit + .stelem_ref + .end() + ; + } + + emit.stloc(locParams); + return locParams; + } + + void LoadParameterOrNull(ParameterInfo pi, Type type) + { + EmitHelper emit = Context.MethodBuilder.Emitter; + object[] attrs = pi.GetCustomAttributes(typeof(ParamNullValueAttribute), true); + + object nullValue = attrs.Length == 0 ? + null : ((ParamNullValueAttribute)attrs[0]).Value; + + Label labelNull = emit.DefineLabel(); + Label labelEndIf = emit.DefineLabel(); + + if (pi.Attributes == ParameterAttributes.Out) + { + emit + .ldnull + .end() + ; + + return; + } + + if (nullValue != null) + { + Type nullValueType = type; + bool isNullable = TypeHelper.IsNullable(type); + + if (type.IsEnum) + { + nullValueType = Enum.GetUnderlyingType(type); + nullValue = System.Convert.ChangeType(nullValue, nullValueType); + } + else if (isNullable) + { + nullValueType = type.GetGenericArguments()[0]; + + emit + .ldarga(pi) + .call(type, "get_HasValue") + .brfalse(labelNull) + ; + } + + if (nullValueType == nullValue.GetType() && emit.LoadWellKnownValue(nullValue)) + { + if (nullValueType == typeof(string)) + emit + .ldargEx(pi, false) + .call(nullValueType, "Equals", nullValueType) + .brtrue(labelNull) + ; + else if (isNullable) + emit + .ldarga(pi) + .call(type, "get_Value") + .beq(labelNull) + ; + else + emit + .ldargEx(pi, false) + .beq(labelNull) + ; + } + else + { + string nullString = TypeDescriptor.GetConverter(nullValue).ConvertToInvariantString(nullValue); + FieldBuilder staticField = CreateNullValueField(nullValueType, nullString); + MethodInfo miEquals = new TypeHelper(nullValueType).GetPublicMethod("Equals", nullValueType); + + if (miEquals == null) + { + // Is it possible? + // + throw new TypeBuilderException(string.Format( + Resources.DataAccessorBuilder_EqualsMethodIsNotPublic, type.FullName)); + } + + if (isNullable) + emit + .ldsflda(staticField) + .ldarga(pi) + .call(pi.ParameterType, "get_Value") + ; + else + emit + .ldsflda(staticField) + .ldarg(pi) + ; + + if (miEquals.GetParameters()[0].ParameterType.IsClass) + emit + .boxIfValueType(nullValueType) + ; + + emit + .call(miEquals) + .brtrue(labelNull) + ; + } + } + + if (type.IsEnum) + emit + .ldloc(_locManager) + .callvirt(typeof(DbManager).GetProperty("MappingSchema").GetGetMethod()) + ; + + emit + .ldargEx(pi, true) + ; + + if (type.IsEnum) + emit + .ldc_i4_1 + .callvirt(typeof(MappingSchema), "MapEnumToValue", typeof(object), typeof(bool)) + ; + + if (nullValue != null) + { + emit + .br(labelEndIf) + .MarkLabel(labelNull) + .ldnull + .MarkLabel(labelEndIf) + ; + } + } + + void BuildParameter(ParameterInfo pi) + { + EmitHelper emit = Context.MethodBuilder.Emitter; + Type type = pi.ParameterType; + object[] attrs = pi.GetCustomAttributes(typeof(ParamNameAttribute), true); + string paramName = attrs.Length == 0 ? pi.Name : ((ParamNameAttribute)attrs[0]).Name; + + ParameterDirection direction = !type.IsByRef ? ParameterDirection.Input : + pi.IsOut ? ParameterDirection.Output : ParameterDirection.InputOutput; + + emit + .ldloc(_locManager) + .ldc_i4_((int)direction) + ; + + if (paramName[0] != '@') + { + string methodName = _sqlQueryAttribute == null ? "GetSpParameterName" : "GetQueryParameterName"; + emit + .ldarg_0 + .ldloc(_locManager) + .ldstr(paramName) + .callvirt(_baseType, methodName, _bindingFlags, typeof(DbManager), typeof(string)) + ; + } + else + emit.ldstr(paramName); + + if (type.IsByRef) + { + if (_outputParameters == null) + _outputParameters = new ArrayList(); + + _outputParameters.Add(pi); + + type = type.GetElementType(); + } + + LoadParameterOrNull(pi, type); + + // Special case for user-defined types. + // + attrs = pi.GetCustomAttributes(typeof(ParamTypeNameAttribute), true); + if (attrs.Length > 0) + { + emit + .ldstr(((ParamTypeNameAttribute)attrs[0]).TypeName) + .callvirt(typeof(DbManager), "Parameter", + typeof(ParameterDirection), typeof(string), typeof(object), typeof(string)) + ; + } + else + { + emit + .callvirt(typeof(DbManager), "Parameter", + typeof(ParameterDirection), typeof(string), typeof(object)) + ; + } + + // Check if parameter type/size is specified. + // + attrs = pi.GetCustomAttributes(typeof(ParamDbTypeAttribute), true); + if (attrs.Length > 0) + { + emit + .dup + .ldc_i4_((int)((ParamDbTypeAttribute)attrs[0]).DbType) + .callvirt(typeof(IDataParameter), "set_DbType", typeof(DbType)) + ; + } + + attrs = pi.GetCustomAttributes(typeof(ParamSizeAttribute), true); + if (attrs.Length > 0) + { + emit + .dup + .ldc_i4_(((ParamSizeAttribute)attrs[0]).Size) + .callvirt(typeof(IDbDataParameter), "set_Size", typeof(int)) + ; + } + } + + LocalBuilder BuildParametersWithDiscoverParameters() + { + EmitHelper emit = Context.MethodBuilder.Emitter; + LocalBuilder locParams = emit.DeclareLocal(typeof(object[])); + + emit + .ldc_i4_(_paramList.Count) + .newarr(typeof(object)) + ; + + for (int i = 0; i < _paramList.Count; i++) + { + ParameterInfo pi = (ParameterInfo)_paramList[i]; + + emit + .dup + .ldc_i4_(i) + ; + + LoadParameterOrNull(pi, pi.ParameterType); + + emit + .stelem_ref + .end() + ; + } + + emit.stloc(locParams); + return locParams; + } + + void StoreParameterValue(LocalBuilder param, ParameterInfo pi, Type type) + { + EmitHelper emit = Context.MethodBuilder.Emitter; + Label labelNull = emit.DefineLabel(); + Label labelEndIf = emit.DefineLabel(); + + object[] attrs = pi.GetCustomAttributes(typeof(ParamNullValueAttribute), true); + object nullValue = attrs.Length == 0 ? null : ((ParamNullValueAttribute)attrs[0]).Value; + + if (nullValue != null) + { + emit + .ldarg_0 + .ldloc(_locManager) + .ldloc(param) + .callvirt(typeof(IDataParameter).GetProperty("Value").GetGetMethod()) + .ldloc(param) + .callvirt(_baseType, "IsNull", _bindingFlags, typeof(DbManager), typeof(object), typeof(object)) + .brtrue(labelNull) + ; + } + + if (type.IsEnum) + { + emit + .ldloc(_locManager) + .callvirt(typeof(DbManager).GetProperty("MappingSchema").GetGetMethod()) + .ldloc(param) + .callvirt(typeof(IDataParameter).GetProperty("Value").GetGetMethod()) + .LoadType(type) + .callvirt(typeof(MappingSchema), "MapValueToEnum", typeof(object), typeof(Type)) + .CastFromObject(type) + ; + } +#if FW4 + else if (pi.IsRefCursor()) + { + // Make sure the parameter is a List + if (!type.GetInterfaces().Contains(typeof(IList))) + { + throw new Exception("The argument '" + pi.Name + "' must be of type 'IList'"); + } + //Get the generic type of the list + Type genericType = type.GetGenericArguments().First(); + + + // Get the data reader to the ref cursor + var dataReader = emit.DeclareLocal(typeof(IDataReader)); + emit + .ldloc(_locManager) + .callvirt(typeof(DbManager).GetProperty("DataProvider").GetGetMethod()) + .ldloc(param) + .callvirt(typeof(IDataParameter).GetProperty("Value").GetGetMethod()) + .callvirt(typeof(DataProviderBase), "GetRefCursorDataReader", typeof(object)) + .CastFromObject(typeof(IDataReader)) + .stloc(dataReader) + ; + + // Create the generic methos info to invoke + var mapDataReaderToListMethodInfo = typeof (MappingSchema).GetMethod("MapDataReaderToList", + new[] + { + typeof (IDataReader), + typeof (object[]) + }) + .MakeGenericMethod(genericType); + + // Run MapDataReaderToList + emit + .ldloc(_locManager) + .callvirt(typeof(DbManager).GetProperty("MappingSchema").GetGetMethod()) + .ldloc(dataReader) + .ldnull + .callvirt(mapDataReaderToListMethodInfo) + ; + } +#endif + else + { + emit + .ldarg_0 + .ldloc(_locManager) + .ldloc(param) + .callvirt(typeof(IDataParameter).GetProperty("Value").GetGetMethod()) + ; + + MethodInfo converter = GetConverterMethod(type); + + if (converter == null) + { + emit + .LoadType(type) + .ldloc(param) + .callvirt(_baseType, "ConvertChangeType", _bindingFlags, typeof(DbManager), typeof(object), typeof(Type), typeof(object)) + .unboxIfValueType(type) + ; + } + else + { + emit + .ldloc(param) + .callvirt(converter) + ; + } + } + + if (nullValue != null) + { + emit + .br(labelEndIf) + .MarkLabel(labelNull); + + if (nullValue.GetType() != type || !emit.LoadWellKnownValue(nullValue)) + { + string nullString = TypeDescriptor.GetConverter(type).ConvertToInvariantString(nullValue); + FieldBuilder staticField = CreateNullValueField(type, nullString); + + emit + .ldsfld(staticField) + ; + } + + emit + .MarkLabel(labelEndIf) + ; + } + + emit.stind(type); + } + + void GetOutRefParameters() + { + EmitHelper emit = Context.MethodBuilder.Emitter; + + if (_outputParameters != null) + { + LocalBuilder param = emit.DeclareLocal(typeof(IDataParameter)); + + foreach (ParameterInfo pi in _outputParameters) + { + Type type = pi.ParameterType.GetElementType(); + + emit + .ldarg(pi) + ; + + // Get parameter. + // + object[] attrs = pi.GetCustomAttributes(typeof(ParamNameAttribute), true); + + string paramName = attrs.Length == 0 ? + pi.Name : ((ParamNameAttribute)attrs[0]).Name; + + emit + .ldarg_0 + .ldloc(_locManager) + ; + + if (paramName[0] != '@') + { + string methodName = _sqlQueryAttribute == null ? "GetSpParameterName" : "GetQueryParameterName"; + + emit + .ldarg_0 + .ldloc(_locManager) + .ldstr(paramName) + .callvirt(_baseType, methodName, _bindingFlags, typeof(DbManager), typeof(string)) + ; + } + else + emit.ldstr(paramName); + + emit + .callvirt(_baseType, "GetParameter", _bindingFlags, typeof(DbManager), typeof(string)) + .stloc(param) + ; + + StoreParameterValue(param, pi, type); + } + } + + foreach (MapOutputParametersValue v in _mapOutputParameters) + { + emit + .ldloc(_locManager) + .ldstrEx(v.ReturnValueMember) + .ldarg(v.ParameterInfo) + .callvirt(typeof(DbManager), "MapOutputParameters", typeof(string), typeof(object)); + } + } + + static bool IsInterfaceOf(Type type, Type interfaceType) + { + Type[] types = type.GetInterfaces(); + + foreach (Type t in types) + if (t == interfaceType) + return true; + + return type == interfaceType; + } + + private MethodInfo GetConverterMethod(Type type) + { + if (type.IsEnum) + type = Enum.GetUnderlyingType(type); + + Type[] types = new Type[] { typeof(DbManager), typeof(object), typeof(object) }; + return _baseType.GetMethod("ConvertTo" + type.Name, _bindingFlags, null, types, null); + } + } } diff --git a/Source/DataAccess/ISqlQueryT.cs b/Source/DataAccess/ISqlQueryT.cs new file mode 100644 index 000000000..528156628 --- /dev/null +++ b/Source/DataAccess/ISqlQueryT.cs @@ -0,0 +1,47 @@ +using System.Collections.Generic; +using BLToolkit.Data; + +namespace BLToolkit.DataAccess +{ + public interface ISqlQueryT + { + T SelectByKey(DbManager db, params object[] keys); + T SelectByKey(params object[] keys); + List SelectAll(DbManager db); + + TL SelectAll(DbManager db, TL list) + where TL : IList; + + TL SelectAll(DbManager db) + where TL : IList, new(); + + List SelectAll(); + + TL SelectAll(TL list) + where TL : IList; + + TL SelectAll() + where TL : IList, new(); + + int Insert(DbManager db, T obj); + int Insert(T obj); + int Insert(DbManager db, int maxBatchSize, IEnumerable list); + int Insert(int maxBatchSize, IEnumerable list); + int Insert(DbManager db, IEnumerable list); + int Insert(IEnumerable list); + int Update(DbManager db, T obj); + int Update(T obj); + int Update(DbManager db, int maxBatchSize, IEnumerable list); + int Update(int maxBatchSize, IEnumerable list); + int Update(DbManager db, IEnumerable list); + int Update(IEnumerable list); + int DeleteByKey(DbManager db, params object[] key); + int DeleteByKey(params object[] key); + int Delete(DbManager db, T obj); + int Delete(T obj); + int Delete(DbManager db, int maxBatchSize, IEnumerable list); + int Delete(int maxBatchSize, IEnumerable list); + int Delete(DbManager db, IEnumerable list); + int Delete(IEnumerable list); + } +} \ No newline at end of file diff --git a/Source/DataAccess/SequenceKeyGenerator.cs b/Source/DataAccess/SequenceKeyGenerator.cs new file mode 100644 index 000000000..b26198140 --- /dev/null +++ b/Source/DataAccess/SequenceKeyGenerator.cs @@ -0,0 +1,26 @@ +namespace BLToolkit.DataAccess +{ + /// + /// Wrapper class used to get the SequenceName attribute value and add it to the ObjectMapper class. + /// USeful for the SqlQuery InsertWithIdentity method + /// + public class SequenceKeyGenerator : KeyGenerator + { + private readonly string _sequence; + + public SequenceKeyGenerator(string sequence) + { + _sequence = sequence; + } + + public string Sequence + { + get { return _sequence; } + } + } + + public class KeyGenerator + { + } +} + diff --git a/Source/DataAccess/SqlQuery.cs b/Source/DataAccess/SqlQuery.cs index 29cad74c7..9298d3520 100644 --- a/Source/DataAccess/SqlQuery.cs +++ b/Source/DataAccess/SqlQuery.cs @@ -1,6 +1,5 @@ using System; using System.Collections; - using BLToolkit.Data; using BLToolkit.Reflection.Extension; @@ -202,9 +201,9 @@ public virtual TL SelectAll() #endregion - #region Insert + #region Insert - public virtual int Insert(DbManager db, object obj) + public virtual int Insert(DbManager db, object obj) { var query = GetSqlQueryInfo(db, obj.GetType(), "Insert"); diff --git a/Source/DataAccess/SqlQueryBase.cs b/Source/DataAccess/SqlQueryBase.cs index a1a9c8c32..42bf22dbe 100644 --- a/Source/DataAccess/SqlQueryBase.cs +++ b/Source/DataAccess/SqlQueryBase.cs @@ -1,6 +1,8 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Data; +using System.Linq; using System.Text; using BLToolkit.Aspects; @@ -32,6 +34,36 @@ protected SqlQueryBase(DbManager dbManager, bool dispose) #endregion + #region InsertWithIdentity + + public virtual object InsertWithIdentity(DbManager db, object obj) + { + var query = GetSqlQueryInfo(db, obj.GetType(), "InsertWithIdentity"); + + var parameters = query.GetParameters(db, obj); + + db.SetCommand(query.QueryText, parameters).ExecuteNonQuery(); + + var outputParameter = parameters.ToList().First(e => e.Direction == ParameterDirection.Output); + return outputParameter.Value; + } + + public virtual object InsertWithIdentity(object obj) + { + var db = GetDbManager(); + + try + { + return InsertWithIdentity(db, obj); + } + finally + { + Dispose(db); + } + } + + #endregion + #region Protected Members [NoInterception] @@ -212,7 +244,7 @@ protected SqlQueryInfo CreateSelectAllSqlText(DbManager db, Type type) return query; } - protected SqlQueryInfo CreateInsertSqlText(DbManager db, Type type, int nParameter) + protected SqlQueryInfo CreateInsertSqlText(DbManager db, Type type, int nParameter, bool insertAutoSequence = false) { var typeExt = TypeExtension.GetTypeExtension(type, Extensions); var om = db.MappingSchema.GetObjectMapper(type); @@ -225,6 +257,7 @@ protected SqlQueryInfo CreateInsertSqlText(DbManager db, Type type, int nParamet AppendTableName(sb, db, type); sb.Append(" (\n"); + foreach (var mm in GetFieldList(om)) { // IT: This works incorrectly for complex mappers. @@ -233,37 +266,65 @@ protected SqlQueryInfo CreateInsertSqlText(DbManager db, Type type, int nParamet // as in CreateUpdateSqlText // - bool isSet; - var nonUpdatableAttribute = mp.GetNonUpdatableAttribute(type, typeExt, mm.MapMemberInfo.MemberAccessor, out isSet); - if (nonUpdatableAttribute == null || !isSet || nonUpdatableAttribute.OnInsert == false) - { - sb.AppendFormat("\t{0},\n", - db.DataProvider.Convert(mm.Name, ConvertType.NameToQueryField)); - list.Add(mm); - } + bool isSet; + var nonUpdatableAttribute = mp.GetNonUpdatableAttribute(type, typeExt, mm.MapMemberInfo.MemberAccessor, out isSet); + if (insertAutoSequence && nonUpdatableAttribute is IdentityAttribute) + { + sb.AppendFormat("\t{0},\n", db.DataProvider.Convert(mm.Name, ConvertType.NameToQueryField)); + list.Add(mm); + } + else + { + if (nonUpdatableAttribute == null || !isSet || nonUpdatableAttribute.IsIdentity || nonUpdatableAttribute.OnInsert == false) + { + sb.AppendFormat("\t{0},\n", db.DataProvider.Convert(mm.Name, ConvertType.NameToQueryField)); + list.Add(mm); + } + } } sb.Remove(sb.Length - 2, 1); sb.Append(") VALUES (\n"); - foreach (var mm in list) - { - var p = query.AddParameter( - db.DataProvider.Convert(mm.Name + "_P", ConvertType.NameToQueryParameter).ToString(), - mm.Name); + MemberMapper identityMember = null; + foreach (var mm in list) + { + var keyGenerator = mm.MapMemberInfo.KeyGenerator as SequenceKeyGenerator; + if (keyGenerator != null && insertAutoSequence) + { + string seqQuery = db.DataProvider.NextSequenceQuery(keyGenerator.Sequence); + sb.AppendFormat("\t{0},\n", seqQuery); + identityMember = mm; + } + else + { + // Previously : mm.Name + var p = query.AddParameter( + db.DataProvider.Convert(mm.MemberName + "_P", ConvertType.NameToQueryParameter).ToString(), + mm.Name); + + if (nParameter < 0) + sb.AppendFormat("\t{0},\n", p.ParameterName); + //sb.AppendFormat("\t{0},\n", db.DataProvider.Convert(p.ParameterName, ConvertType.NameToQueryParameter)); + else + sb.AppendFormat("\t{{{0}}},\n", nParameter++); + } + } + + sb.Remove(sb.Length - 2, 1); - if (nParameter < 0) - sb.AppendFormat("\t{0},\n", p.ParameterName); - //sb.AppendFormat("\t{0},\n", db.DataProvider.Convert(p.ParameterName, ConvertType.NameToQueryParameter)); - else - sb.AppendFormat("\t{{{0}}},\n", nParameter++); - } + sb.Append(")"); - sb.Remove(sb.Length - 2, 1); + if (identityMember != null) + { + sb.AppendFormat("\r\n{0}", db.DataProvider.GetReturningInto(identityMember.Name)); - sb.Append(")"); + query.AddParameter( + db.DataProvider.Convert("IDENTITY_PARAMETER", ConvertType.NameToQueryParameter).ToString(), + identityMember.Name); + } query.QueryText = sb.ToString(); @@ -349,11 +410,16 @@ protected virtual SqlQueryInfo CreateSqlText(DbManager db, Type type, string act switch (actionName) { case "SelectByKey": return CreateSelectByKeySqlText(db, type); - case "SelectAll": return CreateSelectAllSqlText (db, type); - case "Insert": return CreateInsertSqlText (db, type, -1); - case "InsertBatch": return CreateInsertSqlText (db, type, 0); + case "SelectAll": return CreateSelectAllSqlText (db, type); + + case "Insert": return CreateInsertSqlText (db, type, -1, false); + case "InsertWithIdentity": return CreateInsertSqlText(db, type, -1, true); + case "InsertBatch": return CreateInsertSqlText(db, type, 0, false); + case "InsertBatchWithIdentity": return CreateInsertSqlText(db, type, 0, db.UseQueryText || db.Transaction != null); + case "Update": return CreateUpdateSqlText (db, type, -1); case "UpdateBatch": return CreateUpdateSqlText (db, type, 0); + case "Delete": return CreateDeleteSqlText (db, type, -1); case "DeleteBatch": return CreateDeleteSqlText (db, type, 0); default: @@ -364,6 +430,11 @@ protected virtual SqlQueryInfo CreateSqlText(DbManager db, Type type, string act private static readonly Hashtable _actionSqlQueryInfo = new Hashtable(); + public static void ClearCache() + { + _actionSqlQueryInfo.Clear(); + } + [NoInterception] public virtual SqlQueryInfo GetSqlQueryInfo(DbManager db, Type type, string actionName) { @@ -373,7 +444,9 @@ public virtual SqlQueryInfo GetSqlQueryInfo(DbManager db, Type type, string acti if (query == null) { query = CreateSqlText(db, type, actionName); - _actionSqlQueryInfo[key] = query; + query.OwnerName = GetOwnerName(type); + query.ActionName = actionName; + _actionSqlQueryInfo[key] = query; } return query; diff --git a/Source/DataAccess/SqlQueryInfo.cs b/Source/DataAccess/SqlQueryInfo.cs index 53f6e8e46..6bbd9c1cd 100644 --- a/Source/DataAccess/SqlQueryInfo.cs +++ b/Source/DataAccess/SqlQueryInfo.cs @@ -19,6 +19,8 @@ public SqlQueryInfo(ObjectMapper objectMapper) ObjectMapper = objectMapper; } + public string OwnerName { get; set; } + public string ActionName { get; set; } public string QueryText { get; set; } public ObjectMapper ObjectMapper { get; private set; } @@ -74,20 +76,27 @@ public IDbDataParameter[] GetParameters(DbManager db, object obj) if (val == null && mmi.Nullable/* && mmi.NullValue == null*/) { - //replace value with DbNull - val = DBNull.Value; - } - - if (mmi.IsDbTypeSet) - { - parameters[i] = mmi.IsDbSizeSet - ? db.Parameter(info.ParameterName, val, info.MemberMapper.DbType, mmi.DbSize) - : db.Parameter(info.ParameterName, val, info.MemberMapper.DbType); - } - else - { - parameters[i] = db.Parameter(info.ParameterName, val); - } + //replace value with DbNull + val = DBNull.Value; + } + + if (mmi.IsDbTypeSet) + { + parameters[i] = mmi.IsDbSizeSet + ? db.Parameter(info.ParameterName, val, info.MemberMapper.DbType, mmi.DbSize) + : db.Parameter(info.ParameterName, val, info.MemberMapper.DbType); + } + else + { + parameters[i] = val != DBNull.Value + ? db.Parameter(info.ParameterName, val) + : db.Parameter(info.ParameterName, val, info.MemberMapper.GetDbType()); + } + + if (mmi.KeyGenerator is SequenceKeyGenerator && ActionName == "InsertWithIdentity") + { + parameters[i] = db.OutputParameter(info.ParameterName, val); + } } return parameters; @@ -95,12 +104,12 @@ public IDbDataParameter[] GetParameters(DbManager db, object obj) public MemberMapper[] GetMemberMappers() { - var members = new MemberMapper[Parameters.Count]; + var members = new MemberMapper[Parameters.Count]; - for (var i = 0; i < Parameters.Count; i++) - members[i] = Parameters[i].MemberMapper; + for (var i = 0; i < Parameters.Count; i++) + members[i] = Parameters[i].MemberMapper; - return members; + return members; } } } diff --git a/Source/DataAccess/SqlQueryT.cs b/Source/DataAccess/SqlQueryT.cs index fe75b6d3d..d9d6b8911 100644 --- a/Source/DataAccess/SqlQueryT.cs +++ b/Source/DataAccess/SqlQueryT.cs @@ -1,13 +1,12 @@ -using System; using System.Collections.Generic; -using BLToolkit.Data; -using BLToolkit.Mapping; -using BLToolkit.Reflection.Extension; - namespace BLToolkit.DataAccess { - public class SqlQuery : SqlQueryBase + using Data; + using Mapping; + using Reflection.Extension; + + public class SqlQuery : SqlQueryBase, ISqlQueryT { #region Constructors @@ -149,6 +148,16 @@ public virtual int Insert(DbManager db, T obj) .ExecuteNonQuery(); } + public virtual object InsertWithIdentity(DbManager db, T obj) + { + return base.InsertWithIdentity(db, obj); + } + + public virtual object InsertWithIdentity(T obj) + { + return base.InsertWithIdentity(obj); + } + public virtual int Insert(T obj) { var db = GetDbManager(); @@ -164,9 +173,22 @@ public virtual int Insert(T obj) } } + public virtual int InsertBatchWithIdentity(DbManager db, int maxBatchSize, IEnumerable list) + { + var query = GetSqlQueryInfo(db, typeof(T), "InsertBatchWithIdentity"); + + return db.DataProvider.InsertBatchWithIdentity( + db, + query.QueryText, + list, + query.GetMemberMappers(), + maxBatchSize, + obj => query.GetParameters(db, obj)); + } + public virtual int Insert(DbManager db, int maxBatchSize, IEnumerable list) { - var query = GetSqlQueryInfo(db, typeof(T), "InsertBatch"); + var query = GetSqlQueryInfo(db, typeof(T), "InsertBatch"); return db.DataProvider.InsertBatch( db, diff --git a/Source/EditableObjects/EditableArrayList.cs b/Source/EditableObjects/EditableArrayList.cs index f2d4d1c1e..42e3df029 100644 --- a/Source/EditableObjects/EditableArrayList.cs +++ b/Source/EditableObjects/EditableArrayList.cs @@ -18,6 +18,10 @@ public class EditableArrayList : ArrayList, IEditable, ISortable, ISupportMappin { #region Constructors + public EditableArrayList() : this(typeof(object), new ArrayList(), true) + { + } + public EditableArrayList([JetBrains.Annotations.NotNull] Type itemType, [JetBrains.Annotations.NotNull] ArrayList list, bool trackChanges) { if (itemType == null) throw new ArgumentNullException("itemType"); diff --git a/Source/Linq/ExpressionHelper.cs b/Source/Linq/ExpressionHelper.cs index 05744ec68..446701c44 100644 --- a/Source/Linq/ExpressionHelper.cs +++ b/Source/Linq/ExpressionHelper.cs @@ -1311,9 +1311,13 @@ public static Expression Convert(this Expression expr, Func { @@ -1409,9 +1429,13 @@ public static Expression Convert(this Expression expr, Func Convert2(IEnumerable source, Func ConvertMethodArguments(IEnumerable source, MethodBase method) + { + return ConvertMethodArguments(source, method, null); + } + + static IEnumerable ConvertMethodArguments(IEnumerable source, MethodBase method, IList initMembers) +#else + static IEnumerable ConvertMethodArguments(IEnumerable source, MethodBase method, IList initMembers = null) +#endif + { + var list = new List(); + + var targetTypes = new List(); + foreach (var param in method.GetParameters()) + { + targetTypes.Add(param.ParameterType); + } + if (initMembers != null) + { + foreach (var mi in initMembers) + { + if (mi is PropertyInfo) + { + targetTypes.Add(((PropertyInfo)mi).PropertyType); + } + else if (mi is FieldInfo) + { + targetTypes.Add(((FieldInfo)mi).FieldType); + } + } + } + + var idx = 0; + foreach (var item in source) + { + var targetType = targetTypes[idx]; + if (item.Type != targetType) + { + list.Add(Expression.Convert(item, targetType)); + } + else + { + list.Add(item); + } + idx++; + } + + return list; + } + public static Expression Convert2(this Expression expr, Func func) { if (expr == null) @@ -1719,8 +1819,8 @@ public static Expression Convert2(this Expression expr, Func MapperList = new Dictionary(); @@ -54,8 +55,9 @@ public class ExpressionMapper private Func _getCurrent; private Action _setCurrent; - public bool DeepCopy { get { return _parameters.DeepCopy; } set { _parameters.DeepCopy = value; } } - public bool HandleBackReferences { get { return _parameters.HandleCrossReferences; } set { _parameters.HandleCrossReferences = value; } } + public bool DeepCopy { get { return _parameters.DeepCopy; } set { _parameters.DeepCopy = value; } } + public bool HandleBackReferences { get { return _parameters.HandleCrossReferences; } set { _parameters.HandleCrossReferences = value; } } + public bool IncludeComplexMapping { get { return _parameters.IncludeComplexMapping; } set { _parameters.IncludeComplexMapping = value; } } public ExpressionMapper() : this(Map.DefaultSchema) @@ -601,7 +603,7 @@ IEnumerable GetBindings(Expression source) foreach (MemberMapper dmm in dest) { - if (dmm is MemberMapper.ComplexMapper) + if (!IncludeComplexMapping && dmm is MemberMapper.ComplexMapper) continue; var dma = dmm.MemberAccessor; @@ -609,9 +611,17 @@ IEnumerable GetBindings(Expression source) if (!dma.HasSetter) continue; + var attr = dma.GetAttribute(); + + if (attr != null && attr.Ignore) + continue; + var smm = src[dmm.Name]; - if (smm == null || smm is MemberMapper.ComplexMapper) + if (smm == null) + continue; + + if (!IncludeComplexMapping && smm is MemberMapper.ComplexMapper) continue; var sma = smm.MemberAccessor; @@ -619,6 +629,11 @@ IEnumerable GetBindings(Expression source) if (!sma.HasGetter) continue; + attr = sma.GetAttribute(); + + if (attr != null && attr.Ignore) + continue; + _getCurrent = dma.GetValue; _setCurrent = dma.SetValue; @@ -638,7 +653,7 @@ IEnumerable GetBindings(Expression source) var destMembers = from m in ((IEnumerable)dest.TypeAccessor) select m; - destMembers = destMembers.Except(dest.Select(mm => mm.MemberAccessor)); + destMembers = destMembers.Except(dest.Select(mm => mm.MemberAccessor)).ToList(); var srcMembers = (from m in ((IEnumerable)src.TypeAccessor) select m) @@ -687,11 +702,36 @@ Expression GetMemberInit(ParameterExpression source) return expr; } + interface IAbstractHelper + { + Func GetMapper(MappingParameters ps); + } + + class AbstractHelper : IAbstractHelper + { + public Func GetMapper(MappingParameters ps) + { + var em = new ExpressionMapper(ps); + var mapper = em.GetMapper(); + + return source => (TDest)(object)mapper((TS)(object)source); + } + } + public Func GetMapper() { if (typeof(TSource) == typeof(TDest) && !DeepCopy) return s => (TDest)(object)s; + if (TypeHelper.IsAbstractClass(typeof(TSource)) || TypeHelper.IsAbstractClass(typeof(TDest))) + { + var st = TypeHelper.IsAbstractClass(typeof(TSource)) ? TypeAccessor.Instance.Type : typeof(TSource); + var dt = TypeHelper.IsAbstractClass(typeof(TDest)) ? TypeAccessor. Instance.Type : typeof(TDest); + + var type = typeof(AbstractHelper<,>).MakeGenericType(typeof(TSource), typeof(TDest), st, dt); + return ((IAbstractHelper)Activator.CreateInstance(type)).GetMapper(_parameters); + } + var parm = Expression.Parameter(typeof(TSource), "src"); var expr = GetValueMapper( parm, diff --git a/Source/Mapping/Fluent/AssociationMap.cs b/Source/Mapping/Fluent/AssociationMap.cs new file mode 100644 index 000000000..440951951 --- /dev/null +++ b/Source/Mapping/Fluent/AssociationMap.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq.Expressions; + +namespace BLToolkit.Mapping.Fluent +{ + public partial class MapFieldMap + { + public class AssociationMap + { + private readonly MapFieldMap _owner; + private readonly bool _canBeNull; + private readonly List>> _thisKeys; + + public AssociationMap(MapFieldMap owner, bool canBeNull, List>> thisKeys) + { + this._owner = owner; + this._canBeNull = canBeNull; + this._thisKeys = thisKeys; + } + + public MapFieldMap ToMany(Expression> otherKey, params Expression>[] otherKeys) + { + var keys = new List>>(otherKeys); + keys.Insert(0, otherKey); + return this._owner.Association(this._canBeNull, this._thisKeys, keys); + } + + public MapFieldMap ToOne(Expression> otherKey, params Expression>[] otherKeys) + { + var keys = new List>>(otherKeys); + keys.Insert(0, otherKey); + return this._owner.Association(this._canBeNull, this._thisKeys, keys); + } + } + } +} \ No newline at end of file diff --git a/Source/Mapping/Fluent/Attributes.cs b/Source/Mapping/Fluent/Attributes.cs new file mode 100644 index 000000000..e5cb192b5 --- /dev/null +++ b/Source/Mapping/Fluent/Attributes.cs @@ -0,0 +1,107 @@ +namespace BLToolkit.Mapping.Fluent +{ + /// + /// Used Attribute Names + /// + /// + public partial class FluentMap + { + protected static class Attributes + { + public static class TableName + { + public const string Name = "TableName"; + + public const string Database = "DatabaseName"; + + public const string Owner = "OwnerName"; + } + + public static class MapField + { + public const string Name = "MapField"; + + public const string Storage = "FieldStorage"; + + public const string IsInheritanceDiscriminator = "IsInheritanceDiscriminator"; + + public const string OrigName = "OrigName"; + + public const string MapName = "MapName"; + } + + public static class PrimaryKey + { + public const string Order = "PrimaryKey"; + } + + public static class SqlIgnore + { + public const string Ignore = "SqlIgnore"; + } + + public static class MapIgnore + { + public const string Ignore = "MapIgnore"; + } + + public static class MapValue + { + public const string Name = "MapValue"; + + public const string OrigValue = "OrigValue"; + } + + public static class Nullable + { + public const string IsNullable = "Nullable"; + } + + public static class LazyInstance + { + public const string IsLazyInstance = "LazyInstance"; + } + + public static class InheritanceMapping + { + public const string Name = "InheritanceMapping"; + + public const string Code = "Code"; + + public const string IsDefault = "IsDefault"; + + public const string Type = "Type"; + } + + public static class Association + { + public const string ThisKey = "ThisKey"; + + public const string OtherKey = "OtherKey"; + + public const string Storage = "Storage"; + } + + public const string NonUpdatable = "NonUpdatable"; + + public const string Identity = "Identity"; + + public const string Trimmable = "Trimmable"; + + public const string DefaultValue = "DefaultValue"; + + public const string DbType = "DbType"; + + public static class MemberMapper + { + public const string Name = "MemberMapper"; + + public const string MemberType = "MemberType"; + + public const string MemberMapperType = "MemberMapperType"; + } + + public const string NullValue = "NullValue"; + } + } +} \ No newline at end of file diff --git a/Source/Mapping/Fluent/FluentConfig.cs b/Source/Mapping/Fluent/FluentConfig.cs new file mode 100644 index 000000000..57ed39dee --- /dev/null +++ b/Source/Mapping/Fluent/FluentConfig.cs @@ -0,0 +1,133 @@ +using System; +using System.CodeDom; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; + +using BLToolkit.Data; +using BLToolkit.Data.DataProvider; +using BLToolkit.Reflection.Extension; + +namespace BLToolkit.Mapping.Fluent +{ + /// + /// Configure BLToolkit in fluent style + /// + public static class FluentConfig + { + private static Dictionary _hash = new Dictionary(); + + /// + /// Configure DbManager + /// + /// + public static MappingConfigurator Configure(DbManager dbManager) + { + MappingSchema mappingSchema = dbManager.MappingSchema ?? (dbManager.MappingSchema = Map.DefaultSchema); + return Configure(mappingSchema); + } + + /// + /// Configure DataProvider + /// + /// + public static MappingConfigurator Configure(DataProviderBase dataProvider) + { + MappingSchema mappingSchema = dataProvider.MappingSchema ?? (dataProvider.MappingSchema = Map.DefaultSchema); + return Configure(mappingSchema); + } + + /// + /// Configure MappingSchema + /// + /// + public static MappingConfigurator Configure(MappingSchema mappingSchema) + { + ExtensionList extensionList = mappingSchema.Extensions ?? (mappingSchema.Extensions = new ExtensionList()); + return Configure(extensionList); + } + + /// + /// Configure ExtensionList + /// + /// + public static MappingConfigurator Configure(ExtensionList extensionList) + { + return new MappingConfigurator(extensionList); + } + + public class MappingConfigurator + { + private ExtensionList _extensions; + + public MappingConfigurator(ExtensionList extensions) + { + this._extensions = extensions; + } + + /// + /// Mapping IFluentMap-Type + /// + /// + /// + public void MapingFromType() where T : IFluentMap + { + MapingFromType(typeof(T)); + } + + public void MapingFromType(Type T) + { + var res = new ExtensionList(); + var map = (IFluentMap)Activator.CreateInstance(T); + + map.MapTo(res); + + FluentMapHelper.MergeExtensions(res, ref this._extensions); + } + /// + /// Mapping from assembly contains type + /// + /// + /// + public void MapingFromAssemblyOf() + { + this.MapingFromAssembly(typeof(T).Assembly); + } + + /// + /// Mapping from assembly + /// + /// + /// + public void MapingFromAssembly(Assembly assembly) + { + ExtensionList res; + if (!_hash.TryGetValue(assembly, out res)) + { + res = new ExtensionList(); + _hash.Add(assembly, res); + + string fluentType = typeof(IFluentMap).FullName; + var mapTypes = from type in assembly.GetTypes() + where type.IsClass && !type.IsAbstract && !type.IsGenericType + && (null != type.GetInterface(fluentType)) // Is IFluentMap + && (null != type.GetConstructor(new Type[0])) // Is defaut ctor + select type; + foreach (var fluentMapType in mapTypes) + { + MapingFromType(fluentMapType); + } + } + //FluentMapHelper.MergeExtensions(res, ref this._extensions); + } + + #region Conventions + + public static Func GetTableName; + public static Func GetColumnName; + //public static Func GetManyToManyTableName; + + #endregion + } + } +} \ No newline at end of file diff --git a/Source/Mapping/Fluent/FluentMap.Interface.cs b/Source/Mapping/Fluent/FluentMap.Interface.cs new file mode 100644 index 000000000..071d4e7f8 --- /dev/null +++ b/Source/Mapping/Fluent/FluentMap.Interface.cs @@ -0,0 +1,348 @@ +using System; +using System.Collections; +using System.Data; +using System.Linq; + +using BLToolkit.Reflection; +using BLToolkit.Reflection.Extension; + +namespace BLToolkit.Mapping.Fluent +{ + public partial class FluentMap : IFluentMap + { + /// + /// Get mapping + /// + /// + ExtensionList IFluentMap.Map() + { + return this.Map(); + } + + /// + /// TableNameAttribute + /// + /// + /// + /// + /// + void IFluentMap.TableName(string database, string owner, string name) + { + if (null != database) + { + this._typeExtension.Attributes.Add(Attributes.TableName.Database, database); + } + if (null != owner) + { + this._typeExtension.Attributes.Add(Attributes.TableName.Owner, owner); + } + if (null != name) + { + this._typeExtension.Attributes.Add(Attributes.TableName.Name, name); + } + this.EachChilds(m => m.TableName(database, owner, name)); + } + + /// + /// Map to ExtensionList + /// + /// + void IFluentMap.MapTo(ExtensionList extensions) + { + this.MapTo(extensions); + } + + /// + /// Maps the field. + /// + /// Name of the prop. + /// Name of the map. + /// The storage. + /// The is inheritance discriminator. + /// + void IFluentMap.MapField(string propName, string mapName, string storage, bool? isInheritanceDiscriminator) + { + if (propName.Contains(MemberNameSeparator)) + { + this.MapFieldOnType(propName, mapName); + } + else + { + this.MapFieldOnField(propName, mapName, storage, isInheritanceDiscriminator); + } + this.EachChilds(m => m.MapField(propName, mapName, storage, isInheritanceDiscriminator)); + } + + /// + /// Primaries the key. + /// + /// Name of the prop. + /// The order. + void IFluentMap.PrimaryKey(string propName, int order) + { + var member = this.GetMemberExtension(propName); + member.Attributes.Add(Attributes.PrimaryKey.Order, Convert.ToString(order)); + this.EachChilds(m => m.PrimaryKey(propName, order)); + } + + /// + /// Nons the updatable. + /// + /// Name of the prop. + void IFluentMap.NonUpdatable(string propName) + { + var member = this.GetMemberExtension(propName); + member.Attributes.Add(Attributes.NonUpdatable, this.ToString(true)); + this.EachChilds(m => m.NonUpdatable(propName)); + } + + /// + /// Identities the specified prop name. + /// + /// Name of the prop. + void IFluentMap.Identity(string propName) + { + var member = this.GetMemberExtension(propName); + member.Attributes.Add(Attributes.Identity, this.ToString(true)); + this.EachChilds(m => m.Identity(propName)); + } + + /// + /// SQLs the ignore. + /// + /// Name of the prop. + /// if set to true [ignore]. + void IFluentMap.SqlIgnore(string propName, bool ignore) + { + var member = this.GetMemberExtension(propName); + member.Attributes.Add(Attributes.SqlIgnore.Ignore, this.ToString(ignore)); + this.EachChilds(m => m.SqlIgnore(propName, ignore)); + } + + /// + /// Maps the ignore. + /// + /// Name of the prop. + /// if set to true [ignore]. + void IFluentMap.MapIgnore(string propName, bool ignore) + { + var member = this.GetMemberExtension(propName); + member.Attributes.Add(Attributes.MapIgnore.Ignore, this.ToString(ignore)); + this.EachChilds(m => m.MapIgnore(propName, ignore)); + } + + /// + /// Trimmables the specified prop name. + /// + /// Name of the prop. + void IFluentMap.Trimmable(string propName) + { + var member = this.GetMemberExtension(propName); + member.Attributes.Add(Attributes.Trimmable, this.ToString(true)); + this.EachChilds(m => m.Trimmable(propName)); + } + + /// + /// Maps the value. + /// + /// The type of the R. + /// The type of the V. + /// Name of the prop. + /// The orig value. + /// The value. + /// The values. + void IFluentMap.MapValue(string propName, TR origValue, TV value, TV[] values) + { + var member = this.GetMemberExtension(propName); + this.FillMapValueExtension(member.Attributes, origValue, value, values); + this.EachChilds(m => m.MapValue(propName, origValue, value, values)); + } + + /// + /// Maps the value. + /// + /// The type of the V. + /// The orig value. + /// The value. + /// The values. + void IFluentMap.MapValue(Enum origValue, TV value, TV[] values) + { + MemberExtension member; + var name = Enum.GetName(origValue.GetType(), origValue); + if (!this._typeExtension.Members.TryGetValue(name, out member)) + { + member = new MemberExtension { Name = name }; + this._typeExtension.Members.Add(member); + } + this.FillMapValueExtension(member.Attributes, origValue, value, values); + this.EachChilds(m => m.MapValue(origValue, value, values)); + } + + /// + /// Maps the value. + /// + /// The type of the V. + /// The orig value. + /// The value. + /// The values. + void IFluentMap.MapValue(object origValue, TV value, TV[] values) + { + this.FillMapValueExtension(this._typeExtension.Attributes, origValue, value, values); + this.EachChilds(m => m.MapValue(origValue, value, values)); + } + + /// + /// Defauls the value. + /// + /// The type of the R. + /// Name of the prop. + /// The value. + void IFluentMap.DefaulValue(string propName, TR value) + { + var member = this.GetMemberExtension(propName); + member.Attributes.Add(Attributes.DefaultValue, Convert.ToString(value)); + this.EachChilds(m => m.DefaulValue(propName, value)); + } + + /// + /// DB-Type of the value. + /// + /// The type of the R. + /// Name of the prop. + /// The value. + void IFluentMap.DbType(string propName, DbType dbType) + { + var member = this.GetMemberExtension(propName); + member.Attributes.Add(Attributes.DbType, Convert.ToString(dbType)); + this.EachChilds(m => m.DefaulValue(propName, dbType)); + } + + /// + /// MemberMapper + /// + /// The type of the R. + /// Name of the prop. + /// The value. + void IFluentMap.MemberMapper(string propName, Type memberType, Type memberMapperType) + { + var member = this.GetMemberExtension(propName); + this.FillMemberMapperExtension(member.Attributes, memberType, memberMapperType); + this.EachChilds(m => m.MemberMapper(propName, memberType, memberMapperType)); + } + + /// + /// Nullables the specified prop name. + /// + /// Name of the prop. + /// if set to true [is nullable]. + void IFluentMap.Nullable(string propName, bool isNullable) + { + var member = this.GetMemberExtension(propName); + member.Attributes.Add(Attributes.Nullable.IsNullable, this.ToString(isNullable)); + this.EachChilds(m => m.Nullable(propName, isNullable)); + } + + void IFluentMap.LazyInstance(string propName, bool isLazy) + { + var member = this.GetMemberExtension(propName); + member.Attributes.Add(Attributes.LazyInstance.IsLazyInstance, this.ToString(isLazy)); + this.EachChilds(m => m.LazyInstance(propName, isLazy)); + } + + /// + /// Nulls the value. + /// + /// The type of the R. + /// Name of the prop. + /// The value. + void IFluentMap.NullValue(string propName, TR value) + { + var member = this.GetMemberExtension(propName); + member.Attributes.Add(Attributes.NullValue, Equals(value, null) ? null : Convert.ToString(value)); + this.EachChilds(m => m.NullValue(propName, value)); + } + + /// + /// Associations the specified prop name. + /// + /// Name of the prop. + /// if set to true [can be null]. + /// The this keys. + /// The other keys. + void IFluentMap.Association(string propName, bool canBeNull, string thisKeys, string otherKeys) + { + var member = this.GetMemberExtension(propName); + AttributeExtensionCollection attrs; + if (!member.Attributes.TryGetValue(TypeExtension.NodeName.Association, out attrs)) + { + attrs = new AttributeExtensionCollection(); + member.Attributes.Add(TypeExtension.NodeName.Association, attrs); + } + attrs.Clear(); + var attributeExtension = new AttributeExtension(); + attributeExtension.Values.Add(Attributes.Association.ThisKey, thisKeys); + attributeExtension.Values.Add(Attributes.Association.OtherKey, otherKeys); + attributeExtension.Values.Add(Attributes.Association.Storage, this.ToString(canBeNull)); + attrs.Add(attributeExtension); + this.EachChilds(m => m.Association(propName, canBeNull, thisKeys, otherKeys)); + } + + /// + /// Relations the specified prop name. + /// + /// Name of the prop. + /// Type of the destination. + /// Index of the slave. + /// Index of the master. + void IFluentMap.Relation(string propName, Type destinationType, string[] slaveIndex, string[] masterIndex) + { + if (TypeHelper.IsSameOrParent(typeof(IEnumerable), destinationType)) + { + destinationType = destinationType.GetGenericArguments().Single(); + } + var member = this.GetMemberExtension(propName); + AttributeExtensionCollection attrs; + if (!member.Attributes.TryGetValue(TypeExtension.NodeName.Relation, out attrs)) + { + attrs = new AttributeExtensionCollection(); + member.Attributes.Add(TypeExtension.NodeName.Relation, attrs); + } + attrs.Clear(); + var attributeExtension = new AttributeExtension(); + attributeExtension.Values.Add(TypeExtension.AttrName.DestinationType, destinationType.AssemblyQualifiedName); + attrs.Add(attributeExtension); + + FillRelationIndex(slaveIndex, attributeExtension, TypeExtension.NodeName.SlaveIndex); + FillRelationIndex(masterIndex, attributeExtension, TypeExtension.NodeName.MasterIndex); + this.EachChilds(m => m.Relation(propName, destinationType, slaveIndex, masterIndex)); + } + + /// + /// Inheritances the mapping. + /// + /// The type. + /// The code. + /// The is default. + void IFluentMap.InheritanceMapping(Type type, object code, bool? isDefault) + { + AttributeExtensionCollection extList; + if (!this._typeExtension.Attributes.TryGetValue(Attributes.InheritanceMapping.Name, out extList)) + { + extList = new AttributeExtensionCollection(); + this._typeExtension.Attributes.Add(Attributes.InheritanceMapping.Name, extList); + } + var attr = new AttributeExtension(); + attr.Values.Add(Attributes.InheritanceMapping.Type, type.AssemblyQualifiedName); + if (null != code) + { + attr.Values.Add(Attributes.InheritanceMapping.Code, code); + } + if (null != isDefault) + { + attr.Values.Add(Attributes.InheritanceMapping.IsDefault, isDefault.Value); + } + extList.Add(attr); + this.EachChilds(m => m.InheritanceMapping(type,code,isDefault)); + } + } +} \ No newline at end of file diff --git a/Source/Mapping/Fluent/FluentMap.cs b/Source/Mapping/Fluent/FluentMap.cs new file mode 100644 index 000000000..2cadec06f --- /dev/null +++ b/Source/Mapping/Fluent/FluentMap.cs @@ -0,0 +1,686 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; + +using BLToolkit.Data; +using BLToolkit.Data.DataProvider; +using BLToolkit.Reflection.Extension; + +namespace BLToolkit.Mapping.Fluent +{ + /// + /// FluentSettings + /// + /// + public partial class FluentMap + { + private readonly TypeExtension _typeExtension; + private List _childs; + private const string MemberNameSeparator = "."; + + /// + /// ctor + /// + public FluentMap() + : this(new TypeExtension { Name = typeof(T).FullName }, null) + { } + + /// + /// ctor + /// + /// + /// + protected FluentMap(TypeExtension typeExtension, List childs) + { + this._typeExtension = typeExtension; + this._childs = childs; + + if (FluentConfig.MappingConfigurator.GetTableName != null) + { + this.TableName(null, null, FluentConfig.MappingConfigurator.GetTableName(typeof(T))); + } + } + + /// + /// TableNameAttribute + /// + /// + /// + public FluentMap TableName(string name) + { + return this.TableName(null, null, name); + } + + /// + /// TableNameAttribute + /// + /// + /// + /// + public FluentMap TableName(string database, string name) + { + return this.TableName(database, null, name); + } + + /// + /// TableNameAttribute + /// + /// + /// + /// + /// + public FluentMap TableName(string database, string owner, string name) + { + ((IFluentMap)this).TableName(database, owner, name); + return this; + } + + /// + /// MapFieldAttribute + /// + /// + /// + /// + /// + public MapFieldMap MapField(Expression> prop, bool isInheritanceDiscriminator) + { + return this.MapField(prop, null, null, isInheritanceDiscriminator); + } + + /// + /// MapFieldAttribute + /// + /// + /// + /// + /// + /// + /// + public MapFieldMap MapField(Expression> prop, string mapName = null, string storage = null, bool? isInheritanceDiscriminator = null) + { + string name = this.GetExprName(prop); + + if (mapName == null && FluentConfig.MappingConfigurator.GetColumnName != null) + { + mapName = FluentConfig.MappingConfigurator.GetColumnName(new MappedProperty { Name = name, Type = typeof(TR), ParentType = typeof(T) }); + } + + ((IFluentMap)this).MapField(name, mapName, storage, isInheritanceDiscriminator); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + private void MapFieldOnType(string origName, string mapName) + { + AttributeExtensionCollection attrs; + if (!this._typeExtension.Attributes.TryGetValue(Attributes.MapField.Name, out attrs)) + { + attrs = new AttributeExtensionCollection(); + this._typeExtension.Attributes.Add(Attributes.MapField.Name, attrs); + } + var attributeExtension = new AttributeExtension(); + attributeExtension.Values.Add(Attributes.MapField.OrigName, origName); + attributeExtension.Values.Add(Attributes.MapField.MapName, mapName); + attrs.Add(attributeExtension); + } + + private void MapFieldOnField(string origName, string mapName, string storage, bool? isInheritanceDiscriminator) + { + var member = this.GetMemberExtension(origName); + if (!string.IsNullOrEmpty(mapName)) + { + member.Attributes.Add(Attributes.MapField.Name, mapName); + } + if (null != storage) + { + member.Attributes.Add(Attributes.MapField.Storage, storage); + } + if (null != isInheritanceDiscriminator) + { + member.Attributes.Add(Attributes.MapField.IsInheritanceDiscriminator, this.ToString(isInheritanceDiscriminator.Value)); + } + } + + /// + /// PrimaryKeyAttribute + /// + /// + /// + /// + /// + public MapFieldMap PrimaryKey(Expression> prop, int order = -1) + { + string name = this.GetExprName(prop); + ((IFluentMap)this).PrimaryKey(name, order); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + /// + /// NonUpdatableAttribute + /// + /// + public MapFieldMap NonUpdatable(Expression> prop) + { + string name = this.GetExprName(prop); + ((IFluentMap)this).NonUpdatable(name); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + /// + /// IdentityAttribute + /// + /// + /// + public MapFieldMap Identity(Expression> prop) + { + string name = this.GetExprName(prop); + ((IFluentMap)this).Identity(name); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + /// + /// SqlIgnoreAttribute + /// + /// + /// + /// + public MapFieldMap SqlIgnore(Expression> prop, bool ignore = true) + { + string name = this.GetExprName(prop); + ((IFluentMap)this).SqlIgnore(name, ignore); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + /// + /// MapIgnoreAttribute + /// + /// + /// + /// + public MapFieldMap MapIgnore(Expression> prop, bool ignore = true) + { + string name = this.GetExprName(prop); + ((IFluentMap)this).MapIgnore(name, ignore); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + /// + /// TrimmableAttribute + /// + /// + public MapFieldMap Trimmable(Expression> prop) + { + string name = this.GetExprName(prop); + ((IFluentMap)this).Trimmable(name); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + /// + /// MapValueAttribute + /// + /// + /// + /// + /// + /// + /// + /// + public MapFieldMap MapValue(Expression> prop, TR origValue, TV value, params TV[] values) + { + string name = this.GetExprName(prop); + ((IFluentMap)this).MapValue(name, origValue, value, values); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + /// + /// DefaultValueAttribute + /// + /// + /// + /// + public MapFieldMap DefaultValue(Expression> prop, TR value) + { + string name = this.GetExprName(prop); + ((IFluentMap)this).DefaulValue(name, value); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + /// + /// DbTypeAttribute + /// + /// + /// + /// + public MapFieldMap DbType(Expression> prop, DbType dbType) + { + string name = this.GetExprName(prop); + ((IFluentMap)this).DbType(name, dbType); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + /// + /// MemberMapperAttribute + /// + /// + /// + /// + public MapFieldMap MemberMapper(Expression> prop, Type memberMapperType) + { + return this.MemberMapper(prop, null, memberMapperType); + } + + /// + /// MemberMapperAttribute + /// + /// + /// + /// + /// + public MapFieldMap MemberMapper(Expression> prop, Type memberType, Type memberMapperType) + { + string name = this.GetExprName(prop); + ((IFluentMap)this).MemberMapper(name, memberType, memberMapperType); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + /// + /// NullableAttribute + /// + /// + /// + /// + public MapFieldMap Nullable(Expression> prop, bool isNullable = true) + { + string name = this.GetExprName(prop); + ((IFluentMap)this).Nullable(name, isNullable); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + /// + /// LazyInstanceAttribute + /// + /// + /// + /// + public MapFieldMap LazyInstance(Expression> prop, bool isLazy = true) + { + string name = this.GetExprName(prop); + if (!GetIsVirtual(prop)) + throw new Exception("Property wich uses LazyInstance needs to be virtual!"); + ((IFluentMap)this).LazyInstance(name, isLazy); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + /// + /// NullValueAttribute + /// + /// + /// + /// + public MapFieldMap NullValue(Expression> prop, TR value) + { + string name = this.GetExprName(prop); + ((IFluentMap)this).NullValue(name, value); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + /// + /// AssociationAttribute + /// + /// + /// + /// + /// + /// + /// + /// + public MapFieldMap.AssociationMap Association(Expression> prop, bool canBeNull, Expression> thisKey, params Expression>[] thisKeys) + { + var keys = new List>>(thisKeys); + keys.Insert(0, thisKey); + return new MapFieldMap.AssociationMap(new MapFieldMap(this._typeExtension, this.Childs, prop), canBeNull, keys); + } + + /// + /// AssociationAttribute + /// + /// + /// + /// + /// + /// + /// + public MapFieldMap.AssociationMap Association(Expression> prop, Expression> thisKey, params Expression>[] thisKeys) + { + return this.Association(prop, true, thisKey, thisKeys); + } + + protected MapFieldMap Association(Expression> prop, bool canBeNull + , IEnumerable>> thisKeys, IEnumerable>> otherKeys) + { + string name = this.GetExprName(prop); + ((IFluentMap)this).Association(name, canBeNull, this.KeysToString(thisKeys.ToArray()), this.KeysToString(otherKeys.ToArray())); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + /// + /// Reverse on BLToolkit.Mapping.Association.ParseKeys() + /// + /// + /// + /// + /// + private string KeysToString(IEnumerable>> keys) + { + return keys.Select(this.GetExprName).Aggregate((s1, s2) => s1 + ", " + s2); + } + + /// + /// RelationAttribute + /// + /// + /// + /// + /// + /// + public MapFieldMap Relation(Expression> prop, string slaveIndex = null, string masterIndex = null) + { + return this.Relation(prop, new[] { slaveIndex }, new[] { masterIndex }); + } + + /// + /// RelationAttribute + /// + /// + /// + /// + /// + /// + public MapFieldMap Relation(Expression> prop, string[] slaveIndex, string[] masterIndex) + { + string name = this.GetExprName(prop); + + slaveIndex = (slaveIndex ?? new string[0]).Where(i => !string.IsNullOrEmpty(i)).ToArray(); + masterIndex = (masterIndex ?? new string[0]).Where(i => !string.IsNullOrEmpty(i)).ToArray(); + + Type destinationType = typeof(TR); + + ((IFluentMap)this).Relation(name, destinationType, slaveIndex, masterIndex); + return new MapFieldMap(this._typeExtension, this.Childs, prop); + } + + static void FillRelationIndex(string[] index, AttributeExtension attributeExtension, string indexName) + { + if (index.Any()) + { + var collection = new AttributeExtensionCollection(); + foreach (var s in index) + { + var ae = new AttributeExtension(); + ae.Values.Add(TypeExtension.AttrName.Name, s); + collection.Add(ae); + } + attributeExtension.Attributes.Add(indexName, collection); + } + } + + /// + /// MapValueAttribute + /// + /// + /// + /// + /// + /// + public FluentMap MapValue(Enum origValue, TV value, params TV[] values) + { + ((IFluentMap)this).MapValue(origValue, value, values); + return this; + } + + /// + /// MapValueAttribute + /// + /// + /// + /// + /// + /// + public FluentMap MapValue(object origValue, TV value, params TV[] values) + { + ((IFluentMap)this).MapValue(origValue, value, values); + return this; + } + + /// + /// MapFieldAttribute(isInheritanceDescriminator = true) + /// + /// + /// + /// + public FluentMap InheritanceField(Expression> prop) + { + return this.MapField(prop, true); + } + + /// + /// InheritanceMappingAttribute + /// + /// + /// + /// + public FluentMap InheritanceMapping(object code) + { + return this.InheritanceMapping(code, null); + } + + /// + /// InheritanceMappingAttribute + /// + /// + /// + /// + public FluentMap InheritanceMapping(bool isDefault) + { + return this.InheritanceMapping(null, isDefault); + } + + /// + /// InheritanceMappingAttribute + /// + /// + /// + /// + /// + public FluentMap InheritanceMapping(object code, bool? isDefault) + { + ((IFluentMap)this).InheritanceMapping(typeof(TC), code, isDefault); + return this; + } + + protected void FillMapValueExtension(AttributeNameCollection attributeCollection, TR origValue, TV value, TV[] values) + { + AttributeExtensionCollection list; + if (!attributeCollection.TryGetValue(Attributes.MapValue.Name, out list)) + { + list = new AttributeExtensionCollection(); + attributeCollection.Add(Attributes.MapValue.Name, list); + } + + var allValues = new List(values); + allValues.Insert(0, value); + var tvFullName = typeof(TV).FullName; + + foreach (var val in allValues) + { + var attributeExtension = new AttributeExtension(); + attributeExtension.Values.Add(Attributes.MapValue.OrigValue, origValue); + attributeExtension.Values.Add(TypeExtension.ValueName.Value, Convert.ToString(val)); + attributeExtension.Values.Add(TypeExtension.ValueName.Value + TypeExtension.ValueName.TypePostfix, tvFullName); + list.Add(attributeExtension); + } + } + + protected void FillMemberMapperExtension(AttributeNameCollection attributeCollection, Type memberType, Type memberMapperType) + { + AttributeExtensionCollection attrs; + if (!attributeCollection.TryGetValue(Attributes.MemberMapper.Name, out attrs)) + { + attrs = new AttributeExtensionCollection(); + attributeCollection.Add(Attributes.MemberMapper.Name, attrs); + } + var attributeExtension = new AttributeExtension(); + attributeExtension.Values.Add(Attributes.MemberMapper.MemberType, memberType); + attributeExtension.Values.Add(Attributes.MemberMapper.MemberMapperType, memberMapperType); + attrs.Add(attributeExtension); + } + + /// + /// Fluent settings result + /// + /// + public ExtensionList Map() + { + var result = new ExtensionList(); + this.MapTo(result); + return result; + } + + /// + /// Apply fluent settings to DbManager + /// + /// + public void MapTo(DbManager dbManager) + { + var ms = dbManager.MappingSchema ?? (dbManager.MappingSchema = Mapping.Map.DefaultSchema); + this.MapTo(ms); + } + + /// + /// Apply fluent settings to DataProviderBase + /// + /// + public void MapTo(DataProviderBase dataProvider) + { + var ms = dataProvider.MappingSchema ?? (dataProvider.MappingSchema = Mapping.Map.DefaultSchema); + this.MapTo(ms); + } + + /// + /// Apply fluent settings to MappingSchema + /// + /// + public void MapTo(MappingSchema mappingSchema) + { + var extensions = mappingSchema.Extensions ?? (mappingSchema.Extensions = new ExtensionList()); + this.MapTo(extensions); + } + + /// + /// Apply fluent settings to ExtensionList + /// + /// + public void MapTo(ExtensionList extensions) + { + var ext = this._typeExtension; + TypeExtension oldExt; + if (extensions.TryGetValue(ext.Name, out oldExt)) + { + FluentMapHelper.MergeExtensions(ext, ref oldExt); + } + else + { + extensions.Add(ext); + } + this.EachChilds(m => m.MapTo(extensions)); + } + + protected MemberExtension GetMemberExtension(Expression> prop) + { + string name = this.GetExprName(prop); + return this.GetMemberExtension(name); + } + + protected MemberExtension GetMemberExtension(string name) + { + MemberExtension member; + if (!this._typeExtension.Members.TryGetValue(name, out member)) + { + member = new MemberExtension { Name = name }; + this._typeExtension.Members.Add(member); + } + return member; + } + + private string GetExprName(Expression> prop) + { + string result = null; + var memberExpression = prop.Body as MemberExpression; + while (null != memberExpression) + { + result = null == result ? "" : MemberNameSeparator + result; + result = memberExpression.Member.Name + result; + memberExpression = memberExpression.Expression as MemberExpression; + } + if (null == result) + { + throw new ArgumentException("Fail member access expression."); + } + return result; + } + + static bool GetIsVirtual(Expression> prop) + { + var memberExpression = prop.Body as MemberExpression; + if (memberExpression != null) + { + var prpInfo = memberExpression.Member as PropertyInfo; + if (prpInfo != null && !prpInfo.GetGetMethod().IsVirtual) + { + return false; + } + } + + return true; + } + + /// + /// Invert for BLToolkit.Reflection.Extension.TypeExtension.ToBoolean() + /// + /// + /// + protected string ToString(bool value) + { + return Convert.ToString(value); + } + + private void EachChilds(Action action) + { + foreach (var childMap in this.Childs) + { + action(childMap); + } + } + + private List Childs + { + get + { + if (null == this._childs) + { + this._childs = new List(); + var thisType = typeof(T); + var fmType = typeof(FluentMap<>); + // Find child only first generation ... other generation find recursive + foreach (var childType in thisType.Assembly.GetTypes().Where(t => t.BaseType == thisType)) + { + this._childs.Add((IFluentMap)Activator.CreateInstance(fmType.MakeGenericType(childType))); + } + } + return this._childs; + } + } + } +} diff --git a/Source/Mapping/Fluent/FluentMapHelper.cs b/Source/Mapping/Fluent/FluentMapHelper.cs new file mode 100644 index 000000000..6caa6287a --- /dev/null +++ b/Source/Mapping/Fluent/FluentMapHelper.cs @@ -0,0 +1,72 @@ +using BLToolkit.Reflection.Extension; + +namespace BLToolkit.Mapping.Fluent +{ + public static class FluentMapHelper + { + public static void MergeExtensions(ExtensionList fromExt, ref ExtensionList toExt) + { + foreach (var kv in fromExt) + { + TypeExtension toType; + if (toExt.TryGetValue(kv.Key, out toType)) + { + MergeExtensions(kv.Value, ref toType); + } + else + { + toExt.Add(kv.Key, kv.Value); + } + } + } + + public static void MergeExtensions(TypeExtension fromExt, ref TypeExtension toExt) + { + if (ReferenceEquals(fromExt, toExt)) + { + return; + } + foreach (var attribute in fromExt.Attributes) + { + AttributeExtensionCollection attrs; + if (toExt.Attributes.TryGetValue(attribute.Key, out attrs)) + { + MergeExtensions(attribute.Value, ref attrs); + } + else + { + toExt.Attributes.Add(attribute.Key, attribute.Value); + } + } + foreach (var member in fromExt.Members) + { + MemberExtension value; + if (toExt.Members.TryGetValue(member.Key, out value)) + { + MergeExtensions(member.Value, ref value); + } + else + { + toExt.Members.Add(member.Key, member.Value); + } + } + } + + private static void MergeExtensions(MemberExtension fromExt, ref MemberExtension toExt) + { + foreach (var attribute in fromExt.Attributes) + { + if (toExt.Attributes.ContainsKey(attribute.Key)) + { + toExt.Attributes.Remove(attribute.Key); + } + toExt.Attributes.Add(attribute.Key, attribute.Value); + } + } + + private static void MergeExtensions(AttributeExtensionCollection fromExt, ref AttributeExtensionCollection toExt) + { + toExt.AddRange(fromExt); + } + } +} \ No newline at end of file diff --git a/Source/Mapping/Fluent/IFluentMap.cs b/Source/Mapping/Fluent/IFluentMap.cs new file mode 100644 index 000000000..2eb4bcd92 --- /dev/null +++ b/Source/Mapping/Fluent/IFluentMap.cs @@ -0,0 +1,179 @@ +using System; +using System.Data; + +using BLToolkit.Reflection.Extension; + +namespace BLToolkit.Mapping.Fluent +{ + /// + /// Interface fluent mapping + /// + public interface IFluentMap + { + /// + /// Get mapping + /// + /// + ExtensionList Map(); + + /// + /// TableNameAttribute + /// + /// + /// + /// + /// + void TableName(string database, string owner, string name); + + /// + /// Map to ExtensionList + /// + /// + void MapTo(ExtensionList extensions); + + /// + /// Maps the field. + /// + /// Name of the prop. + /// Name of the map. + /// The storage. + /// The is inheritance discriminator. + /// + void MapField(string propName, string mapName, string storage, bool? isInheritanceDiscriminator); + + /// + /// Primaries the key. + /// + /// Name of the prop. + /// The order. + void PrimaryKey(string propName, int order); + + /// + /// Nons the updatable. + /// + /// Name of the prop. + void NonUpdatable(string propName); + + /// + /// Identities the specified prop name. + /// + /// Name of the prop. + void Identity(string propName); + + /// + /// SQLs the ignore. + /// + /// Name of the prop. + /// if set to true [ignore]. + void SqlIgnore(string propName, bool ignore); + + /// + /// Maps the ignore. + /// + /// Name of the prop. + /// if set to true [ignore]. + void MapIgnore(string propName, bool ignore); + + /// + /// Trimmables the specified prop name. + /// + /// Name of the prop. + void Trimmable(string propName); + + /// + /// Maps the value. + /// + /// The type of the R. + /// The type of the V. + /// Name of the prop. + /// The orig value. + /// The value. + /// The values. + void MapValue(string propName, TR origValue, TV value, TV[] values); + + /// + /// Maps the value. + /// + /// The type of the V. + /// The orig value. + /// The value. + /// The values. + void MapValue(Enum origValue, TV value, TV[] values); + + /// + /// Maps the value. + /// + /// The type of the V. + /// The orig value. + /// The value. + /// The values. + void MapValue(object origValue, TV value, TV[] values); + + /// + /// Defauls the value. + /// + /// The type of the R. + /// Name of the prop. + /// The value. + void DefaulValue(string propName, TR value); + + /// + /// Defauls the value. + /// + /// The type of the R. + /// Name of the prop. + /// The value. + void DbType(string propName, DbType value); + + /// + /// MemberMapper + /// + /// The type of the R. + /// Name of the prop. + /// The value. + void MemberMapper(string propName, Type memberType, Type memberMapperType); + + /// + /// Nullables the specified prop name. + /// + /// Name of the prop. + /// if set to true [is nullable]. + void Nullable(string propName, bool isNullable); + + void LazyInstance(string propName, bool isLazy); + + /// + /// Nulls the value. + /// + /// The type of the R. + /// Name of the prop. + /// The value. + void NullValue(string propName, TR value); + + /// + /// Associations the specified prop name. + /// + /// Name of the prop. + /// if set to true [can be null]. + /// The this keys. + /// The other keys. + void Association(string propName, bool canBeNull, string thisKeys, string otherKeys); + + /// + /// Relations the specified prop name. + /// + /// Name of the prop. + /// Type of the destination. + /// Index of the slave. + /// Index of the master. + void Relation(string propName, Type destinationType, string[] slaveIndex, string[] masterIndex); + + /// + /// Inheritances the mapping. + /// + /// The type. + /// The code. + /// The is default. + void InheritanceMapping(Type type, object code, bool? isDefault); + } +} \ No newline at end of file diff --git a/Source/Mapping/Fluent/MapFieldMap.cs b/Source/Mapping/Fluent/MapFieldMap.cs new file mode 100644 index 000000000..912012feb --- /dev/null +++ b/Source/Mapping/Fluent/MapFieldMap.cs @@ -0,0 +1,218 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq.Expressions; + +using BLToolkit.Reflection.Extension; + +namespace BLToolkit.Mapping.Fluent +{ + /// + /// Fluent settings for field + /// + /// + /// + public partial class MapFieldMap : FluentMap + { + private readonly Expression> _prop; + + public MapFieldMap(TypeExtension owner, List childs, Expression> prop) + : base(owner, childs) + { + this._prop = prop; + } + + /// + /// PrimaryKeyAttribute + /// + /// + /// + /// + public MapFieldMap PrimaryKey(int order = -1) + { + return this.PrimaryKey(this._prop, order); + } + + public MapFieldMap LazyInstance(bool isLazy = true) + { + return this.LazyInstance(this._prop, isLazy); + } + + + /// + /// NonUpdatableAttribute + /// + /// + public MapFieldMap NonUpdatable() + { + return this.NonUpdatable(this._prop); + } + + /// + /// IdentityAttribute + /// + /// + /// + public MapFieldMap Identity() + { + return this.Identity(this._prop); + } + + /// + /// SqlIgnoreAttribute + /// + /// + /// + public MapFieldMap SqlIgnore(bool ignore = true) + { + return this.SqlIgnore(this._prop, ignore); + } + + /// + /// MapIgnoreAttribute + /// + /// + /// + public MapFieldMap MapIgnore(bool ignore = true) + { + return this.MapIgnore(this._prop, ignore); + } + + /// + /// TrimmableAttribute + /// + /// + public MapFieldMap Trimmable() + { + return this.Trimmable(this._prop); + } + + /// + /// MapValueAttribute + /// + /// + /// + /// + /// + /// + public MapFieldMap MapValue(TR origValue, TV value, params TV[] values) + { + return this.MapValue(this._prop, origValue, value, values); + } + + /// + /// DefaultValueAttribute + /// + /// + /// + public MapFieldMap DefaultValue(TR value) + { + return this.DefaultValue(this._prop, value); + } + + /// + /// DbTypeAttribute + /// + /// + /// + public MapFieldMap DbType(DbType dbType) + { + return this.DbType(this._prop, dbType); + } + + /// + /// MemberMapperAttribute + /// at the Moment you also have to specify MapIgnore(false) when using Complex types with Member Mapper. + /// + /// + /// + public MapFieldMap MemberMapper(Type memberMapperType) + { + return this.MemberMapper(this._prop, memberMapperType); + } + + /// + /// MemberMapperAttribute + /// at the Moment you also have to specify MapIgnore(false) when using Complex types with Member Mapper. + /// + /// + /// + public MapFieldMap MemberMapper(Type memberType, Type memberMapperType) + { + return this.MemberMapper(this._prop, memberType, memberMapperType); + } + + /// + /// NullableAttribute + /// + /// + /// + public MapFieldMap Nullable(bool isNullable = true) + { + return this.Nullable(this._prop, isNullable); + } + + /// + /// NullValueAttribute + /// + /// + /// + public MapFieldMap NullValue(TR value) + { + return this.NullValue(this._prop, value); + } + + /// + /// AssociationAttribute + /// + /// + /// + /// + /// + /// + public AssociationMap Association(bool canBeNull, Expression> thisKey, params Expression>[] thisKeys) + { + return this.Association(this._prop, canBeNull, thisKey, thisKeys); + } + + /// + /// AssociationAttribute + /// + /// + /// + /// + /// + public AssociationMap Association(Expression> thisKey, params Expression>[] thisKeys) + { + return this.Association(this._prop, thisKey, thisKeys); + } + + private MapFieldMap Association(bool canBeNull + , IEnumerable>> thisKeys, IEnumerable>> otherKeys) + { + return this.Association(this._prop, canBeNull, thisKeys, otherKeys); + } + + /// + /// RelationAttribute + /// + /// + /// + /// + public MapFieldMap Relation(string slaveIndex = null, string masterIndex = null) + { + return this.Relation(this._prop, slaveIndex, masterIndex); + } + + /// + /// RelationAttribute + /// + /// + /// + /// + public MapFieldMap Relation(string[] slaveIndex, string[] masterIndex) + { + return this.Relation(this._prop, slaveIndex, masterIndex); + } + } +} \ No newline at end of file diff --git a/Source/Mapping/Fluent/MappedProperty.cs b/Source/Mapping/Fluent/MappedProperty.cs new file mode 100644 index 000000000..f65ae7205 --- /dev/null +++ b/Source/Mapping/Fluent/MappedProperty.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace BLToolkit.Mapping.Fluent +{ + public class MappedProperty + { + public string Name { get; internal set; } + public Type Type { get; internal set; } + public Type ParentType { get; internal set; } + } +} diff --git a/Source/Mapping/Map.cs b/Source/Mapping/Map.cs index 578b7b814..585164d64 100644 --- a/Source/Mapping/Map.cs +++ b/Source/Mapping/Map.cs @@ -1011,6 +1011,11 @@ public static Func GetObjectMapper(bool deepCopy) return _defaultSchema.GetObjectMapper(deepCopy); } + public static Func GetObjectMapper(bool deepCopy, bool includeComplexMapping) + { + return _defaultSchema.GetObjectMapper(deepCopy, includeComplexMapping); + } + #endregion } } diff --git a/Source/Mapping/MapMemberInfo.cs b/Source/Mapping/MapMemberInfo.cs index 58f4b65c1..9dc057e4a 100644 --- a/Source/Mapping/MapMemberInfo.cs +++ b/Source/Mapping/MapMemberInfo.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Data; using System.Diagnostics; - +using BLToolkit.DataAccess; using BLToolkit.Reflection; using BLToolkit.Reflection.Extension; @@ -33,8 +33,9 @@ public MapMemberInfo() public bool IsDbSizeSet { get; set; } public MappingSchema MappingSchema { get; set; } public MemberExtension MemberExtension { get; set; } - public DbType DbType { get; set; } - + public DbType DbType { get; set; } + public KeyGenerator KeyGenerator { get; set; } + private MapValue[] _mapValues; public MapValue[] MapValues { @@ -94,6 +95,6 @@ private void CacheMapValues() if (!_origValueCache.ContainsKey(mv.OrigValue)) _origValueCache[mv.OrigValue] = mv.MapValues[0]; } - } + } } } diff --git a/Source/Mapping/MappingSchema.cs b/Source/Mapping/MappingSchema.cs index 51a0ed91d..1df141c97 100644 --- a/Source/Mapping/MappingSchema.cs +++ b/Source/Mapping/MappingSchema.cs @@ -5,11 +5,13 @@ using System.Data.Linq; using System.Data.SqlTypes; using System.Diagnostics; +using System.Linq; using System.IO; using System.Reflection; using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Xml; + #if !SILVERLIGHT using System.Xml.Linq; #endif @@ -48,6 +50,22 @@ public MappingSchema() private readonly Dictionary _mappers = new Dictionary(); private readonly Dictionary _pendingMappers = new Dictionary(); + private readonly Dictionary _mappersSequences = new Dictionary(); + + public void SetMappingTypeSequence(Type type, string sequenceName) + { + lock (_mappers) + { + _mappersSequences[type] = sequenceName; + + ObjectMapper om; + if (_mappers.TryGetValue(type, out om)) + { + om.SetMappingTypeSequence(sequenceName); + } + } + } + public ObjectMapper GetObjectMapper(Type type) { ObjectMapper om; @@ -74,6 +92,10 @@ public ObjectMapper GetObjectMapper(Type type) try { om.Init(this, type); + if (_mappersSequences.ContainsKey(type)) + { + om.SetMappingTypeSequence(_mappersSequences[type]); + } } finally { @@ -141,7 +163,7 @@ protected virtual MetadataProviderBase CreateMetadataProvider() #region Public Members - public ExtensionList Extensions { get; set; } + public virtual ExtensionList Extensions { get; set; } #endregion @@ -856,7 +878,9 @@ public virtual object ConvertChangeType(object value, Type conversionType, bool } } else if (conversionType.IsEnum) - return Enum.ToObject(conversionType, ConvertChangeType(value, Enum.GetUnderlyingType(conversionType), false)); + { + return MapValueToEnum(value, conversionType); + } if (isNullable) { @@ -1111,6 +1135,43 @@ public virtual MapValue[] GetMapValues([JetBrains.Annotations.NotNull] Type type } } + private readonly Dictionary _memberMapValues = new Dictionary(); + + private Type GetMapValueType(MapValue[] mapValues) + { + if (mapValues != null) + { + var value = mapValues.SelectMany(mv => mv.MapValues).FirstOrDefault(); + if (value != null) + { + return value.GetType(); + } + } + return null; + } + + public virtual MapValue[] GetMapValues([JetBrains.Annotations.NotNull] MemberAccessor memberAccessor) + { + if (memberAccessor == null) throw new ArgumentNullException("memberAccessor"); + + lock (_memberMapValues) + { + MapValue[] mapValues; + + if (_memberMapValues.TryGetValue(memberAccessor, out mapValues)) + return mapValues; + + var typeExt = TypeExtension.GetTypeExtension(memberAccessor.Type, Extensions); + bool isSet; + + mapValues = MetadataProvider.GetMapValues(typeExt, memberAccessor, out isSet); + + _memberMapValues.Add(memberAccessor, mapValues); + + return mapValues; + } + } + #endregion #region GetDefaultValue @@ -1370,21 +1431,6 @@ internal protected static int[] GetIndex( return index; } - [CLSCompliant(false), Obsolete] - protected static void MapInternal( - IMapDataSource source, object sourceObject, - IMapDataDestination dest, object destObject, - int[] index) - { - for (int i = 0; i < index.Length; i++) - { - int n = index[i]; - - if (n >= 0) - dest.SetValue(destObject, n, source.GetValue(sourceObject, i)); - } - } - [CLSCompliant(false)] internal protected static void MapInternal( IMapDataSource source, object sourceObject, @@ -1628,41 +1674,119 @@ public virtual void MapSourceListToDestinationList( [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")] public virtual object MapValueToEnum(object value, Type type) { - if (value == null) + if (value == null || value == DBNull.Value) return GetNullValue(type); MapValue[] mapValues = GetMapValues(type); + var mapValueType = GetMapValueType(mapValues); + if (mapValueType != null && value.GetType() != mapValueType) + { + value = ConvertChangeType(value, mapValueType); + } + + if (mapValues != null) + { + var comp = (IComparable) value; + + foreach (MapValue mv in mapValues) + foreach (object mapValue in mv.MapValues) + { + try + { + if (comp.CompareTo(mapValue) == 0) + return mv.OrigValue; + } + catch (ArgumentException ex) + { + Debug.WriteLine(ex.Message, MethodBase.GetCurrentMethod().Name); + } + } + } + + InvalidCastException exInvalidCast = null; + + var enumType = TypeHelper.UnwrapNullableType(type); + try + { + value = ConvertChangeType(value, Enum.GetUnderlyingType(enumType)); + + if (Enum.IsDefined(enumType, value)) + { + // Regular (known) enum field w/o explicit mapping defined. + // + return Enum.ToObject(enumType, value); + } + } + catch (InvalidCastException ex) + { + exInvalidCast = ex; + } + + // Default value. + // + object defaultValue = GetDefaultValue(type); + + if (defaultValue != null) + return defaultValue; + + if (exInvalidCast != null) + { + // Rethrow an InvalidCastException when no default value specified. + // + throw exInvalidCast; + } + + // At this point we have an undefined enum value. + // + return Enum.ToObject(enumType, value); + } + + [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")] + public virtual object MapValueToEnum(object value, MemberAccessor ma) + { + if (value == null || value is DBNull) + return GetNullValue(ma.Type); + + MapValue[] mapValues = GetMapValues(ma); + + var mapValueType = GetMapValueType(mapValues); + if (mapValueType != null && value.GetType() != mapValueType) + { + value = ConvertChangeType(value, mapValueType); + } + if (mapValues != null) { var comp = (IComparable)value; foreach (MapValue mv in mapValues) - foreach (object mapValue in mv.MapValues) - { - try - { - if (comp.CompareTo(mapValue) == 0) - return mv.OrigValue; - } - catch (ArgumentException ex) + foreach (object mapValue in mv.MapValues) { - Debug.WriteLine(ex.Message, MethodBase.GetCurrentMethod().Name); + try + { + if (comp.CompareTo(mapValue) == 0) + return mv.OrigValue; + } + catch (ArgumentException ex) + { + Debug.WriteLine(ex.Message, MethodBase.GetCurrentMethod().Name); + } } - } } InvalidCastException exInvalidCast = null; + var enumType = TypeHelper.UnwrapNullableType(ma.Type); try { - value = ConvertChangeType(value, Enum.GetUnderlyingType(type)); + value = ConvertChangeType(value, Enum.GetUnderlyingType(enumType)); - if (Enum.IsDefined(type, value)) + if (Enum.IsDefined(enumType, value)) { // Regular (known) enum field w/o explicit mapping defined. // - return Enum.ToObject(type, value); + return Enum.ToObject(enumType, value); } } catch (InvalidCastException ex) @@ -1672,7 +1796,7 @@ public virtual object MapValueToEnum(object value, Type type) // Default value. // - object defaultValue = GetDefaultValue(type); + object defaultValue = GetDefaultValue(ma.Type); if (defaultValue != null) return defaultValue; @@ -1686,7 +1810,7 @@ public virtual object MapValueToEnum(object value, Type type) // At this point we have an undefined enum value. // - return Enum.ToObject(type, value); + return Enum.ToObject(enumType, value); } [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")] @@ -1735,7 +1859,106 @@ public virtual object MapEnumToValue(object value, [JetBrains.Annotations.NotNul } return convertToUnderlyingType ? - System.Convert.ChangeType(value, Enum.GetUnderlyingType(value.GetType()), Thread.CurrentThread.CurrentCulture) : + System.Convert.ChangeType(value, Enum.GetUnderlyingType(type), Thread.CurrentThread.CurrentCulture) : + value; + } + + [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")] + public virtual object MapEnumToValue(object value, [JetBrains.Annotations.NotNull] MemberAccessor memberAccessor, bool convertToUnderlyingType) + { + if (value == null) + return null; + + if (memberAccessor == null) throw new ArgumentNullException("memberAccessor"); + + if (value is IEnumerable) + { +#if SILVERLIGHT + var result = new List(); + + foreach (var item in (IEnumerable)value) + { + result.Add(MapEnumToValue(item, memberAccessor, convertToUnderlyingType)); + } + + var type = typeof(object); + + foreach (var var in result) + { + if (var != null) + { + type = var.GetType(); + break; + } + } + + var arr = Array.CreateInstance(type, result.Count); + + Array.Copy(result.ToArray(), arr, arr.Length); + + return arr; +#else + var result = new ArrayList(); + + foreach (var item in (IEnumerable)value) + { + result.Add(MapEnumToValue(item, memberAccessor, convertToUnderlyingType)); + } + + var type = typeof(object); + + foreach (var var in result) + { + if (var != null) + { + type = var.GetType(); + break; + } + } + + return result.ToArray(type); +#endif + } + + object nullValue = GetNullValue(memberAccessor.Type); + + if (nullValue != null) + { + IComparable comp = (IComparable)value; + + try + { + if (comp.CompareTo(nullValue) == 0) + return null; + } + catch + { + } + } + + MapValue[] mapValues = GetMapValues(memberAccessor); + + if (mapValues != null) + { + IComparable comp = (IComparable)value; + + foreach (MapValue mv in mapValues) + { + try + { + if (comp.CompareTo(mv.OrigValue) == 0) + return mv.MapValues[0]; + } + catch + { + } + } + } + + var memberAccessorType = TypeHelper.UnwrapNullableType(memberAccessor.Type); + + return convertToUnderlyingType ? + System.Convert.ChangeType(value, Enum.GetUnderlyingType(memberAccessorType), Thread.CurrentThread.CurrentCulture) : value; } @@ -1905,15 +2128,7 @@ public object MapDataRowToObject( object destObject, params object[] parameters) { - if (destObject == null) throw new ArgumentNullException("destObject"); - - MapInternal( - null, - CreateDataRowMapper(dataRow, DataRowVersion.Default), dataRow, - GetObjectMapper(destObject. GetType()), destObject, - parameters); - - return destObject; + return MapDataRowToObject(dataRow, DataRowVersion.Default, destObject, parameters); } public object MapDataRowToObject( @@ -1938,15 +2153,7 @@ public object MapDataRowToObject( Type destObjectType, params object[] parameters) { - InitContext ctx = new InitContext(); - - ctx.MappingSchema = this; - ctx.DataSource = CreateDataRowMapper(dataRow, DataRowVersion.Default); - ctx.SourceObject = dataRow; - ctx.ObjectMapper = GetObjectMapper(destObjectType); - ctx.Parameters = parameters; - - return MapInternal(ctx); + return MapDataRowToObject(dataRow, DataRowVersion.Default, destObjectType, parameters); } public object MapDataRowToObject( @@ -1966,21 +2173,6 @@ public object MapDataRowToObject( return MapInternal(ctx); } - public T MapDataRowToObject( - DataRow dataRow, - params object[] parameters) - { - return (T)MapDataRowToObject(dataRow, typeof(T), parameters); - } - - public T MapDataRowToObject( - DataRow dataRow, - DataRowVersion version, - params object[] parameters) - { - return (T)MapDataRowToObject(dataRow, version, typeof(T), parameters); - } - #endregion #region MapDataRowToDataRow @@ -2140,12 +2332,11 @@ public object MapDataReaderToObject( return destObject; } - //NOTE changed to virtual public virtual object MapDataReaderToObject( IDataReader dataReader, Type destObjectType, params object[] parameters) - { + { InitContext ctx = new InitContext(); ctx.MappingSchema = this; @@ -2157,6 +2348,7 @@ public virtual object MapDataReaderToObject( return MapInternal(ctx); } + //TODO Remove unused method public T MapDataReaderToObject( IDataReader dataReader, params object[] parameters) @@ -2883,8 +3075,8 @@ public Dictionary MapDataTableToDictionary( #region DataReader #region MapDataReaderToList - - public IList MapDataReaderToList( + + public virtual IList MapDataReaderToList( IDataReader reader, IList list, Type destObjectType, @@ -2905,24 +3097,15 @@ public IList MapDataReaderToList( { IList list = new List(); - MapSourceListToDestinationList( - CreateDataReaderListMapper(reader), - CreateObjectListMapper (list, GetObjectMapper(destObjectType)), - parameters); - - return list; + return MapDataReaderToList(reader, list, destObjectType, parameters); } - //NOTE changed to virtual - public virtual IList MapDataReaderToList( + public IList MapDataReaderToList( IDataReader reader, IList list, params object[] parameters) { - MapSourceListToDestinationList( - CreateDataReaderListMapper(reader), - CreateObjectListMapper ((IList)list, GetObjectMapper(typeof(T))), - parameters); + MapDataReaderToList(reader, (IList) list, typeof (T), parameters); return list; } @@ -2933,12 +3116,9 @@ public List MapDataReaderToList( { List list = new List(); - MapSourceListToDestinationList( - CreateDataReaderListMapper(reader), - CreateObjectListMapper (list, GetObjectMapper(typeof(T))), - parameters); + MapDataReaderToList(reader, list, parameters); - return list; + return list; } #endregion @@ -3665,12 +3845,28 @@ List relations public Func GetObjectMapper() { - return new ExpressionMapper(this).GetMapper(); + return new ExpressionMapper(this) + { + IncludeComplexMapping = Common.Configuration.ExpressionMapper.IncludeComplexMapping + }.GetMapper(); } public Func GetObjectMapper(bool deepCopy) { - return new ExpressionMapper(this) { DeepCopy = deepCopy }.GetMapper(); + return new ExpressionMapper(this) + { + DeepCopy = deepCopy, + IncludeComplexMapping = Common.Configuration.ExpressionMapper.IncludeComplexMapping + }.GetMapper(); + } + + public Func GetObjectMapper(bool deepCopy, bool includeComplexMapping) + { + return new ExpressionMapper(this) + { + DeepCopy = deepCopy, + IncludeComplexMapping = includeComplexMapping + }.GetMapper(); } #endregion @@ -3682,6 +3878,6 @@ public virtual object ConvertParameterValue(object value, Type systemType) return value; } - #endregion + #endregion } } diff --git a/Source/Mapping/MemberMapperAttribute.cs b/Source/Mapping/MemberMapperAttribute.cs index 6a4decce1..ea1eacc99 100644 --- a/Source/Mapping/MemberMapperAttribute.cs +++ b/Source/Mapping/MemberMapperAttribute.cs @@ -33,7 +33,7 @@ public Type MemberMapperType get { return _memberMapperType; } } - public virtual MemberMapper MemberMapper + public virtual MemberMapper MemberMapper { get { diff --git a/Source/Mapping/MemberMappers/BinarySerialisationMapper.cs b/Source/Mapping/MemberMappers/BinarySerialisationMapper.cs new file mode 100644 index 000000000..df37c5e9d --- /dev/null +++ b/Source/Mapping/MemberMappers/BinarySerialisationMapper.cs @@ -0,0 +1,39 @@ +using System.IO; +using System.Runtime.Serialization.Formatters.Binary; + +namespace BLToolkit.Mapping.MemberMappers +{ + public class BinarySerialisationMapper : MemberMapper + { + public override void SetValue(object o, object value) + { + if (value != null) this.MemberAccessor.SetValue(o, BinarydesSrialize((byte[])value)); + } + + public override object GetValue(object o) + { + return BinarySerialize(this.MemberAccessor.GetValue(o)); + } + + static byte[] BinarySerialize(object obj) + { + if (obj == null) return null; + MemoryStream memoryStream = new MemoryStream(); + BinaryFormatter binaryFormatter = new BinaryFormatter(); + binaryFormatter.Serialize(memoryStream, obj); + memoryStream.Flush(); + memoryStream.Position = 0; + return memoryStream.ToArray(); + } + + static object BinarydesSrialize(byte[] data) + { + using (var stream = new MemoryStream(data)) + { + var formatter = new BinaryFormatter(); + stream.Seek(0, SeekOrigin.Begin); + return formatter.Deserialize(stream); + } + } + } +} diff --git a/Source/Mapping/MemberMappers/BinarySerialisationToBase64StringMapper.cs b/Source/Mapping/MemberMappers/BinarySerialisationToBase64StringMapper.cs new file mode 100644 index 000000000..f9eecd94c --- /dev/null +++ b/Source/Mapping/MemberMappers/BinarySerialisationToBase64StringMapper.cs @@ -0,0 +1,40 @@ +using System; +using System.IO; +using System.Runtime.Serialization.Formatters.Binary; + +namespace BLToolkit.Mapping.MemberMappers +{ + public class BinarySerialisationToBase64StringMapper : MemberMapper + { + public override void SetValue(object o, object value) + { + if (value != null) this.MemberAccessor.SetValue(o, BinarydeSerialize(Convert.FromBase64String(value.ToString()))); + } + + public override object GetValue(object o) + { + return Convert.ToBase64String(BinarySerialize(this.MemberAccessor.GetValue(o))); + } + + static byte[] BinarySerialize(object obj) + { + if (obj == null) return null; + MemoryStream memoryStream = new MemoryStream(); + BinaryFormatter binaryFormatter = new BinaryFormatter(); + binaryFormatter.Serialize(memoryStream, obj); + memoryStream.Flush(); + memoryStream.Position = 0; + return memoryStream.ToArray(); + } + + static object BinarydeSerialize(byte[] data) + { + using (var stream = new MemoryStream(data)) + { + var formatter = new BinaryFormatter(); + stream.Seek(0, SeekOrigin.Begin); + return formatter.Deserialize(stream); + } + } + } +} diff --git a/Source/Mapping/MemberMappers/JSONSerialisationMapper.cs b/Source/Mapping/MemberMappers/JSONSerialisationMapper.cs new file mode 100644 index 000000000..eb4eafa49 --- /dev/null +++ b/Source/Mapping/MemberMappers/JSONSerialisationMapper.cs @@ -0,0 +1,49 @@ +using System; +using System.IO; +using System.Runtime.Serialization.Json; +using System.Text; + +namespace BLToolkit.Mapping.MemberMappers +{ + public class JSONSerialisationMapper : MemberMapper + { + public override void SetValue(object o, object value) + { + if (value != null) this.MemberAccessor.SetValue(o, Deserialize(value.ToString())); + } + + public override object GetValue(object o) + { + return this.serialize(this.MemberAccessor.GetValue(o)); + } + + private string serialize(object obj) + { + if (obj == null) return null; + + DataContractJsonSerializer ser = new DataContractJsonSerializer(this.Type); + MemoryStream ms = new MemoryStream(); + ser.WriteObject(ms, obj); + string jsonString = Encoding.UTF8.GetString(ms.ToArray()); + ms.Close(); + return jsonString; + } + + object Deserialize(string txt) + { + object retVal = null; + if (string.IsNullOrEmpty(txt)) return null; + + try + { + DataContractJsonSerializer ser = new DataContractJsonSerializer(this.Type); + MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(txt)); + retVal = ser.ReadObject(ms); + } + catch (Exception) + { + } + return retVal; + } + } +} diff --git a/Source/Mapping/MemberMappers/TimeSpanBigIntMapper.cs b/Source/Mapping/MemberMappers/TimeSpanBigIntMapper.cs new file mode 100644 index 000000000..ee4b62ff0 --- /dev/null +++ b/Source/Mapping/MemberMappers/TimeSpanBigIntMapper.cs @@ -0,0 +1,24 @@ +#region + +using System; + +#endregion + +namespace BLToolkit.Mapping.MemberMappers +{ + public class TimeSpanBigIntMapper : MemberMapper + { + public override void SetValue(object o, object value) + { + if (value != null) MemberAccessor.SetValue(o, new TimeSpan(Convert.ToInt64(value))); + } + + public override object GetValue(object o) + { + var val = MemberAccessor.GetValue(o); + if (val != null) + return ((TimeSpan) val).Ticks; + return null; + } + } +} \ No newline at end of file diff --git a/Source/Mapping/MemberMappers/XMLSerialisationMapper.cs b/Source/Mapping/MemberMappers/XMLSerialisationMapper.cs new file mode 100644 index 000000000..18996e39e --- /dev/null +++ b/Source/Mapping/MemberMappers/XMLSerialisationMapper.cs @@ -0,0 +1,58 @@ +using System; +using System.IO; +using System.Xml; +using System.Xml.Serialization; + +namespace BLToolkit.Mapping.MemberMappers +{ + public class XMLSerialisationMapper : MemberMapper + { + public override void SetValue(object o, object value) + { + if (value != null) this.MemberAccessor.SetValue(o, this.Deserialize(value.ToString())); + } + + public override object GetValue(object o) + { + return this.XmlSerialize(this.MemberAccessor.GetValue(o)); + } + + string XmlSerialize(object obj) + { + if (obj == null) return null; + XmlSerializer serializer = new XmlSerializer(this.Type); + MemoryStream ms = new MemoryStream(); + XmlWriterSettings settings = new XmlWriterSettings(); + settings.OmitXmlDeclaration = true; + settings.Indent = true; + XmlWriter writer = XmlWriter.Create(ms, settings); + XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces(); + namespaces.Add(string.Empty, string.Empty); + serializer.Serialize(writer, obj, namespaces); + StreamReader r = new StreamReader(ms); + r.BaseStream.Seek(0, SeekOrigin.Begin); + + return r.ReadToEnd(); + } + + object Deserialize(string txt) + { + object retVal = null; + if (string.IsNullOrEmpty(txt)) return null; + + try + { + XmlSerializer ser = new XmlSerializer(this.Type); + StringReader stringReader = new StringReader(txt); + XmlTextReader xmlReader = new XmlTextReader(stringReader); + retVal = ser.Deserialize(xmlReader); + xmlReader.Close(); + stringReader.Close(); + } + catch (Exception) + { + } + return retVal; + } + } +} diff --git a/Source/Mapping/ObjectMapper.cs b/Source/Mapping/ObjectMapper.cs index 68ff1452b..17f4e1aa7 100644 --- a/Source/Mapping/ObjectMapper.cs +++ b/Source/Mapping/ObjectMapper.cs @@ -26,6 +26,18 @@ protected virtual MemberMapper CreateMemberMapper(MapMemberInfo mapMemberInfo) var attr = mapMemberInfo.MemberAccessor.GetAttribute(); + MemberExtension ext; + + if (_extension != null && _extension.Members.TryGetValue(mapMemberInfo.MemberName,out ext)) + { + AttributeExtensionCollection attrExt; + + if (ext.Attributes.TryGetValue("MemberMapper", out attrExt)) + { + attr = new MemberMapperAttribute((Type)attrExt[0].Values["MemberMapperType"]); + } + } + if (attr == null) { var attrs = TypeHelper.GetAttributes(mapMemberInfo.Type, typeof(MemberMapperAttribute)); @@ -104,7 +116,8 @@ public List InheritanceMapping get { return _inheritanceMapping; } } - private TypeExtension _extension; + [CLSCompliant(false)] + protected TypeExtension _extension; public TypeExtension Extension { get { return _extension; } @@ -209,7 +222,8 @@ public int GetOrdinal(string name, bool byPropertyName) return GetOrdinal(name); } - private TypeAccessor _typeAccessor; + [CLSCompliant(false)] + protected TypeAccessor _typeAccessor; public TypeAccessor TypeAccessor { get { return _typeAccessor; } @@ -225,6 +239,18 @@ public MappingSchema MappingSchema #region Init Mapper + public void SetMappingTypeSequence(string sequenceName) + { + foreach (var memberMapper in _members) + { + if (memberMapper.MapMemberInfo.KeyGenerator != null) + { + memberMapper.MapMemberInfo.KeyGenerator = new SequenceKeyGenerator(sequenceName); + break; + } + } + } + public virtual void Init(MappingSchema mappingSchema, Type type) { if (type == null) throw new ArgumentNullException("type"); @@ -248,13 +274,13 @@ public virtual void Init(MappingSchema mappingSchema, Type type) if (GetMapIgnore(ma)) continue; - var mapFieldAttr = ma.GetAttribute(); + var mapFieldAttr = GetMapField(ma); // ma.GetAttribute(); if (mapFieldAttr == null || (mapFieldAttr.OrigName == null && mapFieldAttr.Format == null)) { var mi = new MapMemberInfo(); - var dbTypeAttribute = ma.GetAttribute(); + var dbTypeAttribute = GetDbType(ma); // ma.GetAttribute(); if (dbTypeAttribute != null) { @@ -282,6 +308,7 @@ public virtual void Init(MappingSchema mappingSchema, Type type) mi.DefaultValue = GetDefaultValue(ma); mi.Nullable = GetNullable (ma); mi.NullValue = GetNullValue (ma, mi.Nullable); + mi.KeyGenerator = GetKeyGenerator(ma); Add(CreateMemberMapper(mi)); } @@ -419,6 +446,7 @@ protected MemberMapper GetComplexMapper(string mapName, string origName) // So we cache failed requests. // If this optimization is a memory leak for you, just comment out next line. // + // TODO : Should we add an option property? if (_nameToComplexMapper.ContainsKey(name)) _nameToComplexMapper[name] = null; else @@ -453,12 +481,37 @@ protected virtual bool GetNullable(MemberAccessor memberAccessor) return MetadataProvider.GetNullable(MappingSchema, Extension, memberAccessor, out isSet); } + protected virtual bool GetLazyInstance(MemberAccessor memberAccessor) + { + bool isSet; + return MetadataProvider.GetLazyInstance(MappingSchema, Extension, memberAccessor, out isSet); + } + protected virtual bool GetMapIgnore(MemberAccessor memberAccessor) { bool isSet; return MetadataProvider.GetMapIgnore(Extension, memberAccessor, out isSet); } + protected virtual MapFieldAttribute GetMapField(MemberAccessor memberAccessor) + { + bool isSet; + return MetadataProvider.GetMapField(Extension, memberAccessor, out isSet); + } + + [CLSCompliant(false)] + protected virtual DbTypeAttribute GetDbType(MemberAccessor memberAccessor) + { + bool isSet; + return MetadataProvider.GetDbType(Extension, memberAccessor, out isSet); + } + + protected virtual PrimaryKeyAttribute GetPrimaryKey(MemberAccessor memberAccessor) + { + bool isSet; + return MetadataProvider.GetPrimaryKey(Extension, memberAccessor, out isSet); + } + protected virtual bool GetSqlIgnore(MemberAccessor memberAccessor) { bool isSet; @@ -471,6 +524,25 @@ protected virtual string GetFieldName(MemberAccessor memberAccessor) return MetadataProvider.GetFieldName(Extension, memberAccessor, out isSet); } + protected virtual KeyGenerator GetKeyGenerator(MemberAccessor memberAccessor) + { + bool isSet; + var nonUpdatableAttribute = MetadataProvider.GetNonUpdatableAttribute(memberAccessor.Type, Extension, memberAccessor, out isSet); + if (isSet && nonUpdatableAttribute is IdentityAttribute) + { + bool isSeqSet; + string sequenceName = MetadataProvider.GetSequenceName(Extension, memberAccessor, out isSeqSet); + if (!isSeqSet) + throw new NotImplementedException("Identity without sequence"); + + if (string.IsNullOrWhiteSpace(sequenceName)) + throw new Exception("SequenceName is empty"); + + return new SequenceKeyGenerator(sequenceName); + } + return null; + } + protected virtual string GetFieldStorage(MemberAccessor memberAccessor) { bool isSet; diff --git a/Source/Mapping/ScalarDataReaderMapper.cs b/Source/Mapping/ScalarDataReaderMapper.cs index c357744dd..0deba100d 100644 --- a/Source/Mapping/ScalarDataReaderMapper.cs +++ b/Source/Mapping/ScalarDataReaderMapper.cs @@ -75,7 +75,7 @@ public override object GetValue(object o, string name) public override Decimal GetDecimal (object o, int index) { return DataReader.GetDecimal (_index); } public override Guid GetGuid (object o, int index) { return DataReader.GetGuid (_index); } public override DateTime GetDateTime(object o, int index) { return DataReader.GetDateTime(_index); } - public override DateTimeOffset GetDateTimeOffset(object o, int index) { return DataReader.GetDateTime(_index); } + public override DateTimeOffset GetDateTimeOffset(object o, int index) { return (DateTimeOffset)DataReader.GetValue(_index); } // Nullable type getters. // @@ -100,7 +100,7 @@ public override object GetValue(object o, string name) public override Decimal? GetNullableDecimal (object o, int index) { return DataReader.IsDBNull(_index)? null: (Decimal?) DataReader.GetDecimal (_index); } public override Guid? GetNullableGuid (object o, int index) { return DataReader.IsDBNull(_index)? null: (Guid?) DataReader.GetGuid (_index); } public override DateTime? GetNullableDateTime(object o, int index) { return DataReader.IsDBNull(_index)? null: (DateTime?)DataReader.GetDateTime(_index); } - public override DateTimeOffset? GetNullableDateTimeOffset(object o, int index) { return DataReader.IsDBNull(_index)? null: (DateTimeOffset?)DataReader.GetDateTime(_index); } + public override DateTimeOffset? GetNullableDateTimeOffset(object o, int index) { return DataReader.IsDBNull(_index)? null: (DateTimeOffset?)DataReader.GetValue(_index); } #if !SILVERLIGHT diff --git a/Source/Properties/AssemblyInfo.cs b/Source/Properties/AssemblyInfo.cs index 175aba086..59e58989f 100644 --- a/Source/Properties/AssemblyInfo.cs +++ b/Source/Properties/AssemblyInfo.cs @@ -9,11 +9,13 @@ // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle (BLToolkitConstants.ProductName)] -[assembly: AssemblyDescription(BLToolkitConstants.ProductDescription)] -[assembly: AssemblyProduct (BLToolkitConstants.ProductName)] -[assembly: AssemblyCopyright (BLToolkitConstants.Copyright)] -[assembly: AssemblyCulture ("")] +[assembly: AssemblyTitle (BLToolkitConstants.ProductName)] +[assembly: AssemblyDescription (BLToolkitConstants.ProductDescription)] +[assembly: AssemblyProduct (BLToolkitConstants.ProductName)] +[assembly: AssemblyCopyright (BLToolkitConstants.Copyright)] +[assembly: AssemblyCulture ("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany (BLToolkitConstants.ProductName)] // Setting ComVisible to false makes the types in this assembly not visible // to COM componenets. If you need to access a type in this assembly from diff --git a/Source/Properties/BLToolkitConstants.cs b/Source/Properties/BLToolkitConstants.cs index 315323cd6..32df00dc3 100644 --- a/Source/Properties/BLToolkitConstants.cs +++ b/Source/Properties/BLToolkitConstants.cs @@ -20,20 +20,28 @@ public static partial class BLToolkitConstants /// /// Build component of version. /// - public const string Build = "16"; + public const string Build = "21"; /// /// Full version string. /// - public const string FullVersionString = MajorVersion + "." + MinorVersion + "." + Build + "." + Revision; + public const string FullVersionString = MajorVersion + "." + MinorVersion + "." + Build + "." + AutoRevision; /// /// Full BLT version. /// public static readonly Version FullVersion = new Version(FullVersionString); - public const string ProductName = "Business Logic Toolkit"; + public const string ProductName = "BLToolkit"; public const string ProductDescription = "Business Logic Toolkit for .NET"; - public const string Copyright = "\xA9 2002-2012 www.bltoolkit.net"; + public const string Copyright = "\xA9 2002-2013 www.bltoolkit.net"; } + + partial class BLToolkitConstants + { + // + // Revision component of version. + // + public const string AutoRevision = "15"; + } } diff --git a/Source/Properties/JetBrains.Annotations.cs b/Source/Properties/JetBrains.Annotations.cs index 0f10d21fc..5229f57d7 100644 --- a/Source/Properties/JetBrains.Annotations.cs +++ b/Source/Properties/JetBrains.Annotations.cs @@ -275,4 +275,7 @@ internal enum ImplicitUseFlags /// IncludeMembers = 1 } + + [AttributeUsage(AttributeTargets.Parameter, Inherited = true)] + internal sealed class InstantHandleAttribute : Attribute { } } diff --git a/Extensions/JointureAddOn/Emit/DynamicCompilationSpike.cs b/Source/Reflection/Emit/DynamicCompilationSpike.cs similarity index 100% rename from Extensions/JointureAddOn/Emit/DynamicCompilationSpike.cs rename to Source/Reflection/Emit/DynamicCompilationSpike.cs diff --git a/Extensions/JointureAddOn/Emit/FunctionFactory.cs b/Source/Reflection/Emit/FunctionFactory.cs similarity index 100% rename from Extensions/JointureAddOn/Emit/FunctionFactory.cs rename to Source/Reflection/Emit/FunctionFactory.cs diff --git a/Source/Reflection/ExprMemberAccessor.cs b/Source/Reflection/ExprMemberAccessor.cs index e7b5a8f9c..c770b28c1 100644 --- a/Source/Reflection/ExprMemberAccessor.cs +++ b/Source/Reflection/ExprMemberAccessor.cs @@ -130,7 +130,7 @@ public BaseAccessor(TypeAccessor typeAccessor, ParameterExpression par, MemberEx { Expression ex = expr; - if (ex.Type.IsEnum && ex.Type != typeof(T)) + if (TypeHelper.IsEnumOrNullableEnum(ex.Type) && ex.Type != typeof(T)) ex = Expression.Convert(ex, typeof(T)); Getter = Expression.Lambda>(ex, par).Compile(); diff --git a/Source/Reflection/ExprTypeAccessor.cs b/Source/Reflection/ExprTypeAccessor.cs index 1a1a7e57b..490a2cf1d 100644 --- a/Source/Reflection/ExprTypeAccessor.cs +++ b/Source/Reflection/ExprTypeAccessor.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using System.Collections.Generic; using System.Linq.Expressions; using System.Reflection; @@ -19,10 +20,8 @@ static ExprTypeAccessor() if (type.IsValueType) { - var body = Expression.Constant(default(T)); - - _createInstance = Expression.Lambda>(body).Compile(); - _createInstanceInit = Expression.Lambda>(body, initPar).Compile(); + _createInstance = () => default(T); + _createInstanceInit = ctx => default(T); } else { @@ -50,15 +49,39 @@ static ExprTypeAccessor() } } + var originalType = typeof(TOriginal); + // Add fields. // - foreach (var fi in typeof(TOriginal).GetFields(BindingFlags.Instance | BindingFlags.Public)) + foreach (var fi in originalType.GetFields(BindingFlags.Instance | BindingFlags.Public)) _members.Add(fi); - foreach (var pi in typeof(TOriginal).GetProperties(BindingFlags.Instance | BindingFlags.Public)) + foreach (var pi in originalType.GetProperties(BindingFlags.Instance | BindingFlags.Public)) if (pi.GetIndexParameters().Length == 0) _members.Add(pi); + // Add explicit iterface implementation properties support + // Or maybe we should support all private fields/properties? + var interfaceMethods = originalType.GetInterfaces().SelectMany(ti => originalType.GetInterfaceMap(ti).TargetMethods).ToList(); + + if (interfaceMethods.Count > 0) + { + foreach (var pi in originalType.GetProperties(BindingFlags.Instance | BindingFlags.NonPublic)) + { + if (pi.GetIndexParameters().Length == 0) + { + var getMethod = pi.GetGetMethod(true); + var setMethod = pi.GetSetMethod(true); + + if ((getMethod == null || interfaceMethods.Contains(getMethod)) && + (setMethod == null || interfaceMethods.Contains(setMethod))) + { + _members.Add(pi); + } + } + } + } + // ObjectFactory // var attr = TypeHelper.GetFirstAttribute(type, typeof(ObjectFactoryAttribute)); diff --git a/Source/Reflection/Extension/ExtensionList.cs b/Source/Reflection/Extension/ExtensionList.cs index c836b62fc..7128e571e 100644 --- a/Source/Reflection/Extension/ExtensionList.cs +++ b/Source/Reflection/Extension/ExtensionList.cs @@ -10,7 +10,8 @@ public class ExtensionList : Dictionary get { TypeExtension value; - return TryGetValue(typeName, out value) ? value : TypeExtension.Null; + lock (this) + return TryGetValue(typeName, out value) ? value : TypeExtension.Null; } } @@ -18,9 +19,10 @@ public TypeExtension this[Type type] { get { - foreach (var ext in Values) - if (ext.Name == type.Name || ext.Name == type.FullName) - return ext; + lock (this) + foreach (var ext in Values) + if (ext.Name == type.Name || ext.Name == type.FullName) + return ext; if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) return this[Nullable.GetUnderlyingType(type)]; @@ -31,7 +33,8 @@ public TypeExtension this[Type type] public void Add(TypeExtension typeInfo) { - Add(typeInfo.Name, typeInfo); + lock (this) + Add(typeInfo.Name, typeInfo); } } } diff --git a/Source/Reflection/MemberAccessor.cs b/Source/Reflection/MemberAccessor.cs index 40f33f372..33b51edb9 100644 --- a/Source/Reflection/MemberAccessor.cs +++ b/Source/Reflection/MemberAccessor.cs @@ -1,10 +1,16 @@ using System; +using System.Linq.Expressions; +using System.Reflection; +using BLToolkit.Data.Linq; + +#if DATA using System.Data.SqlTypes; -using System.Reflection; -using System.ComponentModel; +#endif #if !SILVERLIGHT && !DATA using BLToolkit.ComponentModel; +using System.ComponentModel; +using System.Data.SqlTypes; #endif namespace BLToolkit.Reflection @@ -122,9 +128,26 @@ public virtual Boolean IsNull(object o) return true; } + static object GetDefaultValue() + { + return default(T); + } + + object _defaultValue; + public virtual object GetValue(object o) { - return null; + if (_defaultValue == null && Type.IsValueType && !TypeHelper.IsNullableType(Type)) + { + var mi = ReflectionHelper.Expressor.MethodExpressor(_ => GetDefaultValue()); + + _defaultValue = + Expression.Lambda>( + Expression.Call(mi.GetGenericMethodDefinition().MakeGenericMethod(Type))) + .Compile()(); + } + + return _defaultValue; } public virtual void SetValue(object o, object value) diff --git a/Source/Reflection/MetadataProvider/AttributeMetadataProvider.cs b/Source/Reflection/MetadataProvider/AttributeMetadataProvider.cs index 759c0faa5..8fc09afdc 100644 --- a/Source/Reflection/MetadataProvider/AttributeMetadataProvider.cs +++ b/Source/Reflection/MetadataProvider/AttributeMetadataProvider.cs @@ -2,6 +2,9 @@ using System.Collections; using System.Collections.Generic; using System.Reflection; +using BLToolkit.Data.Sql.SqlProvider; + +using BLToolkit.TypeBuilder; namespace BLToolkit.Reflection.MetadataProvider { @@ -173,6 +176,58 @@ public override bool GetMapIgnore(TypeExtension typeExtension, MemberAccessor me #endregion + #region GetMapField + + public override MapFieldAttribute GetMapField(TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + var attr = member.GetAttribute() ?? (MapFieldAttribute)TypeHelper.GetFirstAttribute(member.Type, typeof(MapFieldAttribute)); + + if (attr != null) + { + isSet = true; + return attr; + } + + return base.GetMapField(typeExtension, member, out isSet); + } + + #endregion + + #region GetDbType + + [CLSCompliant(false)] + public override DbTypeAttribute GetDbType(TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + var attr = member.GetAttribute() ?? (DbTypeAttribute)TypeHelper.GetFirstAttribute(member.Type, typeof(DbTypeAttribute)); + + if (attr != null) + { + isSet = true; + return attr; + } + + return base.GetDbType(typeExtension, member, out isSet); + } + + #endregion + + #region GetPrimaryKey + + public override PrimaryKeyAttribute GetPrimaryKey(TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + var attr = member.GetAttribute() ?? (PrimaryKeyAttribute)TypeHelper.GetFirstAttribute(member.Type, typeof(PrimaryKeyAttribute)); + + if (attr != null) + { + isSet = true; + return attr; + } + + return base.GetPrimaryKey(typeExtension, member, out isSet); + } + + #endregion + #region GetTrimmable public override bool GetTrimmable(TypeExtension typeExtension, MemberAccessor member, out bool isSet) @@ -220,18 +275,20 @@ public override MapValue[] GetMapValues(TypeExtension typeExtension, MemberAcces attrs = member.GetTypeAttributes(typeof(MapValueAttribute)); + var memberType = TypeHelper.UnwrapNullableType(member.Type); + if (attrs != null && attrs.Length > 0) { if (list == null) list = new List(attrs.Length); foreach (MapValueAttribute a in attrs) - if (a.Type == null && a.OrigValue != null && a.OrigValue.GetType() == member.Type || - a.Type is Type && (Type)a.Type == member.Type) + if (a.Type == null && a.OrigValue != null && a.OrigValue.GetType() == memberType || + a.Type is Type && (Type)a.Type == memberType) list.Add(new MapValue(a.OrigValue, a.Values)); } - var typeMapValues = GetMapValues(typeExtension, member.Type, out isSet); + var typeMapValues = GetMapValues(typeExtension, memberType, out isSet); if (list == null) return typeMapValues; @@ -432,6 +489,31 @@ public override bool GetNullable(MappingSchema mappingSchema, TypeExtension type #endregion + #region GetLazyInstance + + public override bool GetLazyInstance(MappingSchema mappingSchema, TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + var attr1 = member.GetAttribute(); + + if (attr1 != null) + { + isSet = true; + return attr1.IsLazy; + } + + attr1 = (LazyInstanceAttribute)TypeHelper.GetFirstAttribute(member.MemberInfo.DeclaringType, typeof(LazyInstanceAttribute)); + + if (attr1 != null) + { + isSet = true; + return attr1.IsLazy; + } + + return base.GetLazyInstance(mappingSchema, typeExtension, member, out isSet); + } + + #endregion + #region GetNullValue private static object CheckNullValue(object value, MemberAccessor member) @@ -512,7 +594,13 @@ public override string GetDatabaseName(Type type, ExtensionList extensions, out public override string GetOwnerName(Type type, ExtensionList extensions, out bool isSet) { - var attrs = type.GetCustomAttributes(typeof(TableNameAttribute), true); + if (_typesOwners.ContainsKey(type)) + { + isSet = true; + return _typesOwners[type]; + } + + var attrs = type.GetCustomAttributes(typeof(TableNameAttribute), true); if (attrs.Length > 0) { @@ -524,7 +612,15 @@ public override string GetOwnerName(Type type, ExtensionList extensions, out boo return base.GetOwnerName(type, extensions, out isSet); } - #endregion + private readonly Dictionary _typesOwners = new Dictionary(); + + public override void SetOwnerName(Type type, string ownerName) + { + _typesOwners[type] = ownerName; + base.SetOwnerName(type, ownerName); + } + + #endregion #region GetTableName @@ -560,6 +656,19 @@ public override int GetPrimaryKeyOrder(Type type, TypeExtension typeExt, MemberA } #endregion + + public override string GetSequenceName(TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + var attr = member.GetAttribute(); + + if (attr != null) + { + isSet = true; + return attr.SequenceName; + } + + return base.GetSequenceName(typeExtension, member, out isSet); + } #region GetNonUpdatableFlag diff --git a/Source/Reflection/MetadataProvider/ExtensionMetadataProvider.cs b/Source/Reflection/MetadataProvider/ExtensionMetadataProvider.cs index f9f93a976..936fb029e 100644 --- a/Source/Reflection/MetadataProvider/ExtensionMetadataProvider.cs +++ b/Source/Reflection/MetadataProvider/ExtensionMetadataProvider.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Data; using System.Linq; using System.Reflection; @@ -20,11 +21,9 @@ public class ExtensionMetadataProvider : MetadataProviderBase private static object GetValue(TypeExtension typeExtension, MemberAccessor member, string elemName, out bool isSet) { - var value = typeExtension[member.Name][elemName].Value; - - isSet = value != null; - - return value; + AttributeExtensionCollection ext; + isSet = typeExtension[member.Name].Attributes.TryGetValue(elemName, out ext); + return isSet ? ext.Value : null; } #endregion @@ -85,6 +84,103 @@ public override bool GetMapIgnore(TypeExtension typeExtension, MemberAccessor me #endregion + #region GetMapField + + public override MapFieldAttribute GetMapField(TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + var extList = typeExtension[member.Name]["MapField"]; + + if (extList != AttributeExtensionCollection.Null) + { + isSet = true; + var attr = new MapFieldAttribute(); + + var extFormat = extList.FirstOrDefault(x => x.Name == "Format"); + var extMapName = extList.FirstOrDefault(x => x.Name == "MapName"); + var extIsInheritanceDiscriminator = extList.FirstOrDefault(x => x.Name == "IsInheritanceDiscriminator"); + var extOrigName = extList.FirstOrDefault(x => x.Name == "OrigName"); + var extStorage = extList.FirstOrDefault(x => x.Name == "Storage"); + + if (extFormat != null) + attr.Format = (string)extFormat.Value; + if (extMapName != null) + attr.MapName = (string)extMapName.Value; + if (extFormat != null) + attr.IsInheritanceDiscriminator = Convert.ToBoolean(extIsInheritanceDiscriminator.Value); + if (extFormat != null) + attr.OrigName = (string)extOrigName.Value; + if (extFormat != null) + attr.Storage = (string)extStorage.Value; + return attr; + } + + return base.GetMapField(typeExtension, member, out isSet); + } + + #endregion + + #region GetDbType + + [CLSCompliant(false)] + public override DbTypeAttribute GetDbType(TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + var extList = typeExtension[member.Name]["DbType"]; + + if (extList != AttributeExtensionCollection.Null) + { + isSet = true; + var attr = new DbTypeAttribute(DbType.String); + + var extDbType = extList.FirstOrDefault(x => x.Name == "DbType"); + var extSize = extList.FirstOrDefault(x => x.Name == "Size"); + + DbType dbType; + if (extDbType != null) + { +#if SILVERLIGHT || FW4 + DbType.TryParse(extDbType.Value.ToString(), out dbType); +#else + dbType = (DbType)Enum.Parse(typeof(DbType), extDbType.Value.ToString()); +#endif + attr.DbType = dbType; + } + if (extSize != null) + { + attr.Size = int.Parse(extSize.Value.ToString()); + } + return attr; + } + + return base.GetDbType(typeExtension, member, out isSet); + } + + #endregion + + #region GetPrimaryKey + + public override PrimaryKeyAttribute GetPrimaryKey(TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + var extList = typeExtension[member.Name]["PrimaryKey"]; + + if (extList != AttributeExtensionCollection.Null) + { + isSet = true; + int order = -1; + var extOrder = extList.FirstOrDefault(x => x.Name == "Order"); + if (extOrder != null) + { + order = int.Parse(extOrder.Value.ToString()); + } + var attr = new PrimaryKeyAttribute(order); + return attr; + } + + return base.GetPrimaryKey(typeExtension, member, out isSet); + } + + #endregion + + #region GetTrimmable public override bool GetTrimmable(TypeExtension typeExtension, MemberAccessor member, out bool isSet) @@ -272,6 +368,27 @@ public override bool GetNullable(MappingSchema mappingSchema, TypeExtension type #endregion + #region GetNullable + + public override bool GetLazyInstance(MappingSchema mappingSchema, TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + // Check extension + // + var value = GetValue(typeExtension, member, "LazyInstance", out isSet); + + if (isSet) + return TypeExtension.ToBoolean(value); + + // Check extension + // + if (GetValue(typeExtension, member, "LazyInstance", out isSet) != null) + return true; + + return base.GetLazyInstance(mappingSchema, typeExtension, member, out isSet); + } + + #endregion + #region GetNullable public override object GetNullValue(MappingSchema mappingSchema, TypeExtension typeExtension, MemberAccessor member, out bool isSet) diff --git a/Source/Reflection/MetadataProvider/LinqMetadataProvider.cs b/Source/Reflection/MetadataProvider/LinqMetadataProvider.cs index 09988d42c..2fc3bb3c7 100644 --- a/Source/Reflection/MetadataProvider/LinqMetadataProvider.cs +++ b/Source/Reflection/MetadataProvider/LinqMetadataProvider.cs @@ -1,10 +1,10 @@ using System; using System.Data.Linq.Mapping; using System.Linq; -using BLToolkit.DataAccess; namespace BLToolkit.Reflection.MetadataProvider { + using DataAccess; using Mapping; using Extension; diff --git a/Source/Reflection/MetadataProvider/MetadataProviderBase.cs b/Source/Reflection/MetadataProvider/MetadataProviderBase.cs index d27d66a47..661ecdb10 100644 --- a/Source/Reflection/MetadataProvider/MetadataProviderBase.cs +++ b/Source/Reflection/MetadataProvider/MetadataProviderBase.cs @@ -41,6 +41,12 @@ public virtual string GetFieldName(TypeExtension typeExtension, MemberAccessor m } #endregion + + public virtual string GetSequenceName(TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + isSet = false; + return null; + } #region GetFieldStorage @@ -83,6 +89,37 @@ public virtual bool GetMapIgnore(TypeExtension typeExtension, MemberAccessor mem #endregion + #region GetMapField + + public virtual MapFieldAttribute GetMapField(TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + isSet = false; + return null; + } + + #endregion + + #region GetDbType + + [CLSCompliant(false)] + public virtual DbTypeAttribute GetDbType(TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + isSet = false; + return null; + } + + #endregion + + #region GetPrimaryKey + + public virtual PrimaryKeyAttribute GetPrimaryKey(TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + isSet = false; + return null; + } + + #endregion + #region GetTrimmable public virtual bool GetTrimmable(TypeExtension typeExtension, MemberAccessor member, out bool isSet) @@ -140,6 +177,16 @@ public virtual bool GetNullable(MappingSchema mappingSchema, TypeExtension typeE #endregion + #region GetLazyInstance + + public virtual bool GetLazyInstance(MappingSchema mappingSchema, TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + isSet = false; + return false; + } + + #endregion + #region GetNullValue public virtual object GetNullValue(MappingSchema mappingSchema, TypeExtension typeExtension, MemberAccessor member, out bool isSet) @@ -182,6 +229,11 @@ public virtual string GetOwnerName(Type type, ExtensionList extensions, out bool return null; } + public virtual void SetOwnerName(Type type, string ownerName) + { + + } + #endregion #region GetTableName diff --git a/Source/Reflection/MetadataProvider/MetadataProviderList.cs b/Source/Reflection/MetadataProvider/MetadataProviderList.cs index c6d4f760a..d06b81bcf 100644 --- a/Source/Reflection/MetadataProvider/MetadataProviderList.cs +++ b/Source/Reflection/MetadataProvider/MetadataProviderList.cs @@ -121,6 +121,58 @@ public override bool GetMapIgnore(TypeExtension typeExtension, MemberAccessor me #endregion + #region GetMapField + + public override MapFieldAttribute GetMapField(TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + foreach (var p in _list) + { + var attr = p.GetMapField(typeExtension, member, out isSet); + + if (attr != null) + return attr; + } + + return base.GetMapField(typeExtension, member, out isSet); + } + + #endregion + + #region GetDbType + + [CLSCompliant(false)] + public override DbTypeAttribute GetDbType(TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + foreach (var p in _list) + { + var attr = p.GetDbType(typeExtension, member, out isSet); + + if (attr != null) + return attr; + } + + return base.GetDbType(typeExtension, member, out isSet); + } + + #endregion + + #region GetPrimaryKey + + public override PrimaryKeyAttribute GetPrimaryKey(TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + foreach (var p in _list) + { + var attr = p.GetPrimaryKey(typeExtension, member, out isSet); + + if (attr != null) + return attr; + } + + return base.GetPrimaryKey(typeExtension, member, out isSet); + } + + #endregion + #region GetTrimmable public override bool GetTrimmable(TypeExtension typeExtension, MemberAccessor member, out bool isSet) @@ -218,6 +270,23 @@ public override bool GetNullable(MappingSchema mappingSchema, TypeExtension type #endregion + #region GetLazyInstance + + public override bool GetLazyInstance(MappingSchema mappingSchema, TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + foreach (var p in _list) + { + var value = p.GetLazyInstance(mappingSchema, typeExtension, member, out isSet); + + if (isSet) + return value; + } + + return base.GetLazyInstance(mappingSchema, typeExtension, member, out isSet); + } + + #endregion + #region GetNullValue public override object GetNullValue(MappingSchema mappingSchema, TypeExtension typeExtension, MemberAccessor member, out bool isSet) @@ -267,7 +336,16 @@ public override string GetOwnerName(Type type, ExtensionList extensions, out boo return base.GetOwnerName(type, extensions, out isSet); } - #endregion + public override void SetOwnerName(Type type, string ownerName) + { + foreach (var providerBase in _list) + { + providerBase.SetOwnerName(type, ownerName); + } + base.SetOwnerName(type, ownerName); + } + + #endregion #region GetTableName @@ -303,7 +381,20 @@ public override int GetPrimaryKeyOrder(Type type, TypeExtension typeExt, MemberA #endregion - #region GetNonUpdatableFlag + public override string GetSequenceName(TypeExtension typeExtension, MemberAccessor member, out bool isSet) + { + foreach (var p in _list) + { + var value = p.GetSequenceName(typeExtension, member, out isSet); + + if (isSet) + return value; + } + + return base.GetSequenceName(typeExtension, member, out isSet); + } + + #region GetNonUpdatableFlag public override NonUpdatableAttribute GetNonUpdatableAttribute(Type type, TypeExtension typeExt, MemberAccessor member, out bool isSet) { diff --git a/Source/Reflection/TypeHelper.cs b/Source/Reflection/TypeHelper.cs index aeaefcfb0..d761c6554 100644 --- a/Source/Reflection/TypeHelper.cs +++ b/Source/Reflection/TypeHelper.cs @@ -920,6 +920,30 @@ public static bool IsNullableType(Type type) return (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)); } + public static bool IsNullableEnum(Type type) + { + return IsNullableType(type) && type.GetGenericArguments()[0].IsEnum; + } + + public static bool IsEnumOrNullableEnum(Type type) + { + return type.IsEnum || IsNullableEnum(type); + } + + public static Type ToNullable(Type type) + { + if (!IsNullable(type) && type.IsValueType) + { + var nullable = typeof(Nullable<>); + var typeArguments = nullable.GetGenericArguments(); + if (typeArguments != null && typeArguments.Length == 1) + { + type = nullable.MakeGenericType(type); + } + } + return type; + } + /// /// Returns the underlying type argument of the specified type. /// @@ -944,6 +968,13 @@ public static Type GetUnderlyingType(Type type) return type; } + public static Type UnwrapNullableType(Type type) + { + if (type == null) throw new ArgumentNullException("type"); + + return IsNullableType(type) ? type.GetGenericArguments()[0] : type; + } + public static IEnumerable GetDefiningTypes(Type child, MemberInfo member) { if (member.MemberType == MemberTypes.Property) @@ -968,6 +999,11 @@ public static IEnumerable GetDefiningTypes(Type child, MemberInfo member) yield return member.DeclaringType; } + public static bool IsAbstractClass(Type type) + { + return type.IsClass && type.IsAbstract; + } + /// /// Determines whether the specified types are considered equal. /// @@ -1552,7 +1588,20 @@ public static bool IsNullableValueMember(MemberInfo member) member.DeclaringType.GetGenericTypeDefinition() == typeof(Nullable<>); } + public static bool IsNullableHasValueMember(MemberInfo member) + { + return + member.Name == "HasValue" && + member.DeclaringType.IsGenericType && + member.DeclaringType.GetGenericTypeDefinition() == typeof(Nullable<>); + } + public static bool Equals(MemberInfo member1, MemberInfo member2) + { + return Equals(member1, member2, null); + } + + public static bool Equals(MemberInfo member1, MemberInfo member2, Type declaringType) { if (ReferenceEquals(member1, member2)) return true; @@ -1565,20 +1614,52 @@ public static bool Equals(MemberInfo member1, MemberInfo member2) if (member1.DeclaringType == member2.DeclaringType) return true; - var isSubclass = IsSameOrParent(member1.DeclaringType, member2.DeclaringType); - - if (!isSubclass && IsSameOrParent(member2.DeclaringType, member1.DeclaringType)) + if (member1 is PropertyInfo) { - isSubclass = true; + var isSubclass = + IsSameOrParent(member1.DeclaringType, member2.DeclaringType) || + IsSameOrParent(member2.DeclaringType, member1.DeclaringType); - var member = member1; - member1 = member2; - member2 = member; + if (isSubclass) + return true; + + if (declaringType != null && member2.DeclaringType.IsInterface) + { + var getter1 = ((PropertyInfo)member1).GetGetMethod(); + var getter2 = ((PropertyInfo)member2).GetGetMethod(); + + var map = declaringType.GetInterfaceMap(member2.DeclaringType); + + for (var i = 0; i < map.InterfaceMethods.Length; i++) + if (getter2.Name == map.InterfaceMethods[i].Name && getter2.DeclaringType == map.InterfaceMethods[i].DeclaringType && + getter1.Name == map.TargetMethods [i].Name && getter1.DeclaringType == map.TargetMethods [i].DeclaringType) + return true; + } } + } - if (isSubclass) + if (member2.DeclaringType.IsInterface && member1.Name.EndsWith(member2.Name)) + { + if (member1 is PropertyInfo) { - return member1 is PropertyInfo; + var isSubclass = member2.DeclaringType.IsAssignableFrom(member1.DeclaringType); + + if (isSubclass) + { + var getter1 = ((PropertyInfo)member1).GetGetMethod(); + var getter2 = ((PropertyInfo)member2).GetGetMethod(); + + var map = member1.DeclaringType.GetInterfaceMap(member2.DeclaringType); + + for (var i = 0; i < map.InterfaceMethods.Length; i++) + if ((getter2 == null || (getter2.Name == map.InterfaceMethods[i].Name && getter2.DeclaringType == map.InterfaceMethods[i].DeclaringType)) + && + (getter1 == null || (getter1.Name == map.InterfaceMethods[i].Name && getter1.DeclaringType == map.InterfaceMethods[i].DeclaringType)) + ) + { + return true; + } + } } } diff --git a/Source/ServiceModel/LinqService.cs b/Source/ServiceModel/LinqService.cs index 319d3c636..2314b7e73 100644 --- a/Source/ServiceModel/LinqService.cs +++ b/Source/ServiceModel/LinqService.cs @@ -41,6 +41,10 @@ protected virtual void ValidateQuery(LinqServiceQuery query) throw new LinqException("Insert/Update/Delete requests are not allowed by the service policy."); } + protected virtual void HandleException(Exception exception) + { + } + #region ILinqService Members public Type SqlProviderType { get; set; } @@ -48,11 +52,19 @@ protected virtual void ValidateQuery(LinqServiceQuery query) [WebMethod] public virtual string GetSqlProviderType() { - if (SqlProviderType == null) - using (var ctx = CreateDataContext()) - SqlProviderType = ctx.CreateSqlProvider().GetType(); + try + { + if (SqlProviderType == null) + using (var ctx = CreateDataContext()) + SqlProviderType = ctx.CreateSqlProvider().GetType(); - return SqlProviderType.FullName; + return SqlProviderType.FullName; + } + catch (Exception exception) + { + HandleException(exception); + throw; + } } class QueryContext : IQueryContext @@ -70,156 +82,188 @@ public SqlParameter[] GetParameters() [WebMethod] public int ExecuteNonQuery(string queryData) { - var query = LinqServiceSerializer.Deserialize(queryData); + try + { + var query = LinqServiceSerializer.Deserialize(queryData); - ValidateQuery(query); + ValidateQuery(query); - using (var db = CreateDataContext()) + using (var db = CreateDataContext()) + { + var obj = db.SetQuery(new QueryContext { SqlQuery = query.Query, Parameters = query.Parameters }); + return db.ExecuteNonQuery(obj); + } + } + catch (Exception exception) { - var obj = db.SetQuery(new QueryContext { SqlQuery = query.Query, Parameters = query.Parameters }); - return db.ExecuteNonQuery(obj); + HandleException(exception); + throw; } } [WebMethod] public object ExecuteScalar(string queryData) { - var query = LinqServiceSerializer.Deserialize(queryData); + try + { + var query = LinqServiceSerializer.Deserialize(queryData); - ValidateQuery(query); + ValidateQuery(query); - using (var db = CreateDataContext()) + using (var db = CreateDataContext()) + { + var obj = db.SetQuery(new QueryContext { SqlQuery = query.Query, Parameters = query.Parameters }); + return db.ExecuteScalar(obj); + } + } + catch (Exception exception) { - var obj = db.SetQuery(new QueryContext { SqlQuery = query.Query, Parameters = query.Parameters }); - return db.ExecuteScalar(obj); + HandleException(exception); + throw; } } [WebMethod] public string ExecuteReader(string queryData) { - var query = LinqServiceSerializer.Deserialize(queryData); - - ValidateQuery(query); - - using (var db = CreateDataContext()) + try { - var obj = db.SetQuery(new QueryContext { SqlQuery = query.Query, Parameters = query.Parameters }); + var query = LinqServiceSerializer.Deserialize(queryData); - using (var rd = db.ExecuteReader(obj)) - { - var ret = new LinqServiceResult - { - QueryID = Guid.NewGuid(), - FieldCount = rd.FieldCount, - FieldNames = new string[rd.FieldCount], - FieldTypes = new Type [rd.FieldCount], - Data = new List(), - }; - - for (var i = 0; i < ret.FieldCount; i++) - { - ret.FieldNames[i] = rd.GetName(i); - ret.FieldTypes[i] = rd.GetFieldType(i); - } + ValidateQuery(query); - var varyingTypes = new List(); + using (var db = CreateDataContext()) + { + var obj = db.SetQuery(new QueryContext { SqlQuery = query.Query, Parameters = query.Parameters }); - while (rd.Read()) + using (var rd = db.ExecuteReader(obj)) { - var data = new string [rd.FieldCount]; - var codes = new TypeCode[rd.FieldCount]; + var ret = new LinqServiceResult + { + QueryID = Guid.NewGuid(), + FieldCount = rd.FieldCount, + FieldNames = new string[rd.FieldCount], + FieldTypes = new Type [rd.FieldCount], + Data = new List(), + }; for (var i = 0; i < ret.FieldCount; i++) - codes[i] = Type.GetTypeCode(ret.FieldTypes[i]); + { + ret.FieldNames[i] = rd.GetName(i); + ret.FieldTypes[i] = rd.GetFieldType(i); + } - ret.RowCount++; + var varyingTypes = new List(); - for (var i = 0; i < ret.FieldCount; i++) + while (rd.Read()) { - if (!rd.IsDBNull(i)) - { - var code = codes[i]; - var type = rd.GetFieldType(i); - var idx = -1; + var data = new string [rd.FieldCount]; + var codes = new TypeCode[rd.FieldCount]; - if (type != ret.FieldTypes[i]) + for (var i = 0; i < ret.FieldCount; i++) + codes[i] = Type.GetTypeCode(ret.FieldTypes[i]); + + ret.RowCount++; + + for (var i = 0; i < ret.FieldCount; i++) + { + if (!rd.IsDBNull(i)) { - code = Type.GetTypeCode(type); - idx = varyingTypes.IndexOf(type); + var code = codes[i]; + var type = rd.GetFieldType(i); + var idx = -1; - if (idx < 0) + if (type != ret.FieldTypes[i]) { - varyingTypes.Add(type); - idx = varyingTypes.Count - 1; - } - } + code = Type.GetTypeCode(type); + idx = varyingTypes.IndexOf(type); - switch (code) - { - case TypeCode.Decimal : data[i] = rd.GetDecimal (i).ToString(CultureInfo.InvariantCulture); break; - case TypeCode.Double : data[i] = rd.GetDouble (i).ToString(CultureInfo.InvariantCulture); break; - case TypeCode.Single : data[i] = rd.GetFloat (i).ToString(CultureInfo.InvariantCulture); break; - case TypeCode.DateTime : data[i] = rd.GetDateTime(i).ToString("o"); break; - default : + if (idx < 0) { - if (type == typeof(DateTimeOffset)) - { - var dt = rd.GetValue(i); - - if (dt is DateTime) - data[i] = ((DateTime)dt).ToString("o"); - else if (dt is DateTimeOffset) - data[i] = ((DateTimeOffset)dt).ToString("o"); - else - data[i] = rd.GetValue(i).ToString(); - } - else if (ret.FieldTypes[i] == typeof(byte[])) - data[i] = Convert.ToBase64String((byte[])rd.GetValue(i)); - else - data[i] = (rd.GetValue(i) ?? "").ToString(); - - break; + varyingTypes.Add(type); + idx = varyingTypes.Count - 1; } - } + } + + switch (code) + { + case TypeCode.Decimal : data[i] = rd.GetDecimal (i).ToString(CultureInfo.InvariantCulture); break; + case TypeCode.Double : data[i] = rd.GetDouble (i).ToString(CultureInfo.InvariantCulture); break; + case TypeCode.Single : data[i] = rd.GetFloat (i).ToString(CultureInfo.InvariantCulture); break; + case TypeCode.DateTime : data[i] = rd.GetDateTime(i).ToString("o"); break; + default : + { + if (type == typeof(DateTimeOffset)) + { + var dt = rd.GetValue(i); + + if (dt is DateTime) + data[i] = ((DateTime)dt).ToString("o"); + else if (dt is DateTimeOffset) + data[i] = ((DateTimeOffset)dt).ToString("o"); + else + data[i] = rd.GetValue(i).ToString(); + } + else if (ret.FieldTypes[i] == typeof(byte[])) + data[i] = Convert.ToBase64String((byte[])rd.GetValue(i)); + else + data[i] = (rd.GetValue(i) ?? "").ToString(); + + break; + } + } - if (idx >= 0) - data[i] = "\0" + (char)idx + data[i]; + if (idx >= 0) + data[i] = "\0" + (char)idx + data[i]; + } } - } - ret.Data.Add(data); - } + ret.Data.Add(data); + } - ret.VaryingTypes = varyingTypes.ToArray(); + ret.VaryingTypes = varyingTypes.ToArray(); - return LinqServiceSerializer.Serialize(ret); + return LinqServiceSerializer.Serialize(ret); + } } } + catch (Exception exception) + { + HandleException(exception); + throw; + } } [WebMethod] public int ExecuteBatch(string queryData) { - var data = LinqServiceSerializer.DeserializeStringArray(queryData); - var queries = data.Select(LinqServiceSerializer.Deserialize).ToArray(); - - foreach (var query in queries) - ValidateQuery(query); - - using (var db = CreateDataContext()) + try { - if (db is DbManager) ((DbManager)db).BeginTransaction(); + var data = LinqServiceSerializer.DeserializeStringArray(queryData); + var queries = data.Select(LinqServiceSerializer.Deserialize).ToArray(); foreach (var query in queries) + ValidateQuery(query); + + using (var db = CreateDataContext()) { - var obj = db.SetQuery(new QueryContext { SqlQuery = query.Query, Parameters = query.Parameters }); - db.ExecuteNonQuery(obj); - } + if (db is DbManager) ((DbManager)db).BeginTransaction(); + + foreach (var query in queries) + { + var obj = db.SetQuery(new QueryContext { SqlQuery = query.Query, Parameters = query.Parameters }); + db.ExecuteNonQuery(obj); + } - if (db is DbManager) ((DbManager)db).CommitTransaction(); + if (db is DbManager) ((DbManager)db).CommitTransaction(); - return queryData.Length; + return queryData.Length; + } + } + catch (Exception exception) + { + HandleException(exception); + throw; } } diff --git a/Source/ServiceModel/LinqServiceSerializer.cs b/Source/ServiceModel/LinqServiceSerializer.cs index f4b529111..0335fb5b3 100644 --- a/Source/ServiceModel/LinqServiceSerializer.cs +++ b/Source/ServiceModel/LinqServiceSerializer.cs @@ -785,6 +785,7 @@ void Visit(IQueryElement e) var appendInsert = false; var appendUpdate = false; + var appendDelete = false; var appendSelect = false; switch (elem.QueryType) @@ -798,11 +799,16 @@ void Visit(IQueryElement e) appendUpdate = true; break; + case QueryType.Delete : + appendDelete = true; + appendSelect = true; + break; + case QueryType.Insert : appendInsert = true; - if (elem.From.Tables.Count == 0) - break; - goto default; + if (elem.From.Tables.Count != 0) + appendSelect = true; + break; default : appendSelect = true; @@ -811,6 +817,7 @@ void Visit(IQueryElement e) Append(appendInsert); if (appendInsert) Append(elem.Insert); Append(appendUpdate); if (appendUpdate) Append(elem.Update); + Append(appendDelete); if (appendDelete) Append(elem.Delete); Append(appendSelect); if (appendSelect) Append(elem.Select); Append(elem.Where); @@ -918,6 +925,13 @@ void Visit(IQueryElement e) break; } + case QueryElementType.DeleteClause : + { + var elem = (SqlQuery.DeleteClause)e; + Append(elem.Table); + break; + } + case QueryElementType.SetExpression : { var elem = (SqlQuery.SetExpression)e; @@ -1294,6 +1308,8 @@ bool Parse() var insert = readInsert ? Read() : null; var readUpdate = ReadBool(); var update = readUpdate ? Read() : null; + var readDelete = ReadBool(); + var delete = readDelete ? Read() : null; var readSelect = ReadBool(); var select = readSelect ? Read() : new SqlQuery.SelectClause(null); var where = Read(); @@ -1310,6 +1326,7 @@ bool Parse() query.Init( insert, update, + delete, select, from, where, @@ -1426,6 +1443,13 @@ bool Parse() break; } + case QueryElementType.DeleteClause : + { + var table = Read(); + obj = new SqlQuery.DeleteClause { Table = table }; + break; + } + case QueryElementType.SetExpression : obj = new SqlQuery.SetExpression(Read(), Read()); break; case QueryElementType.FromClause : obj = new SqlQuery.FromClause(ReadArray()); break; case QueryElementType.WhereClause : obj = new SqlQuery.WhereClause(Read()); break; diff --git a/Source/ServiceModel/ServiceModelDataReader.cs b/Source/ServiceModel/ServiceModelDataReader.cs index 320633f30..8ccd041d9 100644 --- a/Source/ServiceModel/ServiceModelDataReader.cs +++ b/Source/ServiceModel/ServiceModelDataReader.cs @@ -1,226 +1,247 @@ -using System; -using System.Collections.Generic; -using System.Data; -using System.Globalization; - -namespace BLToolkit.ServiceModel -{ - using Common; - - class ServiceModelDataReader : IDataReader - { - public ServiceModelDataReader(LinqServiceResult result) - { - _result = result; - - for (var i = 0; i < result.FieldNames.Length; i++) - _ordinal.Add(result.FieldNames[i], i); - } - - readonly LinqServiceResult _result; - readonly Dictionary _ordinal = new Dictionary(); - - string[] _data; - int _current = -1; - - #region IDataReader Members - - public void Close() - { - } - - public int Depth - { - get { return 0; } - } - -#if !SILVERLIGHT - - public DataTable GetSchemaTable() - { - throw new InvalidOperationException(); - } - -#endif - - public bool IsClosed - { - get { throw new InvalidOperationException(); } - } - - public bool NextResult() - { - throw new InvalidOperationException(); - } - - public bool Read() - { - if (++_current < _result.RowCount) - { - _data = _result.Data[_current]; - - return true; +using System; +using System.Collections.Generic; +using System.Data; +using System.Globalization; + +namespace BLToolkit.ServiceModel +{ + using Common; + + class ServiceModelDataReader : IDataReader + { + public ServiceModelDataReader(LinqServiceResult result) + { + _result = result; + + for (var i = 0; i < result.FieldNames.Length; i++) + _ordinal.Add(result.FieldNames[i], i); + } + + readonly LinqServiceResult _result; + readonly Dictionary _ordinal = new Dictionary(); + + string[] _data; + int _current = -1; + + #region IDataReader Members + + public void Close() + { + } + + public int Depth + { + get { return 0; } + } + +#if !SILVERLIGHT + + public DataTable GetSchemaTable() + { + throw new InvalidOperationException(); + } + +#endif + + public bool IsClosed + { + get { throw new InvalidOperationException(); } + } + + public bool NextResult() + { + throw new InvalidOperationException(); + } + + public bool Read() + { + if (++_current < _result.RowCount) + { + _data = _result.Data[_current]; + + return true; + } + + _data = null; + + return false; + } + + public int RecordsAffected + { + get { throw new InvalidOperationException(); } + } + + #endregion + + #region IDisposable Members + + public void Dispose() + { + } + + #endregion + + #region IDataRecord Members + + public int FieldCount + { + get { return _result.FieldCount; } + } + + public bool GetBoolean(int i) + { + return bool.Parse(_data[i]); + } + + public byte GetByte(int i) + { + return byte.Parse(_data[i]); + } + + public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length) + { + throw new InvalidOperationException(); + } + + public char GetChar(int i) + { + return _data[i][0]; + } + + public long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length) + { + throw new InvalidOperationException(); + } + + public IDataReader GetData(int i) + { + throw new InvalidOperationException(); + } + + public string GetDataTypeName(int i) + { + return _result.FieldTypes[i].FullName; + } + + public DateTime GetDateTime(int i) + { + return DateTime.Parse(_data[i], CultureInfo.InvariantCulture); + } + + public decimal GetDecimal(int i) + { + return decimal.Parse(_data[i], CultureInfo.InvariantCulture); + } + + public double GetDouble(int i) + { + return double.Parse(_data[i], CultureInfo.InvariantCulture); + } + + public Type GetFieldType(int i) + { + return _result.FieldTypes[i]; + } + + public float GetFloat(int i) + { + return float.Parse(_data[i], CultureInfo.InvariantCulture); + } + + public Guid GetGuid(int i) + { + return new Guid(_data[i]); + } + + public short GetInt16(int i) + { + return short.Parse(_data[i]); + } + + public int GetInt32(int i) + { + return int.Parse(_data[i]); + } + + public long GetInt64(int i) + { + return long.Parse(_data[i]); + } + + public string GetName(int i) + { + return _result.FieldNames[i]; + } + + public int GetOrdinal(string name) + { + return _ordinal[name]; + } + + public string GetString(int i) + { + return _data[i]; + } + + public object GetValue(int i) + { + var type = _result.FieldTypes[i]; + var value = _data[i]; + + if (_result.VaryingTypes.Length > 0 && !string.IsNullOrEmpty(value) && value[0] == '\0') + { + type = _result.VaryingTypes[value[1]]; + value = value.Substring(2); } - _data = null; - - return false; - } - - public int RecordsAffected - { - get { throw new InvalidOperationException(); } - } - - #endregion - - #region IDisposable Members - - public void Dispose() - { - } - - #endregion - - #region IDataRecord Members - - public int FieldCount - { - get { return _result.FieldCount; } - } - - public bool GetBoolean(int i) - { - return bool.Parse(_data[i]); - } - - public byte GetByte(int i) - { - return byte.Parse(_data[i]); - } - - public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length) - { - throw new InvalidOperationException(); - } - - public char GetChar(int i) - { - return _data[i][0]; - } - - public long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length) - { - throw new InvalidOperationException(); - } - - public IDataReader GetData(int i) - { - throw new InvalidOperationException(); - } - - public string GetDataTypeName(int i) - { - return _result.FieldTypes[i].FullName; - } - - public DateTime GetDateTime(int i) - { - return DateTime.Parse(_data[i], CultureInfo.InvariantCulture); - } - - public decimal GetDecimal(int i) - { - return decimal.Parse(_data[i], CultureInfo.InvariantCulture); - } - - public double GetDouble(int i) - { - return double.Parse(_data[i], CultureInfo.InvariantCulture); - } - - public Type GetFieldType(int i) - { - return _result.FieldTypes[i]; - } - - public float GetFloat(int i) - { - return float.Parse(_data[i], CultureInfo.InvariantCulture); - } - - public Guid GetGuid(int i) - { - return new Guid(_data[i]); - } - - public short GetInt16(int i) - { - return short.Parse(_data[i]); - } - - public int GetInt32(int i) - { - return int.Parse(_data[i]); - } - - public long GetInt64(int i) - { - return long.Parse(_data[i]); - } - - public string GetName(int i) - { - return _result.FieldNames[i]; - } - - public int GetOrdinal(string name) - { - return _ordinal[name]; - } - - public string GetString(int i) - { - return _data[i]; - } - - public object GetValue(int i) - { - var type = _result.FieldTypes[i]; - var value = _data[i]; - - if (_result.VaryingTypes.Length > 0 && !string.IsNullOrEmpty(value) && value[0] == '\0') + if (value == null) + return null; + + if (type.IsArray && type == typeof(byte[])) + return System.Convert.FromBase64String(value); + + switch (Type.GetTypeCode(type)) { - type = _result.VaryingTypes[value[1]]; - value = value.Substring(2); - } - - if (type.IsArray && type == typeof(byte[])) - return value == null ? null : System.Convert.FromBase64String(value); - - return Convert.ChangeTypeFromString(value, type); - } - - public int GetValues(object[] values) - { - throw new InvalidOperationException(); - } - - public bool IsDBNull(int i) - { - return _data[i] == null; - } - - public object this[string name] - { - get { return GetValue(GetOrdinal(name)); } - } - - public object this[int i] - { - get { return GetValue(i); } - } - - #endregion - } -} + case TypeCode.String : return value; + case TypeCode.Double : return double. Parse(value, CultureInfo.InvariantCulture); + case TypeCode.Decimal : return decimal. Parse(value, CultureInfo.InvariantCulture); + case TypeCode.Single : return float. Parse(value, CultureInfo.InvariantCulture); + case TypeCode.DateTime : return DateTime.Parse(value, CultureInfo.InvariantCulture); + case TypeCode.Object : + if (type == typeof(double?)) return double. Parse(value, CultureInfo.InvariantCulture); + if (type == typeof(decimal?)) return decimal. Parse(value, CultureInfo.InvariantCulture); + if (type == typeof(float?)) return float. Parse(value, CultureInfo.InvariantCulture); + if (type == typeof(DateTime?)) return DateTime. Parse(value, CultureInfo.InvariantCulture); + + if (type == typeof(DateTimeOffset) || type == typeof(DateTimeOffset?)) + return DateTimeOffset.Parse(value, CultureInfo.InvariantCulture); + break; + } + + return Convert.ChangeTypeFromString(value, type); + } + + public int GetValues(object[] values) + { + throw new InvalidOperationException(); + } + + public bool IsDBNull(int i) + { + return _data[i] == null; + } + + public object this[string name] + { + get { return GetValue(GetOrdinal(name)); } + } + + public object this[int i] + { + get { return GetValue(i); } + } + + #endregion + } +} diff --git a/Source/Templates/BLToolkit.ttinclude b/Source/Templates/BLToolkit.ttinclude index 139ed482d..eb87e9dd0 100644 --- a/Source/Templates/BLToolkit.ttinclude +++ b/Source/Templates/BLToolkit.ttinclude @@ -3,6 +3,7 @@ <#@ import namespace="System.Collections.Generic" #> <#@ import namespace="System.Data" #> <#@ import namespace="System.Linq" #> +<#@ import namespace="System.IO" #> <# AppDomain.CurrentDomain.AssemblyResolve += (_,args) => { @@ -65,7 +66,8 @@ string BaseDataContextClass = "DbManager"; string BaseEntityClass = null; string OneToManyAssociationType = "IEnumerable<{0}>"; -string OwnerToInclude = null; +string OwnerToInclude = null; +string[] DatabaseQuote = null; bool RenderField = false; bool RenderBackReferences = true; @@ -375,7 +377,8 @@ Func GetConnectionObject = () => try { var assembly = System.Reflection.Assembly.LoadFile(DataProviderAssembly); - connType = assembly.GetType(ConnectionType); + connType = assembly.GetType(ConnectionType) + ?? assembly.GetType(ConnectionType.Substring(0, ConnectionType.IndexOf(","))); } catch { @@ -405,9 +408,33 @@ void LoadMetadata() IsMetadataLoaded = true; + if (!string.IsNullOrEmpty(DataProviderAssembly) && !DataProviderAssembly.Contains(":") && DataProviderAssembly.Contains("..")) + { + try + { + string path = this.Host.ResolvePath(""); + DataProviderAssembly = Path.GetFullPath(Path.Combine(path, DataProviderAssembly)); + } + catch + { + } + } + BeforeLoadMetadata(this); LoadServerMetadata(); + if (DatabaseQuote != null) + { + foreach (var t in Tables.Values) + { + t.TableName = string.Format("{1}{0}{2}", t.TableName, DatabaseQuote.FirstOrDefault(), DatabaseQuote.Skip(1).FirstOrDefault() ?? DatabaseQuote.FirstOrDefault()); + foreach (var c in t.Columns.Values) + { + c.ColumnName = string.Format("{1}{0}{2}", c.ColumnName, DatabaseQuote.FirstOrDefault(), DatabaseQuote.Skip(1).FirstOrDefault() ?? DatabaseQuote.FirstOrDefault()); + } + } + } + foreach (var t in Tables.Values) { if (t.ClassName.Contains(" ")) diff --git a/Source/Templates/MSSQL.ttinclude b/Source/Templates/MSSQL.ttinclude index 003e2a8f6..b579e9e4b 100644 --- a/Source/Templates/MSSQL.ttinclude +++ b/Source/Templates/MSSQL.ttinclude @@ -9,7 +9,7 @@ private void LoadServerMetadata() using (var conn = GetConnection()) using (var cmd = conn.CreateCommand()) { - // Load tables & vies. + // Load tables & views. // string s = @" SELECT @@ -20,18 +20,18 @@ private void LoadServerMetadata() ISNULL(CONVERT(varchar(8000), x.Value), '') AS TABLE_DESC FROM INFORMATION_SCHEMA.TABLES s - LEFT JOIN - sys.tables t - ON - OBJECT_ID(TABLE_CATALOG + '.' + TABLE_SCHEMA + '.' + TABLE_NAME) = t.object_id - LEFT JOIN - sys.extended_properties x - ON - OBJECT_ID(TABLE_CATALOG + '.' + TABLE_SCHEMA + '.' + TABLE_NAME) = x.major_id AND - x.minor_id = 0 AND - x.name = 'MS_Description' - WHERE {0} - ( + LEFT JOIN + sys.tables t + ON + OBJECT_ID(TABLE_CATALOG + '.' + TABLE_SCHEMA + '.' + TABLE_NAME) = t.object_id + LEFT JOIN + sys.extended_properties x + ON + OBJECT_ID(TABLE_CATALOG + '.' + TABLE_SCHEMA + '.' + TABLE_NAME) = x.major_id AND + x.minor_id = 0 AND + x.name = 'MS_Description' + WHERE {0} + ( t.object_id IS NULL OR t.is_ms_shipped <> 1 AND ( @@ -45,9 +45,9 @@ private void LoadServerMetadata() class = 1 and name = N'microsoft_database_tools_support' ) IS NULL - )"; + )"; - if(string.IsNullOrWhiteSpace(OwnerToInclude)) + if (string.IsNullOrWhiteSpace(OwnerToInclude)) cmd.CommandText = string.Format(s, ""); else cmd.CommandText = string.Format(s, " TABLE_SCHEMA = '" + OwnerToInclude + "' AND "); @@ -211,7 +211,7 @@ private void LoadServerMetadata() c.CONSTRAINT_TYPE='PRIMARY KEY' {0}"; - if(string.IsNullOrWhiteSpace(OwnerToInclude)) + if (string.IsNullOrWhiteSpace(OwnerToInclude)) cmd.CommandText = string.Format(s, ""); else cmd.CommandText = string.Format(s, "AND k.TABLE_SCHEMA = '" + OwnerToInclude + "' "); @@ -263,7 +263,7 @@ private void LoadServerMetadata() ThisTable, Ordinal"; - if(string.IsNullOrWhiteSpace(OwnerToInclude)) + if (string.IsNullOrWhiteSpace(OwnerToInclude)) cmd.CommandText = string.Format(s, ""); else cmd.CommandText = string.Format(s, "WHERE fk.TABLE_SCHEMA = '" + OwnerToInclude + "' "); diff --git a/Source/Templates/PostgreSQL.ttinclude b/Source/Templates/PostgreSQL.ttinclude index e5b0839ff..8849b5986 100644 --- a/Source/Templates/PostgreSQL.ttinclude +++ b/Source/Templates/PostgreSQL.ttinclude @@ -5,6 +5,11 @@ private void LoadServerMetadata() { var tables = CreateList(new { ID = 0, Table = new Table() }); var columns = CreateList(new { ID = 0, Column = new Column() }); + + if (!string.IsNullOrEmpty(DataProviderAssembly)) + { + System.Reflection.Assembly.LoadFile(DataProviderAssembly.Replace("Npgsql.dll", "Mono.Security.dll")); + } using (var conn = GetConnection()) using (var cmd = conn.CreateCommand()) @@ -81,6 +86,8 @@ private void LoadServerMetadata() pg_attribute.attnum > 0 AND NOT pg_attribute.attisdropped"; + bool addNpgsqlTypes = false; + using (var rd = cmd.ExecuteReader()) { while (rd.Read()) @@ -102,36 +109,54 @@ private void LoadServerMetadata() } }; - var c = col.Column; + var c = col.Column; + var oid = Convert.ToInt32(rd["type"]); - switch (Convert.ToInt32(rd["type"])) - { - case 16 /* bool */ : c.Type = "Boolean"; c.DbType = DbType.Boolean; c.SqlDbType = SqlDbType.Bit; break; - case 17 /* bytea */ : c.Type = "Byte[]"; c.DbType = DbType.Binary; c.SqlDbType = SqlDbType.Binary; break; - case 20 /* int8 */ : c.Type = "Int64"; c.DbType = DbType.Int64; c.SqlDbType = SqlDbType.BigInt; break; - case 21 /* int2 */ : c.Type = "Int16"; c.DbType = DbType.Int16; c.SqlDbType = SqlDbType.SmallInt; break; - case 23 /* int4 */ : c.Type = "Int32"; c.DbType = DbType.Int32; c.SqlDbType = SqlDbType.Int; break; - case 25 /* text */ : c.Type = "String"; c.DbType = DbType.String; c.SqlDbType = SqlDbType.Text; break; - case 142 /* xml */ : c.Type = "Xml"; c.DbType = DbType.Xml; c.SqlDbType = SqlDbType.Xml; break; - case 700 /* float4 */ : c.Type = "Single"; c.DbType = DbType.Single; c.SqlDbType = SqlDbType.Real; break; - case 701 /* float8 */ : c.Type = "Double"; c.DbType = DbType.Double; c.SqlDbType = SqlDbType.Float; break; - case 790 /* money */ : c.Type = "Decimal"; c.DbType = DbType.Decimal; c.SqlDbType = SqlDbType.Money; break; - case 1042 /* char */ : c.Type = "String"; c.DbType = DbType.String; c.SqlDbType = SqlDbType.Char; break; - case 1043 /* varchar */ : c.Type = "String"; c.DbType = DbType.String; c.SqlDbType = SqlDbType.VarChar; break; - case 1082 /* date */ : c.Type = "DateTime"; c.DbType = DbType.Date; c.SqlDbType = SqlDbType.Date; break; - case 1083 /* time */ : c.Type = "DateTime"; c.DbType = DbType.Time; c.SqlDbType = SqlDbType.Time; break; - case 1114 /* datetime */ : c.Type = "DateTime"; c.DbType = DbType.DateTime; c.SqlDbType = SqlDbType.DateTime; break; - case 1700 /* numeric */ : c.Type = "Decimal"; c.DbType = DbType.Decimal; c.SqlDbType = SqlDbType.Decimal; break; - case 2950 /* Guid */ : c.Type = "Guid"; c.DbType = DbType.Binary; c.SqlDbType = SqlDbType.UniqueIdentifier; break; + c.Type = "object"; + c.DbType = DbType.Object; + c.SqlDbType = SqlDbType.Variant; + switch (oid) + { + case 16 /* bool */ : c.Type = "Boolean"; c.DbType = DbType.Boolean; c.SqlDbType = SqlDbType.Bit; break; + case 17 /* bytea */ : c.Type = "Byte[]"; c.DbType = DbType.Binary; c.SqlDbType = SqlDbType.Binary; break; + case 20 /* int8 */ : c.Type = "Int64"; c.DbType = DbType.Int64; c.SqlDbType = SqlDbType.BigInt; break; + case 21 /* int2 */ : c.Type = "Int16"; c.DbType = DbType.Int16; c.SqlDbType = SqlDbType.SmallInt; break; + case 23 /* int4 */ : c.Type = "Int32"; c.DbType = DbType.Int32; c.SqlDbType = SqlDbType.Int; break; + case 25 /* text */ : c.Type = "String"; c.DbType = DbType.String; c.SqlDbType = SqlDbType.Text; break; + case 142 /* xml */ : c.Type = "String"; c.DbType = DbType.Xml; c.SqlDbType = SqlDbType.Xml; break; + case 600 /* point */ : c.Type = "NpgsqlPoint"; addNpgsqlTypes = true; break; + case 601 /* lseg */ : c.Type = "NpgsqlLSeg"; addNpgsqlTypes = true; break; + case 602 /* path */ : c.Type = "NpgsqlPath"; addNpgsqlTypes = true; break; + case 603 /* box */ : c.Type = "NpgsqlBox"; addNpgsqlTypes = true; break; + case 604 /* polygon */ : c.Type = "NpgsqlPolygon"; addNpgsqlTypes = true; break; + case 700 /* float4 */ : c.Type = "Single"; c.DbType = DbType.Single; c.SqlDbType = SqlDbType.Real; break; + case 701 /* float8 */ : c.Type = "Double"; c.DbType = DbType.Double; c.SqlDbType = SqlDbType.Float; break; + case 718 /* circle */ : c.Type = "NpgsqlCircle"; addNpgsqlTypes = true; break; + case 790 /* money */ : c.Type = "Decimal"; c.DbType = DbType.Decimal; c.SqlDbType = SqlDbType.Money; break; + case 829 /* macaddr */ : c.Type = "NpgsqlMacAddress"; addNpgsqlTypes = true; break; + case 869 /* inet */ : c.Type = "NpgsqlInet"; addNpgsqlTypes = true; break; + case 1042 /* char */ : c.Type = "String"; c.DbType = DbType.String; c.SqlDbType = SqlDbType.Char; break; + case 1043 /* varchar */ : c.Type = "String"; c.DbType = DbType.String; c.SqlDbType = SqlDbType.VarChar; break; + case 1082 /* date */ : c.Type = "DateTime"; c.DbType = DbType.Date; c.SqlDbType = SqlDbType.Date; break; + case 1083 /* time */ : c.Type = "DateTime"; c.DbType = DbType.Time; c.SqlDbType = SqlDbType.Time; break; + case 1114 /* datetime */ : c.Type = "DateTime"; c.DbType = DbType.DateTime; c.SqlDbType = SqlDbType.DateTime; break; + case 1560 /* bit */ : c.Type = "BitString"; addNpgsqlTypes = true; break; + case 1700 /* numeric */ : c.Type = "Decimal"; c.DbType = DbType.Decimal; c.SqlDbType = SqlDbType.Decimal; break; + case 1186 /* interval */ : c.Type = "NpgsqlInterval"; addNpgsqlTypes = true; break; + case 1184 /* timestamp with time zone */ : + case 1266 /* timestamp with time zone */ : c.Type = "DateTime"; c.DbType = DbType.DateTime2; c.SqlDbType = SqlDbType.DateTime2; break; + case 2950 /* Guid */ : c.Type = "Guid"; c.DbType = DbType.Binary; c.SqlDbType = SqlDbType.UniqueIdentifier; break; default: - throw new Exception(string.Format("Type '{0}' is not expected in PostgreSQL.tt",rd["typename"].ToString())); - //break; + if (oid < 100000) + throw new Exception(string.Format("Type '{0}' ({1}) is not expected in PostgreSQL.tt", rd["typename"], rd["type"])); + break; } switch (c.Type) { - case "string" : + case "object" : + case "String" : case "byte[]" : c.IsClass = true; break; } @@ -142,6 +167,9 @@ private void LoadServerMetadata() } } + if (addNpgsqlTypes) + Usings.Add("NpgsqlTypes"); + // Load PKs. // cmd.CommandText = @" diff --git a/Source/Templates/Sybase.ttinclude b/Source/Templates/Sybase.ttinclude index 4a18ddf91..b8808a0ff 100644 --- a/Source/Templates/Sybase.ttinclude +++ b/Source/Templates/Sybase.ttinclude @@ -78,10 +78,10 @@ private void LoadServerMetadata() ID = Convert.ToInt32(rd["id"]), Column = new Column { - ID = Convert.ToInt16(rd["colid"]), + ID = Convert.ToInt16 (rd["colid"]), ColumnName = Convert.ToString (rd["name"]), MemberName = Convert.ToString (rd["name"]), - ColumnType = Convert.ToString(rd["typename"]), + ColumnType = Convert.ToString (rd["typename"]), IsNullable = Convert.ToBoolean(rd["isNullable"]), IsIdentity = Convert.ToBoolean(rd["isIdentity"]), Length = rd.IsDBNull(rd.GetOrdinal("length")) ? 0 : Convert.ToInt64(rd["length"]), diff --git a/Source/TypeBuilder/Builders/AbstractClassBuilder.cs b/Source/TypeBuilder/Builders/AbstractClassBuilder.cs index 713aa2e09..d1d111919 100644 --- a/Source/TypeBuilder/Builders/AbstractClassBuilder.cs +++ b/Source/TypeBuilder/Builders/AbstractClassBuilder.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection; @@ -254,53 +253,12 @@ private void DefineNonAbstractType() _context.TypeBuilder = _context.AssemblyBuilder.DefineType( typeName, - TypeAttributes.Public - | TypeAttributes.BeforeFieldInit - | (TypeFactory.SealTypes? TypeAttributes.Sealed: 0), + TypeAttributes.Public | TypeAttributes.BeforeFieldInit | (TypeFactory.SealTypes? TypeAttributes.Sealed: 0), _context.Type.IsInterface? typeof(object): (Type)_context.Type, interfaces.ToArray()); if (_context.Type.IsSerializable) _context.TypeBuilder.SetCustomAttribute(typeof(SerializableAttribute)); - -/* - var dataContracts = _context.Type.GetCustomAttributes(typeof(DataContractAttribute)); - - if (dataContracts.Length > 0) - { - foreach (DataContractAttribute a in dataContracts) - { - var builder = - new GeneratedAttributeBuilder( - typeof(DataContractAttribute), - null, - new[] { "Name", "Namespace", "IsReference" }, - new object[] { a.Name, a.Namespace, a.IsReference }); - - builder.Build(_context); - } - - var emit = _context.TypeBuilder.DefineMethod("WcfKnownTypes", MethodAttributes.Static | MethodAttributes.Public, typeof(Type[])).Emitter; - var loc = emit.DeclareLocal(typeof (Type[])); - - emit - .ldc_i4_2 - .newarr(typeof(Type)) - .stloc(loc) - .ldloc(loc) - .ldc_i4_0 - .LoadType(_context.Type) - .stelem_ref - .ldloc(loc) - .ldc_i4_1 - .LoadType(_context.TypeBuilder.TypeBuilder) - .stelem_ref - .ldloc(loc) - .ret(); - - new GeneratedAttributeBuilder(typeof(KnownTypeAttribute), new object[] { "WcfKnownTypes" }, null, null).Build(_context); - } -*/ } class BuilderComparer : IComparer diff --git a/Source/TypeBuilder/Builders/PropertyChangedBuilder.cs b/Source/TypeBuilder/Builders/PropertyChangedBuilder.cs index 51593ee43..827f01f04 100644 --- a/Source/TypeBuilder/Builders/PropertyChangedBuilder.cs +++ b/Source/TypeBuilder/Builders/PropertyChangedBuilder.cs @@ -1,6 +1,7 @@ using System; using System.Reflection; using System.Reflection.Emit; +using BLToolkit.Reflection; using BLToolkit.Reflection.Emit; namespace BLToolkit.TypeBuilder.Builders @@ -87,32 +88,117 @@ private void GenerateIsSameValueComparison() if (op_InequalityMethod == null) { - if (Context.CurrentProperty.PropertyType.IsValueType || !_useReferenceEquals) + if (Context.CurrentProperty.PropertyType.IsValueType) { + if (TypeHelper.IsNullableType(Context.CurrentProperty.PropertyType)) + { + // Handled nullable types + + var currentValue = emit.DeclareLocal(Context.CurrentProperty.PropertyType); + var newValue = emit.DeclareLocal(Context.CurrentProperty.PropertyType); + var notEqualLabel = emit.DefineLabel(); + var comparedLabel = emit.DefineLabel(); + var hasValueGetMethod = Context.CurrentProperty.PropertyType.GetProperty("HasValue").GetGetMethod(); + + emit + .ldarg_0 + .callvirt(Context.CurrentProperty.GetGetMethod(true)) + .stloc(currentValue) + .ldarg_1 + .stloc(newValue) + .ldloca(currentValue) + .call(Context.CurrentProperty.PropertyType, "GetValueOrDefault") + .ldloca(newValue) + .call(Context.CurrentProperty.PropertyType, "GetValueOrDefault"); + + var nullableUnderlyingType = TypeHelper.GetUnderlyingType(Context.CurrentProperty.PropertyType); + + op_InequalityMethod = nullableUnderlyingType.GetMethod("op_Inequality", + new Type[] + { + nullableUnderlyingType, + nullableUnderlyingType + }); + + if (op_InequalityMethod != null) + { + emit + .call(op_InequalityMethod) + .brtrue_s(notEqualLabel); + } + else + emit.bne_un_s(notEqualLabel); + + emit + .ldloca(currentValue) + .call(hasValueGetMethod) + .ldloca(newValue) + .call(hasValueGetMethod) + .ceq + .ldc_bool(true) + .ceq + .br(comparedLabel) + .MarkLabel(notEqualLabel) + .ldc_bool(false) + .MarkLabel(comparedLabel) + .end(); + } + else if (!Context.CurrentProperty.PropertyType.IsPrimitive) + { + // Handle structs without op_Inequality. + var currentValue = emit.DeclareLocal(Context.CurrentProperty.PropertyType); + + emit + .ldarg_0 + .callvirt(Context.CurrentProperty.GetGetMethod(true)) + .stloc(currentValue) + .ldloca(currentValue) + .ldarg_1 + .box(Context.CurrentProperty.PropertyType) + .constrained(Context.CurrentProperty.PropertyType) + .callvirt(typeof(object), "Equals", new [] {typeof(object)}) + .end(); + } + else + { + // Primitive value type comparison + emit + .ldarg_0 + .callvirt(Context.CurrentProperty.GetGetMethod(true)) + .ldarg_1 + .ceq + .end(); + } + } + else if (!_useReferenceEquals) + { + // Do not use ReferenceEquals comparison for objects emit .ldarg_0 - .callvirt (Context.CurrentProperty.GetGetMethod(true)) + .callvirt(Context.CurrentProperty.GetGetMethod(true)) .ldarg_1 .ceq .end(); } else { + // ReferenceEquals comparison for objects emit .ldarg_0 - .callvirt (Context.CurrentProperty.GetGetMethod(true)) + .callvirt(Context.CurrentProperty.GetGetMethod(true)) .ldarg_1 - .call (typeof(object), "ReferenceEquals", typeof(object), typeof(object)) + .call(typeof(object), "ReferenceEquals", typeof(object), typeof(object)) .end(); } } else { + // Items compared have op_Inequality operator (!=) emit .ldarg_0 - .callvirt (Context.CurrentProperty.GetGetMethod(true)) + .callvirt(Context.CurrentProperty.GetGetMethod(true)) .ldarg_1 - .call (op_InequalityMethod) + .call(op_InequalityMethod) .ldc_i4_0 .ceq .end(); diff --git a/Source/TypeBuilder/Builders/TypeAccessorBuilder.cs b/Source/TypeBuilder/Builders/TypeAccessorBuilder.cs index d857b8339..c9b6cb5dc 100644 --- a/Source/TypeBuilder/Builders/TypeAccessorBuilder.cs +++ b/Source/TypeBuilder/Builders/TypeAccessorBuilder.cs @@ -1,11 +1,13 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; namespace BLToolkit.TypeBuilder.Builders { + using Mapping; using Reflection; using Reflection.Emit; @@ -72,7 +74,13 @@ public Type Build(AssemblyBuilderHelper assemblyBuilder) } } - if (!_originalType.Type.IsVisible && !_friendlyAssembly) + if (!_originalType.Type.IsVisible && !_friendlyAssembly || + ( + from p in _originalType.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) + from a in p.GetCustomAttributes(typeof(MapFieldAttribute), true).Cast() + where a.Storage != null + select a + ).Any()) return typeof (ExprTypeAccessor<,>).MakeGenericType(_type, _originalType); var typeName = GetTypeName(); @@ -216,6 +224,7 @@ private void BuildMembers() if (pi.GetIndexParameters().Length == 0) AddMemberToDictionary(members, pi); + var interfaceMethods = _originalType.Type.IsClass && !_originalType.Type.IsArray ? _originalType.Type.GetInterfaces().SelectMany(ti => _originalType.GetInterfaceMap(ti).TargetMethods).ToList() : new List(); foreach (var pi in _originalType.GetProperties(BindingFlags.Instance | BindingFlags.NonPublic)) { if (pi.GetIndexParameters().Length == 0) @@ -223,7 +232,8 @@ private void BuildMembers() var getter = pi.GetGetMethod(true); var setter = pi.GetSetMethod(true); - if (getter != null && getter.IsAbstract || setter != null && setter.IsAbstract) + if (getter != null && (getter.IsAbstract || interfaceMethods.Contains(getter)) + || setter != null && (setter.IsAbstract || interfaceMethods.Contains(setter))) AddMemberToDictionary(members, pi); } } @@ -253,7 +263,8 @@ private static void AddMemberToDictionary(IDictionary members private void BuildMember(MemberInfo mi) { var isValueType = _originalType.IsValueType; - var nestedType = _typeBuilder.DefineNestedType("Accessor$" + mi.Name, TypeAttributes.NestedPrivate, typeof(MemberAccessor)); + var name = "Accessor$" + mi.Name.Replace('.', '_').Replace('<', '_').Replace('>', '_'); + var nestedType = _typeBuilder.DefineNestedType(name, TypeAttributes.NestedPrivate, typeof(MemberAccessor)); var ctorBuilder = BuildNestedTypeConstructor(nestedType); BuildGetter (mi, nestedType); diff --git a/Source/TypeBuilder/RefCursorAttribute.cs b/Source/TypeBuilder/RefCursorAttribute.cs index 88fb6bc97..ab4a002e9 100644 --- a/Source/TypeBuilder/RefCursorAttribute.cs +++ b/Source/TypeBuilder/RefCursorAttribute.cs @@ -3,18 +3,16 @@ namespace BLToolkit.TypeBuilder { - [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] - public class RefCursorAttribute : Attribute - { + [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] + public class RefCursorAttribute : Attribute + { + } - } - - public static class RefCursorAttributeHelpers - { - public static bool IsRefCursor(this ParameterInfo pi) - { - return pi.GetCustomAttributes(typeof(RefCursorAttribute), false).Length > 0; - } - } - -} \ No newline at end of file + public static class RefCursorAttributeHelpers + { + public static bool IsRefCursor(this ParameterInfo pi) + { + return pi.GetCustomAttributes(typeof(RefCursorAttribute), false).Length > 0; + } + } +} diff --git a/Tools/Templates/MySqlDataModel.generated.cs b/Tools/Templates/MySqlDataModel.generated.cs index 94b4bd7f5..42e937ae1 100644 --- a/Tools/Templates/MySqlDataModel.generated.cs +++ b/Tools/Templates/MySqlDataModel.generated.cs @@ -1,148 +1,180 @@ -//--------------------------------------------------------------------------------------------------- -// -// This code was generated by BLToolkit template for T4. -// Changes to this file may cause incorrect behavior and will be lost if the code is regenerated. -// -//--------------------------------------------------------------------------------------------------- -using System; - -using BLToolkit.Data; -using BLToolkit.Data.Linq; -using BLToolkit.DataAccess; -using BLToolkit.Mapping; -using BLToolkit.Validation; - -namespace MySqlDataModel -{ - public partial class MySqlDataContext : DbManager - { - public Table binarydata { get { return this.GetTable(); } } - public Table child { get { return this.GetTable(); } } - public Table datatypetest { get { return this.GetTable(); } } - public Table doctor { get { return this.GetTable(); } } - public Table grandchild { get { return this.GetTable(); } } - public Table linqdatatypes { get { return this.GetTable(); } } - public Table parent { get { return this.GetTable(); } } - public Table patient { get { return this.GetTable(); } } - public Table person { get { return this.GetTable(); } } - public Table testidentity { get { return this.GetTable(); } } - } - - [TableName(Name="binarydata")] - public partial class binarydata - { - [Identity, PrimaryKey(1), Required ] public int BinaryDataID { get; set; } // int(10) - [ NonUpdatable(OnInsert = true, OnUpdate = true), Required] public DateTime Stamp { get; set; } // timestamp - [ Required ] public byte[] Data { get; set; } // varbinary(1024) - } - - [TableName(Name="child")] - public partial class child - { - [Nullable] public int? ParentID { get; set; } // int(10) - [Nullable] public int? ChildID { get; set; } // int(10) - } - - [TableName(Name="datatypetest")] - public partial class datatypetest - { - [Identity, PrimaryKey(1), Required ] public int DataTypeID { get; set; } // int(10) - [Nullable ] public byte[] Binary_ { get; set; } // binary(50) - [ Required ] public bool Boolean_ { get; set; } // bit(1) - [Nullable ] public sbyte? Byte_ { get; set; } // tinyint(3) - [Nullable ] public byte[] Bytes_ { get; set; } // varbinary(50) - [Nullable, MaxLength( 1)] public string Char_ { get; set; } // char(1) - [Nullable ] public DateTime? DateTime_ { get; set; } // datetime - [Nullable ] public decimal? Decimal_ { get; set; } // decimal(20,2) - [Nullable ] public float? Double_ { get; set; } // float(12) - [Nullable ] public byte[] Guid_ { get; set; } // varbinary(50) - [Nullable ] public short? Int16_ { get; set; } // smallint(5) - [Nullable ] public int? Int32_ { get; set; } // int(10) - [Nullable ] public long? Int64_ { get; set; } // bigint(19) - [Nullable ] public decimal? Money_ { get; set; } // decimal(20,4) - [Nullable ] public sbyte? SByte_ { get; set; } // tinyint(3) - [Nullable ] public double? Single_ { get; set; } // double(22) - [Nullable ] public byte[] Stream_ { get; set; } // varbinary(50) - [Nullable, MaxLength( 50)] public string String_ { get; set; } // varchar(50) - [Nullable ] public short? UInt16_ { get; set; } // smallint(5) - [Nullable ] public int? UInt32_ { get; set; } // int(10) - [Nullable ] public long? UInt64_ { get; set; } // bigint(19) - [Nullable, MaxLength(1000)] public string Xml_ { get; set; } // varchar(1000) - } - - [TableName(Name="doctor")] - public partial class doctor - { - [PrimaryKey(1), Required ] public int PersonID { get; set; } // int(10) - [ MaxLength(50), Required] public string Taxonomy { get; set; } // varchar(50) - - // FK_Doctor_Person - [Association(ThisKey="PersonID", OtherKey="PersonID", CanBeNull=false)] - public person DoctorPerson { get; set; } - } - - [TableName(Name="grandchild")] - public partial class grandchild - { - [Nullable] public int? ParentID { get; set; } // int(10) - [Nullable] public int? ChildID { get; set; } // int(10) - [Nullable] public int? GrandChildID { get; set; } // int(10) - } - - [TableName(Name="linqdatatypes")] - public partial class linqdatatypes - { - [Nullable ] public int? ID { get; set; } // int(10) - [Nullable ] public decimal? MoneyValue { get; set; } // decimal(10,4) - [Nullable ] public DateTime? DateTimeValue { get; set; } // datetime - [Nullable ] public DateTime? DateTimeValue2 { get; set; } // datetime - [Nullable ] public bool? BoolValue { get; set; } // tinyint(3) - [Nullable, MaxLength(36)] public string GuidValue { get; set; } // char(36) - [Nullable ] public byte[] BinaryValue { get; set; } // varbinary(5000) - [Nullable ] public short? SmallIntValue { get; set; } // smallint(5) - [Nullable ] public int? IntValue { get; set; } // int(10) - [Nullable ] public long? BigIntValue { get; set; } // bigint(19) - } - - [TableName(Name="parent")] - public partial class parent - { - [Nullable] public int? ParentID { get; set; } // int(10) - [Nullable] public int? Value1 { get; set; } // int(10) - } - - [TableName(Name="patient")] - public partial class patient - { - [PrimaryKey(1), Required ] public int PersonID { get; set; } // int(10) - [ MaxLength(256), Required] public string Diagnosis { get; set; } // varchar(256) - - // FK_Patient_Person - [Association(ThisKey="PersonID", OtherKey="PersonID", CanBeNull=false)] - public person PatientPerson { get; set; } - } - - [TableName(Name="person")] - public partial class person - { - [Identity, PrimaryKey(1), Required ] public int PersonID { get; set; } // int(10) - [ MaxLength(50), Required] public string FirstName { get; set; } // varchar(50) - [ MaxLength(50), Required] public string LastName { get; set; } // varchar(50) - [Nullable, MaxLength(50) ] public string MiddleName { get; set; } // varchar(50) - [ MaxLength( 1), Required] public string Gender { get; set; } // char(1) - - // FK_Doctor_Person_BackReference - [Association(ThisKey="PersonID", OtherKey="PersonID", CanBeNull=true)] - public doctor DoctorPerson { get; set; } - - // FK_Patient_Person_BackReference - [Association(ThisKey="PersonID", OtherKey="PersonID", CanBeNull=true)] - public patient PatientPerson { get; set; } - } - - [TableName(Name="testidentity")] - public partial class testidentity - { - [Identity, PrimaryKey(1), Required] public int ID { get; set; } // int(10) - } -} +//--------------------------------------------------------------------------------------------------- +// +// This code was generated by BLToolkit template for T4. +// Changes to this file may cause incorrect behavior and will be lost if the code is regenerated. +// +//--------------------------------------------------------------------------------------------------- +using System; + +using BLToolkit.Data; +using BLToolkit.Data.Linq; +using BLToolkit.DataAccess; +using BLToolkit.Mapping; +using BLToolkit.Validation; + +namespace MySqlDataModel +{ + public partial class MySqlDataContext : DbManager + { + public Table alltypes { get { return this.GetTable(); } } + public Table binarydata { get { return this.GetTable(); } } + public Table child { get { return this.GetTable(); } } + public Table datatypetest { get { return this.GetTable(); } } + public Table doctor { get { return this.GetTable(); } } + public Table grandchild { get { return this.GetTable(); } } + public Table linqdatatypes { get { return this.GetTable(); } } + public Table parent { get { return this.GetTable(); } } + public Table patient { get { return this.GetTable(); } } + public Table person { get { return this.GetTable(); } } + public Table testidentity { get { return this.GetTable(); } } + } + + [TableName(Name="alltypes")] + public partial class alltypes + { + [Identity, PrimaryKey(1), Required ] public int ID { get; set; } // int(10) + [Nullable ] public long? bigintDataType { get; set; } // bigint(19) + [Nullable ] public short? smallintDataType { get; set; } // smallint(5) + [Nullable ] public sbyte? tinyintDataType { get; set; } // tinyint(3) + [Nullable ] public int? mediumintDataType { get; set; } // mediumint(7) + [Nullable ] public int? intDataType { get; set; } // int(10) + [Nullable ] public decimal? numericDataType { get; set; } // decimal(10) + [Nullable ] public decimal? decimalDataType { get; set; } // decimal(10) + [Nullable ] public double? doubleDataType { get; set; } // double(22) + [Nullable ] public float? floatDataType { get; set; } // float(12) + [Nullable ] public DateTime? dateDataType { get; set; } // date + [Nullable ] public DateTime? datetimeDataType { get; set; } // datetime + [Nullable ] public DateTime? timestampDataType { get; set; } // timestamp + [Nullable ] public DateTime? timeDataType { get; set; } // time + [Nullable ] public DateTime? yearDataType { get; set; } // year + [Nullable ] public DateTime? year2DataType { get; set; } // year + [Nullable ] public DateTime? year4DataType { get; set; } // year + [Nullable, MaxLength( 1)] public string charDataType { get; set; } // char(1) + [Nullable, MaxLength( 20)] public string varcharDataType { get; set; } // varchar(20) + [Nullable, MaxLength(65535)] public string textDataType { get; set; } // text(65535) + [Nullable ] public byte[] binaryDataType { get; set; } // binary(3) + [Nullable ] public byte[] varbinaryDataType { get; set; } // varbinary(5) + [Nullable ] public byte[] blobDataType { get; set; } // blob(65535) + [Nullable ] public bool? bitDataType { get; set; } // bit(3) + [Nullable, MaxLength( 5)] public string enumDataType { get; set; } // enum(5) + [Nullable, MaxLength( 7)] public string setDataType { get; set; } // set(7) + } + + [TableName(Name="binarydata")] + public partial class binarydata + { + [Identity, PrimaryKey(1), Required ] public int BinaryDataID { get; set; } // int(10) + [ NonUpdatable(OnInsert = true, OnUpdate = true), Required] public DateTime Stamp { get; set; } // timestamp + [ Required ] public byte[] Data { get; set; } // varbinary(1024) + } + + [TableName(Name="child")] + public partial class child + { + [Nullable] public int? ParentID { get; set; } // int(10) + [Nullable] public int? ChildID { get; set; } // int(10) + } + + [TableName(Name="datatypetest")] + public partial class datatypetest + { + [Identity, PrimaryKey(1), Required ] public int DataTypeID { get; set; } // int(10) + [Nullable ] public byte[] Binary_ { get; set; } // binary(50) + [ Required ] public bool Boolean_ { get; set; } // bit(1) + [Nullable ] public sbyte? Byte_ { get; set; } // tinyint(3) + [Nullable ] public byte[] Bytes_ { get; set; } // varbinary(50) + [Nullable, MaxLength( 1)] public string Char_ { get; set; } // char(1) + [Nullable ] public DateTime? DateTime_ { get; set; } // datetime + [Nullable ] public decimal? Decimal_ { get; set; } // decimal(20,2) + [Nullable ] public float? Double_ { get; set; } // float(12) + [Nullable ] public byte[] Guid_ { get; set; } // varbinary(50) + [Nullable ] public short? Int16_ { get; set; } // smallint(5) + [Nullable ] public int? Int32_ { get; set; } // int(10) + [Nullable ] public long? Int64_ { get; set; } // bigint(19) + [Nullable ] public decimal? Money_ { get; set; } // decimal(20,4) + [Nullable ] public sbyte? SByte_ { get; set; } // tinyint(3) + [Nullable ] public double? Single_ { get; set; } // double(22) + [Nullable ] public byte[] Stream_ { get; set; } // varbinary(50) + [Nullable, MaxLength( 50)] public string String_ { get; set; } // varchar(50) + [Nullable ] public short? UInt16_ { get; set; } // smallint(5) + [Nullable ] public int? UInt32_ { get; set; } // int(10) + [Nullable ] public long? UInt64_ { get; set; } // bigint(19) + [Nullable, MaxLength(1000)] public string Xml_ { get; set; } // varchar(1000) + } + + [TableName(Name="doctor")] + public partial class doctor + { + [PrimaryKey(1), Required ] public int PersonID { get; set; } // int(10) + [ MaxLength(50), Required] public string Taxonomy { get; set; } // varchar(50) + + // FK_Doctor_Person + [Association(ThisKey="PersonID", OtherKey="PersonID", CanBeNull=false)] + public person DoctorPerson { get; set; } + } + + [TableName(Name="grandchild")] + public partial class grandchild + { + [Nullable] public int? ParentID { get; set; } // int(10) + [Nullable] public int? ChildID { get; set; } // int(10) + [Nullable] public int? GrandChildID { get; set; } // int(10) + } + + [TableName(Name="linqdatatypes")] + public partial class linqdatatypes + { + [Nullable ] public int? ID { get; set; } // int(10) + [Nullable ] public decimal? MoneyValue { get; set; } // decimal(10,4) + [Nullable ] public DateTime? DateTimeValue { get; set; } // datetime + [Nullable ] public DateTime? DateTimeValue2 { get; set; } // datetime + [Nullable ] public bool? BoolValue { get; set; } // tinyint(3) + [Nullable, MaxLength(36)] public string GuidValue { get; set; } // char(36) + [Nullable ] public byte[] BinaryValue { get; set; } // varbinary(5000) + [Nullable ] public short? SmallIntValue { get; set; } // smallint(5) + [Nullable ] public int? IntValue { get; set; } // int(10) + [Nullable ] public long? BigIntValue { get; set; } // bigint(19) + } + + [TableName(Name="parent")] + public partial class parent + { + [Nullable] public int? ParentID { get; set; } // int(10) + [Nullable] public int? Value1 { get; set; } // int(10) + } + + [TableName(Name="patient")] + public partial class patient + { + [PrimaryKey(1), Required ] public int PersonID { get; set; } // int(10) + [ MaxLength(256), Required] public string Diagnosis { get; set; } // varchar(256) + + // FK_Patient_Person + [Association(ThisKey="PersonID", OtherKey="PersonID", CanBeNull=false)] + public person PatientPerson { get; set; } + } + + [TableName(Name="person")] + public partial class person + { + [Identity, PrimaryKey(1), Required ] public int PersonID { get; set; } // int(10) + [ MaxLength(50), Required] public string FirstName { get; set; } // varchar(50) + [ MaxLength(50), Required] public string LastName { get; set; } // varchar(50) + [Nullable, MaxLength(50) ] public string MiddleName { get; set; } // varchar(50) + [ MaxLength( 1), Required] public string Gender { get; set; } // char(1) + + // FK_Doctor_Person_BackReference + [Association(ThisKey="PersonID", OtherKey="PersonID", CanBeNull=true)] + public doctor DoctorPerson { get; set; } + + // FK_Patient_Person_BackReference + [Association(ThisKey="PersonID", OtherKey="PersonID", CanBeNull=true)] + public patient PatientPerson { get; set; } + } + + [TableName(Name="testidentity")] + public partial class testidentity + { + [Identity, PrimaryKey(1), Required] public int ID { get; set; } // int(10) + } +} diff --git a/Tools/Templates/MySqlDataModel.tt b/Tools/Templates/MySqlDataModel.tt index 3b21e1935..f766d9514 100644 --- a/Tools/Templates/MySqlDataModel.tt +++ b/Tools/Templates/MySqlDataModel.tt @@ -1,15 +1,15 @@ -<#@ template language="C#" debug="True" hostspecific="True" #> -<#@ output extension=".generated.cs" #> -<#@ assembly name="$(SolutionDir)\packages\MySql.Data.6.5.4\lib\Net40\MySql.Data.dll" #> -<#@ include file="$(SolutionDir)\Source\Templates\BLToolkit.ttinclude" #> -<#@ include file="$(SolutionDir)\Source\Templates\MySql.ttinclude" #> -<#@ include file="$(SolutionDir)\Source\Templates\ValidationAttributes.ttinclude" #> -<# - GetConnectionObject = () => new MySql.Data.MySqlClient.MySqlConnection(); - ConnectionString = "Server=DBHost;Port=3306;Database=testdata;Uid=root;Pwd=TestPassword;charset=utf8;"; - - DataContextName = "MySqlDataContext"; - Namespace = "MySqlDataModel"; - - GenerateModel(); -#> +<#@ template language="C#" debug="True" hostspecific="True" #> +<#@ output extension=".generated.cs" #> +<#@ assembly name="$(SolutionDir)\packages\MySql.Data.6.6.4\lib\Net40\MySql.Data.dll" #> +<#@ include file="$(SolutionDir)\Source\Templates\BLToolkit.ttinclude" #> +<#@ include file="$(SolutionDir)\Source\Templates\MySql.ttinclude" #> +<#@ include file="$(SolutionDir)\Source\Templates\ValidationAttributes.ttinclude" #> +<# + GetConnectionObject = () => new MySql.Data.MySqlClient.MySqlConnection(); + ConnectionString = "Server=DBHost;Port=3306;Database=testdata;Uid=root;Pwd=TestPassword;charset=utf8;"; + + DataContextName = "MySqlDataContext"; + Namespace = "MySqlDataModel"; + + GenerateModel(); +#> diff --git a/Tools/Templates/PostgreSQLDataModel.generated.cs b/Tools/Templates/PostgreSQLDataModel.generated.cs index 9b90ce5de..7833c3835 100644 --- a/Tools/Templates/PostgreSQLDataModel.generated.cs +++ b/Tools/Templates/PostgreSQLDataModel.generated.cs @@ -12,10 +12,13 @@ using BLToolkit.Mapping; using BLToolkit.Validation; +using NpgsqlTypes; + namespace PostgreSqlDataModel { public partial class PostgreSqlDataContext : DbManager { + public Table alltypes { get { return this.GetTable(); } } public Table Child { get { return this.GetTable(); } } public Table Doctor { get { return this.GetTable(); } } public Table entity { get { return this.GetTable(); } } @@ -30,6 +33,42 @@ public partial class PostgreSqlDataContext : DbManager public Table TestIdentity { get { return this.GetTable(); } } } + [TableName(Owner="public", Name="alltypes")] + public partial class alltypes + { + [Identity, PrimaryKey(1), Required] public Int32 id { get; set; } // integer + [Nullable ] public Int64? bigintdatatype { get; set; } // bigint + [Nullable ] public Decimal? numericdatatype { get; set; } // numeric + [Nullable ] public Int16? smallintdatatype { get; set; } // smallint + [Nullable ] public Int32? intdatatype { get; set; } // integer + [Nullable ] public Decimal? moneydatatype { get; set; } // money + [Nullable ] public Double? doubledatatype { get; set; } // double precision + [Nullable ] public Single? realdatatype { get; set; } // real + [Nullable ] public DateTime? timestampdatatype { get; set; } // timestamp without time zone + [Nullable ] public DateTime? timestamptzdatatype { get; set; } // timestamp with time zone + [Nullable ] public DateTime? datedatatype { get; set; } // date + [Nullable ] public DateTime? timedatatype { get; set; } // time without time zone + [Nullable ] public DateTime? timetzdatatype { get; set; } // time with time zone + [Nullable ] public NpgsqlInterval? intervaldatatype { get; set; } // interval + [ Required] public String chardatatype { get; set; } // character(1)(1) + [ Required] public String varchardatatype { get; set; } // character varying(20)(20) + [ Required] public String textdatatype { get; set; } // text + [ Required] public Byte[] binarydatatype { get; set; } // bytea + [Nullable ] public Guid? uuiddatatype { get; set; } // uuid + [Nullable ] public BitString? bitdatatype { get; set; } // bit(3)(3) + [Nullable ] public Boolean? booleandatatype { get; set; } // boolean + [Nullable ] public object colordatatype { get; set; } // color + [Nullable ] public NpgsqlPoint? pointdatatype { get; set; } // point + [Nullable ] public NpgsqlLSeg? lsegdatatype { get; set; } // lseg + [Nullable ] public NpgsqlBox? boxdatatype { get; set; } // box + [Nullable ] public NpgsqlPath? pathdatatype { get; set; } // path + [Nullable ] public NpgsqlPolygon? polygondatatype { get; set; } // polygon + [Nullable ] public NpgsqlCircle? circledatatype { get; set; } // circle + [Nullable ] public NpgsqlInet? inetdatatype { get; set; } // inet + [Nullable ] public NpgsqlMacAddress? macaddrdatatype { get; set; } // macaddr + [Nullable ] public String xmldatatype { get; set; } // xml + } + [TableName(Owner="public", Name="Child")] public partial class Child { diff --git a/Tools/Templates/PostgreSQLDataModel.tt b/Tools/Templates/PostgreSQLDataModel.tt index e29310a2a..24a8c410c 100644 --- a/Tools/Templates/PostgreSQLDataModel.tt +++ b/Tools/Templates/PostgreSQLDataModel.tt @@ -1,8 +1,8 @@ <#@ template language="C#" debug="True" hostspecific="True" #> <#@ output extension=".generated.cs" #> -<#@ assembly name="$(SolutionDir)\packages\Npgsql.2.0.11\lib\Net40\Npgsql.dll" #> -<#@ include file="$(SolutionDir)\Source\Templates\BLToolkit.ttinclude" #> -<#@ include file="$(SolutionDir)\Source\Templates\PostgreSql.ttinclude" #> +<#@ assembly name="$(SolutionDir)\packages\Npgsql.2.0.12.1\lib\Net40\Npgsql.dll" #> +<#@ include file="$(SolutionDir)\Source\Templates\BLToolkit.ttinclude" #> +<#@ include file="$(SolutionDir)\Source\Templates\PostgreSql.ttinclude" #> <#@ include file="$(SolutionDir)\Source\Templates\ValidationAttributes.ttinclude" #> <# GetConnectionObject = () => new Npgsql.NpgsqlConnection(); diff --git a/Tools/Templates/Templates.2008.csproj b/Tools/Templates/Templates.2008.csproj index 8e9043b0b..e88a61816 100644 --- a/Tools/Templates/Templates.2008.csproj +++ b/Tools/Templates/Templates.2008.csproj @@ -31,6 +31,10 @@ 4 + + False + ..\..\packages\Npgsql.2.0.12.1\lib\net35\Npgsql.dll + 3.5 diff --git a/Tools/Templates/Templates.csproj b/Tools/Templates/Templates.csproj index 94eca6bf0..6c72ff350 100644 --- a/Tools/Templates/Templates.csproj +++ b/Tools/Templates/Templates.csproj @@ -85,11 +85,13 @@ false - - ..\..\packages\Npgsql.2.0.11\lib\Net40\Mono.Security.dll + + False + ..\..\packages\Npgsql.2.0.14.3\lib\net40\Mono.Security.dll - - ..\..\packages\Npgsql.2.0.11\lib\Net40\Npgsql.dll + + False + ..\..\packages\Npgsql.2.0.14.3\lib\net40\Npgsql.dll diff --git a/Tools/Templates/packages.config b/Tools/Templates/packages.config index 908fbffea..deb69078b 100644 --- a/Tools/Templates/packages.config +++ b/Tools/Templates/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/UnitTests/All/UnitTests.All.csproj b/UnitTests/All/UnitTests.All.csproj index d87675483..dbd7c6076 100644 --- a/UnitTests/All/UnitTests.All.csproj +++ b/UnitTests/All/UnitTests.All.csproj @@ -86,9 +86,9 @@ false - + False - ..\..\packages\NUnit.2.6.2\lib\nunit.framework.dll + ..\..\packages\NUnit.2.6.3\lib\nunit.framework.dll diff --git a/UnitTests/All/packages.config b/UnitTests/All/packages.config index 617647af2..5a3253fcb 100644 --- a/UnitTests/All/packages.config +++ b/UnitTests/All/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/UnitTests/CS/Data/DbManagerTest.cs b/UnitTests/CS/Data/DbManagerTest.cs index 832ca3d6e..1a280f449 100644 --- a/UnitTests/CS/Data/DbManagerTest.cs +++ b/UnitTests/CS/Data/DbManagerTest.cs @@ -451,5 +451,34 @@ public void CreateManyParametersTest() Assert.AreEqual(s.LastName, p.LastName); } } + + [Test] + public void EnumExecuteScalarTest1() + { + using (var dbm = new DbManager()) + { + var gender = dbm.SetCommand(CommandType.Text, "select 'M'") + .ExecuteScalar(); + + Assert.That(gender, Is.EqualTo(Gender.Male)); + } + } + + public enum ABType + { + Error = -1, + A = 0, + B, + } + + [Test] + public void EnumExecuteScalarTest2() + { + using (var db = new DbManager()) + { + var type = db.SetCommand("select 1 where 1 = 2").ExecuteScalar(); + Assert.That(type, Is.EqualTo(ABType.A)); + } + } } } diff --git a/UnitTests/CS/DataAccess/DataAccessorTest.cs b/UnitTests/CS/DataAccess/DataAccessorTest.cs index 4f891a8c0..8d1f62d8d 100644 --- a/UnitTests/CS/DataAccess/DataAccessorTest.cs +++ b/UnitTests/CS/DataAccess/DataAccessorTest.cs @@ -7,7 +7,6 @@ using NUnit.Framework; using BLToolkit.Data; -using BLToolkit.Data.DataProvider; using BLToolkit.DataAccess; using BLToolkit.EditableObjects; using BLToolkit.Mapping; @@ -932,6 +931,39 @@ public void Gen_SelectAllEnumerableTWithObjectType() } #endregion + + #region Pull Request 121 + + public class Whatever + { + public string Name { get; set; } + public int Age { get; set; } + } + + public class Whatever2 + { + public bool IsFoo { get; set; } + } + + public abstract class SomeDA : DataAccessor + { + [SqlQuery("select 'Gogi' as Name, 10 as Age")] + public abstract Whatever GetWhatever(); + } + + [Test] + public void TestIssue121() + { + using (var dbm = new DbManager()) + { + var da = DataAccessor.CreateInstance(dbm); + var foo = da.GetWhatever(); + + Assert.That(foo, Is.InstanceOf()); + } + } + + #endregion } } diff --git a/UnitTests/CS/EditableObjects/EditableArrayListTest.cs b/UnitTests/CS/EditableObjects/EditableArrayListTest.cs index f017733c8..2293398c5 100644 --- a/UnitTests/CS/EditableObjects/EditableArrayListTest.cs +++ b/UnitTests/CS/EditableObjects/EditableArrayListTest.cs @@ -11,6 +11,16 @@ namespace EditableObjects { + [Serializable] + public abstract class SerializableObject : EditableObject + { + public abstract int ID { get; set; } + public abstract Guid UUID { get; set; } + public abstract string Name { get; set; } + + public abstract EditableList Array { get; set; } + } + [TestFixture] public class EditableArrayListTest { @@ -387,16 +397,6 @@ private void PrintList() Console.WriteLine(o); } - [Serializable] - public abstract class SerializableObject : EditableObject - { - public abstract int ID { get; set; } - public abstract Guid UUID { get; set; } - public abstract string Name { get; set; } - - public abstract EditableList Array { get; set; } - } - [Test] public void SerializationTest() { @@ -411,7 +411,7 @@ public void SerializationTest() //Configuration.NotifyOnChangesOnly = false; } - [Test] + //////[Test] Resharpe 8 issue public void SerializationTest2() { //Configuration.NotifyOnChangesOnly = true; diff --git a/UnitTests/CS/EditableObjects/NotifyCollectionChangeTest.cs b/UnitTests/CS/EditableObjects/NotifyCollectionChangeTest.cs index fbcaa5863..d852531ad 100644 --- a/UnitTests/CS/EditableObjects/NotifyCollectionChangeTest.cs +++ b/UnitTests/CS/EditableObjects/NotifyCollectionChangeTest.cs @@ -373,16 +373,6 @@ private void PrintList() Console.WriteLine(o); } - [Serializable] - public abstract class SerializableObject : EditableObject - { - public abstract int ID { get; set; } - public abstract Guid UUID { get; set; } - public abstract string Name { get; set; } - - public abstract EditableList Array { get; set; } - } - [Test] public void SerializationTest() { @@ -398,7 +388,7 @@ public void SerializationTest() //Configuration.NotifyOnChangesOnly = false; } - [Test] + //////[Test] Resharpe 8 issue public void SerializationTest2() { //Configuration.NotifyOnChangesOnly = true; diff --git a/UnitTests/CS/JointureTests/Artist.cs b/UnitTests/CS/JointureTests/Artist.cs deleted file mode 100644 index 371eb5fb3..000000000 --- a/UnitTests/CS/JointureTests/Artist.cs +++ /dev/null @@ -1,15 +0,0 @@ -using BLToolkit.DataAccess; -using BLToolkit.Mapping; - -namespace UnitTests.CS.JointureTests -{ - [TableName(Name = "ARTIST", Owner = Consts.Owner)] - public class Artist - { - [MapField("ID_ARTIST"), PrimaryKey, NonUpdatable] - public long Id { get; set; } - - [MapField("ARTIST")] - public string Name { get; set; } - } -} \ No newline at end of file diff --git a/UnitTests/CS/JointureTests/Artist2.cs b/UnitTests/CS/JointureTests/Artist2.cs deleted file mode 100644 index d1242172d..000000000 --- a/UnitTests/CS/JointureTests/Artist2.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Collections.Generic; -using BLToolkit.DataAccess; -using BLToolkit.Mapping; -using BLToolkit.TypeBuilder; - -namespace UnitTests.CS.JointureTests -{ - [TableName(Name = "ARTIST", Owner = Consts.Owner)] - public class Artist2 - { - [MapField("ID_ARTIST"), PrimaryKey, NonUpdatable] - public long Id { get; set; } - - [MapField("ARTIST")] - public string Name { get; set; } - - [LazyInstance(true)] - [Association(ThisKey = "Id", OtherKey = "ArtistID", CanBeNull = false)] - public virtual List Titles { get; set; } - } -} \ No newline at end of file diff --git a/UnitTests/CS/JointureTests/AssociationTests.cs b/UnitTests/CS/JointureTests/AssociationTests.cs deleted file mode 100644 index 65114254d..000000000 --- a/UnitTests/CS/JointureTests/AssociationTests.cs +++ /dev/null @@ -1,102 +0,0 @@ -using System.Collections.Generic; -using BLToolkit.Data; -using BLToolkit.Data.DataProvider; -using BLToolkit.DataAccess; -using BLToolkit.Mapping; -using NUnit.Framework; - -namespace UnitTests.CS.JointureTests -{ - //[TestFixture] - internal class AssociationTests - { - [TestFixtureSetUp] - public void Setup() - { - DataProviderBase provider = new OdpDataProvider(); - DbManager.AddDataProvider(provider); - DbManager.AddConnectionString(provider.Name, - string.Format( - "data source={0};User Id={1};Password={2};Incr Pool Size=1;Max Pool Size=3; Connection Timeout=15; pooling=false", - "MUSICFR01.TEST", "scurutchet", "kisscool12")); - } - - //[Test] - public void SelectAllArtistsIgnoreLazyLoading() - { - using (var db = new MusicDB()) - { - var query2 = new FullSqlQuery(db, true); //loading is automatic - var artist2 = (Artist2) query2.SelectByKey(typeof (Artist2), 2643); - var titles2 = artist2.Titles; - - var query = new FullSqlQuery(db); // Dont ignore lazyloading - var artist = (Artist2) query.SelectByKey(typeof (Artist2), 2643); - var titles = artist.Titles; - Assert.AreEqual(titles2.Count, titles.Count); - } - } - - //[Test] - public void SelectAllArtistsLazyLoading() - { - using (var db = new MusicDB()) - { - var dbCmd = db.SetCommand("SELECT ID_ARTIST FROM PITAFR01.Artist where date_creation > sysdate - 200"); - - dbCmd.MappingSchema = new FullMappingSchema(); - - var art = dbCmd.ExecuteList<Artist2>(); - var titles = art[0].Titles; - var query2 = new FullSqlQueryT<Artist2>(db); - var artists = query2.SelectAll(); - var artist2 = artists[0]; - var titles2 = artist2.Titles; - } - } - - //[Test] - public void SelectAllTitlesFull() - { - using (var db = new MusicDB()) - { - var query = new FullSqlQueryT<Title>(db); - var titles1 = query.SelectAll<List<Title>>(); - List<Title> titles2 = query.SelectAll(); - } - } - - //[Test] - public void SelectAllTitlesFull2() - { - using (var db = new MusicDB()) - { - var query2 = new FullSqlQuery(db); - var titles = query2.SelectAll<Title>(); - var title = (Title) query2.SelectByKey(typeof (Title), 137653); - } - } - - //[Test] - public void SelectArtistFullWithLazyLoadingTitles() - { - using (var db = new MusicDB()) - { - var query2 = new FullSqlQueryT<Artist2>(db); - var artist = query2.SelectByKey(2643); - var titles = artist.Titles; - } - } - - //[Test] - public void SelectTitleFull() - { - using (var db = new MusicDB()) - { - var query2 = new FullSqlQueryT<Title>(db); - var title = query2.SelectByKey(137653); - var titleName = title.Name; - } - } - } -} \ No newline at end of file diff --git a/UnitTests/CS/JointureTests/Consts.cs b/UnitTests/CS/JointureTests/Consts.cs deleted file mode 100644 index e459badae..000000000 --- a/UnitTests/CS/JointureTests/Consts.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace UnitTests.CS.JointureTests -{ - public static class Consts - { - public const string Owner = "PITAFR01"; - } -} \ No newline at end of file diff --git a/UnitTests/CS/JointureTests/MusicDB.cs b/UnitTests/CS/JointureTests/MusicDB.cs deleted file mode 100644 index 5222e9e4c..000000000 --- a/UnitTests/CS/JointureTests/MusicDB.cs +++ /dev/null @@ -1,11 +0,0 @@ -using BLToolkit.Data; -using BLToolkit.Data.Linq; - -namespace UnitTests.CS.JointureTests -{ - public class MusicDB : DbManager - { - public Table<Title> Title { get { return GetTable<Title>(); } } - public Table<Artist2> Artist2 { get { return GetTable<Artist2>(); } } - } -} \ No newline at end of file diff --git a/UnitTests/CS/JointureTests/Title.cs b/UnitTests/CS/JointureTests/Title.cs deleted file mode 100644 index b7a9f9168..000000000 --- a/UnitTests/CS/JointureTests/Title.cs +++ /dev/null @@ -1,21 +0,0 @@ -using BLToolkit.DataAccess; -using BLToolkit.Mapping; - -namespace UnitTests.CS.JointureTests -{ - [TableName(Name = "TRACK", Owner = Consts.Owner)] - public class Title - { - [MapField("ID_TRACK"), PrimaryKey, NonUpdatable] - public long Id { get; set; } - - [MapField("TRACK")] - public string Name { get; set; } - - [MapField("ID_ARTIST")] - public long? ArtistID { get; set; } - - [Association(ThisKey = "ArtistID", OtherKey = "Id", CanBeNull = false)] - public Artist Artist { get; set; } - } -} \ No newline at end of file diff --git a/UnitTests/CS/Mapping/BltMapTests.cs b/UnitTests/CS/Mapping/BltMapTests.cs new file mode 100644 index 000000000..2fdf88b39 --- /dev/null +++ b/UnitTests/CS/Mapping/BltMapTests.cs @@ -0,0 +1,115 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; + +using BLToolkit.Mapping; +using BLToolkit.Reflection; + +using NUnit.Framework; + +namespace Mapping +{ + [TestFixture] + public class BltMapTests + { + #region Types + + public class TestStep + { + public string Step { get; set; } + } + + internal class Test_Int + { + private BindingList<TestStep> _steps; + + public Test_Int() + { + InitializeStepsList(); + } + + public bool NotNullSetterCalled = false; + + private void InitializeStepsList(IList<TestStep> init = null) + { + _steps = new BindingList<TestStep>(init ?? new List<TestStep>()); + if (init != null) NotNullSetterCalled = true; + } + + [MapField(Storage = "Steps")] + public IList<TestStep> Steps + { + get { return _steps; } + private set { InitializeStepsList(value); } + } + } + + public class Test_Pub + { + private BindingList<TestStep> _steps; + + public Test_Pub() + { + InitializeStepsList(); + } + + public bool NotNullSetterCalled = false; + + private void InitializeStepsList(IList<TestStep> init = null) + { + _steps = new BindingList<TestStep>(init ?? new List<TestStep>()); + if (init != null) NotNullSetterCalled = true; + } + + [MapField(Storage = "Steps")] + public IList<TestStep> Steps + { + get { return _steps; } + private set { InitializeStepsList(value); } + } + } + + public class TestStepRecord + { + public string Step { get; set; } + } + + public class TestRecord + { + //[MapField] + public List<TestStepRecord> Steps; + } + + #endregion + + [Test] + public void TestExpressionMapper_Int() + { + //Arrange + var em = new ExpressionMapper<TestRecord, Test_Int>(); + var tr = new TestRecord { Steps = new List<TestStepRecord> { new TestStepRecord {Step = "Test" } } }; + + //Act + var t = em.GetMapper()(tr); + + //Assert + Assert.IsTrue(t.Steps.Count == 1); + Assert.IsTrue(t.NotNullSetterCalled); + } + + [Test] + public void TestExpressionMapper_Pub() + { + //Arrange + var em = new ExpressionMapper<TestRecord, Test_Pub>(); + var tr = new TestRecord { Steps = new List<TestStepRecord> { new TestStepRecord { Step = "Test" } } }; + + //Act + var t = em.GetMapper()(tr); + + //Assert + Assert.IsTrue(t.Steps.Count == 1); + Assert.IsTrue(t.NotNullSetterCalled); + } + } +} diff --git a/UnitTests/CS/Mapping/EnumExtension.cs b/UnitTests/CS/Mapping/EnumExtension.cs index 720529db2..77f154ed1 100644 --- a/UnitTests/CS/Mapping/EnumExtension.cs +++ b/UnitTests/CS/Mapping/EnumExtension.cs @@ -64,7 +64,7 @@ public void EnumToValueTest() Assert.AreEqual(101, Map.EnumToValue(OtherEnum1.EnumValue2)); } - //[Test] + [Test] public void ObjToDicTest() { var obj = new TestObj { Country = CountryCodeEnum1.DZ, Other = OtherEnum1.EnumValue2 }; diff --git a/UnitTests/CS/Mapping/ExpressionMapperTest.cs b/UnitTests/CS/Mapping/ExpressionMapperTest.cs index b423f4be7..a552e1aae 100644 --- a/UnitTests/CS/Mapping/ExpressionMapperTest.cs +++ b/UnitTests/CS/Mapping/ExpressionMapperTest.cs @@ -384,5 +384,61 @@ public void NoCrossRef() Assert.IsNotNull (dest.Class2); Assert.AreNotSame(dest.Class1, dest.Class2); } + + class Object1 + { + public int Field1; + [ExpressionMapIgnore] + public int Field2; + } + + class Object2 + { + public int Field1; + public int Field2; + } + + [Test] + public void ExpressionMapIgnoreTest() + { + var mapper1 = Map.GetObjectMapper<Object1,Object2>(); + var object2 = mapper1(new Object1 { Field1 = 1, Field2 = 2 }); + + Assert.That(object2.Field2, Is.Not.EqualTo(2)); + + var mapper2 = Map.GetObjectMapper<Object2,Object1>(); + var object1 = mapper2(new Object2 { Field1 = 1, Field2 = 2 }); + + Assert.That(object1.Field2, Is.Not.EqualTo(2)); + } + + [MapField("SomethingColumnInDB", "MyInnerClass.Something")] + class MyClass + { + public int ID; + public string Name; + public MyInnerClass MyInnerClass; + } + + class MyInnerClass + { + public string Something; + } + + [Test] + public void MapFieldTest() + { + var entity = new MyClass + { + ID = 1, + Name = "Test", + MyInnerClass = new MyInnerClass { Something = "Something" } + }; + + var mapper = Map.GetObjectMapper<MyClass,MyClass>(true, true); + var clone = mapper(entity); + + Assert.That(clone.MyInnerClass, Is.Not.Null); + } } } diff --git a/UnitTests/CS/Mapping/MemberMapperDefaultMappersTest.cs b/UnitTests/CS/Mapping/MemberMapperDefaultMappersTest.cs new file mode 100644 index 000000000..3255c7230 --- /dev/null +++ b/UnitTests/CS/Mapping/MemberMapperDefaultMappersTest.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using BLToolkit.Mapping; +using BLToolkit.Mapping.MemberMappers; + +using NUnit.Framework; + +namespace Mapping +{ + [TestFixture] + public class MemberMapperDefaultMappersTest + { + public class Object1 + { + [MemberMapper(typeof(XMLSerialisationMapper))] + public List<object> Lst1; + [MemberMapper(typeof(BinarySerialisationMapper))] + public List<object> Lst2; + [MemberMapper(typeof(BinarySerialisationToBase64StringMapper))] + public List<object> Lst3; + [MemberMapper(typeof(JSONSerialisationMapper))] + public List<object> Lst4; + } + + [Test] + public void DefaultMemberMapperTest() + { + ObjectMapper om = Map.GetObjectMapper(typeof(Object1)); + + Object1 o = new Object1(); + + o.Lst1 = new List<object>() { "Hello", "this", "is", "a", "test", 1, 2, 3 }; + o.Lst2 = o.Lst1; + o.Lst3 = o.Lst1; + o.Lst4 = o.Lst1; + + var xml = om.GetValue(o, "Lst1"); + var bytearr = om.GetValue(o, "Lst2"); + var base64 = om.GetValue(o, "Lst3"); + var json = om.GetValue(o, "Lst4"); + + var o2 = new Object1(); + om.SetValue(o2, "Lst1", xml); + om.SetValue(o2, "Lst2", bytearr); + om.SetValue(o2, "Lst3", base64); + om.SetValue(o2, "Lst4", json); + + Assert.IsTrue(o.Lst1.SequenceEqual(o2.Lst1)); + Assert.IsTrue(o.Lst2.SequenceEqual(o2.Lst2)); + Assert.IsTrue(o.Lst3.SequenceEqual(o2.Lst3)); + Assert.IsTrue(o.Lst4.SequenceEqual(o2.Lst4)); + } + } +} diff --git a/UnitTests/CS/Mapping/MemberMapperTest.cs b/UnitTests/CS/Mapping/MemberMapperTest.cs index 7620b1529..49e534b3d 100644 --- a/UnitTests/CS/Mapping/MemberMapperTest.cs +++ b/UnitTests/CS/Mapping/MemberMapperTest.cs @@ -135,7 +135,10 @@ public class Object3 public SqlSingle Single; } + [Test] + // fixes test fail due to use of "," vs "." in numbers parsing for some cultures + [SetCulture("")] public void SqlTypeMemberTest() { ObjectMapper om = Map.GetObjectMapper(typeof(Object3)); diff --git a/UnitTests/CS/Mapping/ObjectMapperTest.cs b/UnitTests/CS/Mapping/ObjectMapperTest.cs index 959701a41..d4d76b73e 100644 --- a/UnitTests/CS/Mapping/ObjectMapperTest.cs +++ b/UnitTests/CS/Mapping/ObjectMapperTest.cs @@ -1,6 +1,6 @@ using System; using System.Data; - +using BLToolkit.EditableObjects; using NUnit.Framework; using BLToolkit.Mapping; @@ -20,36 +20,94 @@ public class Object1 [Test] public void NameTest1() { - DataTable dt = new DataTable(); + var dt = new DataTable(); + dt.Columns.Add("col1", typeof(int)); dt.Columns.Add("col2", typeof(int)); dt.Rows.Add(1, 2); - Object1 o = Map.DataRowToObject<Object1>(dt.Rows[0]); + var o = Map.DataRowToObject<Object1>(dt.Rows[0]); + Assert.AreEqual(2, o.Col1); } [Test] public void NameTest2() { - DataTable dt = new DataTable(); + var dt = new DataTable(); + dt.Columns.Add("col2", typeof(int)); dt.Columns.Add("col1", typeof(int)); dt.Rows.Add(2, 1); - Object1 o = Map.DataRowToObject<Object1>(dt.Rows[0]); + var o = Map.DataRowToObject<Object1>(dt.Rows[0]); + Assert.AreEqual(2, o.Col1); } [Test] public void GetMemberMapperByNameAliasTest() { - ObjectMapper om = Map.GetObjectMapper(typeof(Object1)); + var om = Map.GetObjectMapper(typeof(Object1)); Assert.IsNotNull(om["col2"]); Assert.IsNull (om["Col1"]); Assert.IsNotNull(om["Col1", true]); Assert.IsNull (om["col1", true]); } + + public interface ICheckOut + { + DateTime DateCheckOut { get; } + } + + public class Test : ICheckOut + { + public int ID { get; set; } + public string Value { get; set; } + + DateTime ICheckOut.DateCheckOut + { + get { return DateTime.Now; } + } + } + + [Test] + public void MapObjectToObject() + { + var s1 = new Test { ID = 1, Value = "123" }; + var s2 = new Test(); + + Map.ObjectToObject(s1, s2, null); + } + + public abstract class BizEntityTest : EditableObject<BizEntityTest> + { + public abstract int ID { get; set; } + public abstract string Name { get; set; } + public abstract BizEntityTestInner BizEntityTestInner { get; set; } + } + + public abstract class BizEntityTestInner : EditableObject<BizEntityTestInner> + { + public abstract int ID { get; set; } + public abstract string Name { get; set; } + } + + [Test] + public void DestabilizeTest() + { + var bet = BizEntityTest.CreateInstance(); + + bet.ID = 1; + bet.Name = "BizEntityTest"; + bet.BizEntityTestInner = BizEntityTestInner.CreateInstance(); + bet.BizEntityTestInner.ID = 111; + bet.BizEntityTestInner.Name = "BizEntityTestInner"; + + var mapper = Map.GetObjectMapper<BizEntityTest, BizEntityTest>(true); + + var bet2 = mapper(bet); + } } } diff --git a/UnitTests/CS/Mapping/TestFluentNullable.cs b/UnitTests/CS/Mapping/TestFluentNullable.cs new file mode 100644 index 000000000..1801ed330 --- /dev/null +++ b/UnitTests/CS/Mapping/TestFluentNullable.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using BLToolkit.Mapping; +using BLToolkit.Mapping.Fluent; +using NUnit.Framework; + +namespace UnitTests.CS.Mapping +{ + [TestFixture] + public class TestFluentNullable + { + public class TestObject + { + public string NullableString { get; set; } + } + + public class TestObjectMap : FluentMap<TestObject> + { + public TestObjectMap () + { + NullValue (x => x.NullableString, null).Nullable (); + } + } + + [Test] + public void TestFluentNullValue () + { + var schema = new MappingSchema (); + FluentConfig.Configure (schema).MapingFromType<TestObjectMap> (); + var om = schema.GetObjectMapper (typeof (TestObject)); + var instance = new TestObject () { NullableString = "SOMEVALUE" }; + om.SetValue (instance, "NullableString", null); + Assert.AreEqual (null, instance.NullableString); + } + + + + + } +} diff --git a/UnitTests/CS/Properties/Settings.Designer.cs b/UnitTests/CS/Properties/Settings.Designer.cs index e483f2799..ac6b56f4b 100644 --- a/UnitTests/CS/Properties/Settings.Designer.cs +++ b/UnitTests/CS/Properties/Settings.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. -// Runtime Version:4.0.30319.1 +// Runtime Version:4.0.30319.17626 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -32,5 +32,16 @@ public string BLToolkitDataConnectionString { return ((string)(this["BLToolkitDataConnectionString"])); } } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)] + [global::System.Configuration.DefaultSettingValueAttribute("DATA SOURCE=PITAOLERONFR01.PIGE;PASSWORD=smsmms8;PERSIST SECURITY INFO=True;USER " + + "ID=PITAFR01_PROC_11")] + public string ConnectionString { + get { + return ((string)(this["ConnectionString"])); + } + } } } diff --git a/UnitTests/CS/Properties/Settings.settings b/UnitTests/CS/Properties/Settings.settings index 9eb21ffa9..74319575d 100644 --- a/UnitTests/CS/Properties/Settings.settings +++ b/UnitTests/CS/Properties/Settings.settings @@ -10,5 +10,13 @@ </SerializableConnectionString></DesignTimeValue> <Value Profile="(Default)">Data Source=(local);Initial Catalog=BLToolkitData;Integrated Security=True</Value> </Setting> + <Setting Name="ConnectionString" Type="(Connection string)" Scope="Application"> + <DesignTimeValue Profile="(Default)"><?xml version="1.0" encoding="utf-16"?> +<SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <ConnectionString>DATA SOURCE=PITAOLERONFR01.PIGE;PASSWORD=smsmms8;PERSIST SECURITY INFO=True;USER ID=PITAFR01_PROC_11</ConnectionString> + <ProviderName>Oracle.DataAccess.Client</ProviderName> +</SerializableConnectionString></DesignTimeValue> + <Value Profile="(Default)">DATA SOURCE=PITAOLERONFR01.PIGE;PASSWORD=smsmms8;PERSIST SECURITY INFO=True;USER ID=PITAFR01_PROC_11</Value> + </Setting> </Settings> </SettingsFile> \ No newline at end of file diff --git a/UnitTests/CS/Reflection/TypeAccessorTest3.cs b/UnitTests/CS/Reflection/TypeAccessorTest3.cs index c9f9752dd..194b98e8c 100644 --- a/UnitTests/CS/Reflection/TypeAccessorTest3.cs +++ b/UnitTests/CS/Reflection/TypeAccessorTest3.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; + using BLToolkit.ComponentModel; using BLToolkit.DataAccess; using BLToolkit.Mapping; @@ -93,5 +94,11 @@ public void TestITypeDescriptionProviderGetAttributes() typeDescriptionProvider.GetAttributes(); } + + [Test] + public void ListTest() + { + var t = TypeAccessor.CreateInstanceEx<List<int>>(); + } } } diff --git a/UnitTests/CS/TypeBuilder/Builders/PropertyChangeBuilderTest.cs b/UnitTests/CS/TypeBuilder/Builders/PropertyChangeBuilderTest.cs index ebcc7ec5b..138df2120 100644 --- a/UnitTests/CS/TypeBuilder/Builders/PropertyChangeBuilderTest.cs +++ b/UnitTests/CS/TypeBuilder/Builders/PropertyChangeBuilderTest.cs @@ -1,4 +1,5 @@ using System.Reflection; +using BLToolkit.EditableObjects; using NUnit.Framework; using BLToolkit.TypeBuilder; @@ -124,5 +125,88 @@ public void TestGeneration() Derived_TONNENS derived_TONNENS = (Derived_TONNENS) TypeAccessor.CreateInstance(typeof(Derived_TONNENS)); } + + [PropertyChanged(false)] + public abstract class NullableFieldNoEqualsSetTest : IPropertyChanged + { + public string NotifiedName = ""; + + public abstract bool? NullableBool { get; set; } + public abstract int? NullableInt { get; set; } + public abstract decimal? NullableDecimal { get; set; } + public abstract float? NullableFloat { get; set; } + + void IPropertyChanged.OnPropertyChanged(PropertyInfo propertyInfo) + { + NotifiedName = propertyInfo.Name; + } + } + + [Test] + public void TestNullableGeneration() + { + TypeFactory.SaveTypes = true; + + var testObject = TypeFactory.CreateInstance<NullableFieldNoEqualsSetTest>(); + + testObject.NotifiedName = ""; + testObject.NullableInt = null; + Assert.AreEqual("", testObject.NotifiedName); + testObject.NullableInt = 10; + Assert.AreEqual("NullableInt", testObject.NotifiedName); + testObject.NotifiedName = ""; + testObject.NullableInt = 10; + Assert.AreEqual("", testObject.NotifiedName); + testObject.NullableInt = null; + Assert.AreEqual("NullableInt", testObject.NotifiedName); + + testObject.NotifiedName = ""; + testObject.NullableBool = null; + Assert.AreEqual("", testObject.NotifiedName); + testObject.NullableBool = true; + Assert.AreEqual("NullableBool", testObject.NotifiedName); + testObject.NotifiedName = ""; + testObject.NullableBool = true; + Assert.AreEqual("", testObject.NotifiedName); + testObject.NullableBool = null; + Assert.AreEqual("NullableBool", testObject.NotifiedName); + + testObject.NotifiedName = ""; + testObject.NullableDecimal = null; + Assert.AreEqual("", testObject.NotifiedName); + testObject.NullableDecimal = 10m; + Assert.AreEqual("NullableDecimal", testObject.NotifiedName); + testObject.NotifiedName = ""; + testObject.NullableDecimal = 10m; + Assert.AreEqual("", testObject.NotifiedName); + testObject.NullableDecimal = null; + Assert.AreEqual("NullableDecimal", testObject.NotifiedName); + + testObject.NotifiedName = ""; + testObject.NullableFloat = null; + Assert.AreEqual("", testObject.NotifiedName); + testObject.NullableFloat = 0.1f; + Assert.AreEqual("NullableFloat", testObject.NotifiedName); + testObject.NotifiedName = ""; + testObject.NullableFloat = 0.1f; + Assert.AreEqual("", testObject.NotifiedName); + testObject.NullableFloat = null; + Assert.AreEqual("NullableFloat", testObject.NotifiedName); + + } + + public struct UserClass { } + + [PropertyChanged(false)] + public abstract class UserConfig : EditableObject + { + public abstract UserClass Range { get; set; } + } + + [Test] + public void TestStructPropertyChangedGeneration() + { + TypeAccessor.CreateInstance<UserConfig>().Range = new UserClass(); + } } } diff --git a/UnitTests/CS/UnitTests.CS.csproj b/UnitTests/CS/UnitTests.CS.csproj index 65d47efdc..6a57c7348 100644 --- a/UnitTests/CS/UnitTests.CS.csproj +++ b/UnitTests/CS/UnitTests.CS.csproj @@ -87,9 +87,9 @@ <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules> </PropertyGroup> <ItemGroup> - <Reference Include="nunit.framework, Version=2.6.2.12296, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL"> + <Reference Include="nunit.framework, Version=2.6.3.13283, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\packages\NUnit.2.6.2\lib\nunit.framework.dll</HintPath> + <HintPath>..\..\packages\NUnit.2.6.3\lib\nunit.framework.dll</HintPath> </Reference> <Reference Include="System" /> <Reference Include="System.Core"> @@ -179,14 +179,8 @@ <Compile Include="EditableObjects\NestedObjectTest.cs" /> <Compile Include="EditableObjects\NotifyCollectionChangeTest.cs" /> <Compile Include="EditableObjects\NotifyPropertyChangedTest.cs" /> - <Compile Include="JointureTests\Artist.cs" /> - <Compile Include="JointureTests\Artist2.cs" /> - <Compile Include="JointureTests\AssociationTests.cs" /> - <Compile Include="JointureTests\Consts.cs" /> - <Compile Include="JointureTests\MusicDB.cs"> - <SubType>Component</SubType> - </Compile> - <Compile Include="JointureTests\Title.cs" /> + <Compile Include="Mapping\BltMapTests.cs" /> + <Compile Include="Mapping\MemberMapperDefaultMappersTest.cs" /> <Compile Include="Mapping\ExpressionMapperTest.cs" /> <Compile Include="Mapping\NullableEnum.cs" /> <Compile Include="Mapping\DefaultValueAttributeTest.cs" /> @@ -202,6 +196,7 @@ <Compile Include="Mapping\ObjectMapperAttributeTest.cs" /> <Compile Include="Mapping\ObjectMapperTest.cs" /> <Compile Include="Mapping\ResultSetTest.cs" /> + <Compile Include="Mapping\TestFluentNullable.cs" /> <Compile Include="Mapping\TrimmableAttributeTest.cs" /> <Compile Include="Mapping\XmlMap.cs" /> <Compile Include="Patterns\MustImplementAttributeTest.cs" /> @@ -319,22 +314,11 @@ <EmbeddedResource Include="Data\Sql\DefinitionData.xml" /> </ItemGroup> <ItemGroup> - <ProjectReference Include="..\..\DataProviders\BLToolkit.Data.DataProvider.MySql.4.csproj"> - <Project>{3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}</Project> - <Name>BLToolkit.Data.DataProvider.MySql.4</Name> - </ProjectReference> - <ProjectReference Include="..\..\DataProviders\BLToolkit.Data.DataProvider.Oracle.4.csproj"> - <Project>{2B5287F2-A6AC-4D5A-B0A8-01C06144824D}</Project> - <Name>BLToolkit.Data.DataProvider.Oracle.4</Name> - </ProjectReference> <ProjectReference Include="..\..\Source\BLToolkit.4.csproj"> <Project>{0C325F5D-E50E-4340-8724-D29896CCC583}</Project> <Name>BLToolkit.4</Name> </ProjectReference> - <ProjectReference Include="..\..\Extensions\JointureAddOn\BLToolkit.4.JointureAddOn.csproj"> - <Project>{9FD2722C-1E6C-4061-8AC0-32EE28808FC0}</Project> - <Name>BLToolkit.4.JointureAddOn</Name> - </ProjectReference> </ItemGroup> + <ItemGroup /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> </Project> \ No newline at end of file diff --git a/UnitTests/CS/app.config b/UnitTests/CS/app.config index 2d9aaa18f..98e1ac611 100644 --- a/UnitTests/CS/app.config +++ b/UnitTests/CS/app.config @@ -1,32 +1,73 @@ <?xml version="1.0"?> + <configuration> - <configSections> - <section name="bltoolkit" type="BLToolkit.Configuration.BLToolkitSection, BLToolkit.4"/> - </configSections> - <appSettings> - <!-- Default configuration --> - <add key="ConnectionString" value="Server=.;Database=BLToolkitData;Integrated Security=SSPI"/> - <!-- SQL Server Development configuration --> - <add key="ConnectionString.Development" value="Server=.;Database=BLToolkitData;Integrated Security=SSPI"/> - <!-- SQL Server Production configuration --> - <add key="ConnectionString.Production" value="Server=.;Database=BLToolkitData;Integrated Security=SSPI"/> - <!-- SQL Server configuration --> - <add key="ConnectionString.Sql" value="Server=.;Database=BLToolkitData;Integrated Security=SSPI"/> - <!-- Oracle configuration --> - <add key="ConnectionString.Oracle" value="User Id=/;Data Source=BLToolkitData"/> - <!-- OLEDB configuration --> - <add key="ConnectionString.OleDb" value="Provider=SQLOLEDB;Data Source=.;Integrated Security=SSPI;Initial Catalog=BLToolkitData"/> - <!-- OLEDB Development configuration --> - <add key="ConnectionString.OleDb.Development" value="Provider=SQLOLEDB;Data Source=.;Integrated Security=SSPI;Initial Catalog=BLToolkitData"/> - <!-- OLEDB Production configuration --> - <add key="ConnectionString.OleDb.Production" value="Provider=SQLOLEDB;Data Source=.;Integrated Security=SSPI;Initial Catalog=BLToolkitData"/> - <!-- MySql configuration --> - <add key="ConnectionString.MySql" value="Server=DBHost;Port=3306;Database=bltoolkitdata;Uid=root;Pwd=TestPassword;"/> - <!-- Additional data providers --> - <add key="BLToolkit.DataProviders" value="BLToolkit.Data.DataProvider.MySqlDataProvider, BLToolkit.Data.DataProvider.MySql.4"/> - <add key="BLToolkit.DataProviders" value="BLToolkit.Data.DataProvider.OdpDataProvider, BLToolkit.Data.DataProvider.Oracle.4"/> + <configSections> + <section name="bltoolkit" type="BLToolkit.Configuration.BLToolkitSection, BLToolkit.4" /> + </configSections> + + <connectionStrings> + <clear /> + <add name="Sqlite" + connectionString="Data Source=E:\CSAMatching\BLToolkitData.sqlite;Version=3;Pooling=False;Max Pool Size=100;" + providerName="System.Data.SQLite" /> + + <add name="Oracle" connectionString="User Id={0}; Password={1}; Data Source={2}; Pooling=True;Connection Timeout=120;Max Pool Size=150;Decr Pool Size=20;" + providerName="Oracle.DataAccess.Client" /> + + <add name="UnitTests.CS.Properties.Settings.BLToolkitDataConnectionString" + connectionString="Data Source=(local);Initial Catalog=BLToolkitData;Integrated Security=True" + providerName="System.Data.SqlClient" /> + + <add name="UnitTests.CS.Properties.Settings.ConnectionString" + connectionString="DATA SOURCE=PITAOLERONFR01.PIGE;PASSWORD=smsmms8;PERSIST SECURITY INFO=True;USER ID=PITAFR01_PROC_11" + providerName="Oracle.DataAccess.Client" /> + </connectionStrings> + + <system.data> + <DbProviderFactories> + <remove invariant="System.Data.SQLite" /> + <add name="SQLite Data Provider" invariant="System.Data.SQLite" + description=".Net Framework Data Provider for SQLite" + type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" /> + + <!--<remove invariant="Oracle.DataAccess.Client" /> + <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" + description="Oracle.DataAccess.Client" + type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />--> + </DbProviderFactories> + </system.data> + + <appSettings> + <!-- Default configuration --> + <add key="ConnectionString" value="Server=.;Database=BLToolkitData;Integrated Security=SSPI" /> + <!-- SQL Server Development configuration --> + <add key="ConnectionString.Development" value="Server=.;Database=BLToolkitData;Integrated Security=SSPI" /> + <!-- SQL Server Production configuration --> + <add key="ConnectionString.Production" value="Server=.;Database=BLToolkitData;Integrated Security=SSPI" /> + <!-- SQL Server configuration --> + <add key="ConnectionString.Sql" value="Server=.;Database=BLToolkitData;Integrated Security=SSPI" /> + <!-- Oracle configuration --> + <add key="ConnectionString.Oracle" value="User Id=/;Data Source=BLToolkitData" /> + <!-- OLEDB configuration --> + <add key="ConnectionString.OleDb" + value="Provider=SQLOLEDB;Data Source=.;Integrated Security=SSPI;Initial Catalog=BLToolkitData" /> + <!-- OLEDB Development configuration --> + <add key="ConnectionString.OleDb.Development" + value="Provider=SQLOLEDB;Data Source=.;Integrated Security=SSPI;Initial Catalog=BLToolkitData" /> + <!-- OLEDB Production configuration --> + <add key="ConnectionString.OleDb.Production" + value="Provider=SQLOLEDB;Data Source=.;Integrated Security=SSPI;Initial Catalog=BLToolkitData" /> + <!-- MySql configuration --> + <add key="ConnectionString.MySql" value="Server=DBHost;Port=3306;Database=bltoolkitdata;Uid=root;Pwd=TestPassword;" /> + <!-- Additional data providers --> + <add key="BLToolkit.DataProviders" + value="BLToolkit.Data.DataProvider.MySqlDataProvider, BLToolkit.Data.DataProvider.MySql.4" /> + <add key="BLToolkit.DataProviders" + value="BLToolkit.Data.DataProvider.OdpDataProvider, BLToolkit.Data.DataProvider.Oracle.4" /> + <add key="BLToolkit.DataProviders" + value="BLToolkit.Data.DataProvider.SQLiteDataProvider, BLToolkit.Data.DataProvider.SQLite.4" /> - <!-- Samples + <!-- Samples <add key = "BLToolkit.DataProviders" value = "BLToolkit.Data.DataProvider.OracleDataProvider;SomeNamespace.SomeType, SomeAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1234567890ABCDEF"/> @@ -34,8 +75,11 @@ key = "BLToolkit.DefaultConfiguration" value = "Oracle"/> --> - </appSettings> - <bltoolkit> - <typeFactory saveTypes="true"/> - </bltoolkit> -<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration> + </appSettings> + <bltoolkit> + <typeFactory saveTypes="true" /> + </bltoolkit> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> + </startup> +</configuration> \ No newline at end of file diff --git a/UnitTests/CS/packages.config b/UnitTests/CS/packages.config index 617647af2..5a3253fcb 100644 --- a/UnitTests/CS/packages.config +++ b/UnitTests/CS/packages.config @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="NUnit" version="2.6.2" targetFramework="net40" /> + <package id="NUnit" version="2.6.3" targetFramework="net40" /> </packages> \ No newline at end of file diff --git a/UnitTests/Fluent/AssertExceptionEx.cs b/UnitTests/Fluent/AssertExceptionEx.cs new file mode 100644 index 000000000..2ed9708ef --- /dev/null +++ b/UnitTests/Fluent/AssertExceptionEx.cs @@ -0,0 +1,62 @@ +using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace BLToolkit.Fluent.Test +{ + /// <summary> + /// Класс для работы с асертами обладающий дополнительными методами + /// </summary> + public static class AssertExceptionEx + { + /// <summary> + /// Проверка на обязательность исключения + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="action"></param> + /// <param name="message"></param> + public static void AreException<T>(Action action, string message) + { + bool isOk = false; + try + { + action(); + } + catch (Exception e) + { + if (e is T) + { + isOk = true; + } + } + if (!isOk) + { + Assert.Fail(message); + } + } + /// <summary> + /// Проверка на обязательность отсутсвия исключения + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="action"></param> + /// <param name="message"></param> + public static void AreNotException<T>(Action action, string message) + { + bool isOk = true; + try + { + action(); + } + catch (Exception e) + { + if (e is T) + { + isOk = false; + } + } + if (!isOk) + { + Assert.Fail(message); + } + } + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/FluentConfigTest.cs b/UnitTests/Fluent/FluentConfigTest.cs new file mode 100644 index 000000000..f6108e2e1 --- /dev/null +++ b/UnitTests/Fluent/FluentConfigTest.cs @@ -0,0 +1,60 @@ +using BLToolkit.Data; +using BLToolkit.Mapping.Fluent; +using BLToolkit.Reflection.Extension; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace BLToolkit.Fluent.Test +{ + /// <summary> + /// Test for FluentConfig + /// </summary> + [TestClass] + public class FluentConfigTest + { + /// <summary> + /// Test configure mapping + /// </summary> + [TestMethod] + public void ShouldConfigMapping() + { + ExtensionList extensions = new ExtensionList(); + FluentConfig.Configure(extensions) + .MapingFromAssemblyOf<FluentConfigTest>(); + + Assert.IsTrue(extensions.ContainsKey(typeof(Dbo1).FullName), "Not mapping"); + Assert.IsFalse(extensions.ContainsKey(typeof(Dbo2).FullName), "Fail mapping for abstract"); + Assert.IsFalse(extensions.ContainsKey(typeof(Dbo3).FullName), "Fail mapping for generic"); + } + + public class Dbo1 + { + } + public class Dbo2 + { + } + public class Dbo3 + { + } + public class Dbo1Map : FluentMap<Dbo1> + { + public Dbo1Map() + { + TableName("t1"); + } + } + public abstract class Dbo2Map : FluentMap<Dbo1> + { + public Dbo2Map() + { + TableName("t2"); + } + } + public class Dbo3Map<T> : FluentMap<Dbo1> + { + public Dbo3Map() + { + TableName("t3"); + } + } + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/FluentMapAttributesTest.cs b/UnitTests/Fluent/FluentMapAttributesTest.cs new file mode 100644 index 000000000..bc76b8213 --- /dev/null +++ b/UnitTests/Fluent/FluentMapAttributesTest.cs @@ -0,0 +1,53 @@ +using System.Collections.Generic; + +using BLToolkit.Data; +using BLToolkit.Mapping.Fluent; +using BLToolkit.Mapping.MemberMappers; +using BLToolkit.Reflection.Extension; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace BLToolkit.Fluent.Test +{ + /// <summary> + /// Test for FluentConfig + /// </summary> + [TestClass] + public class FluentMapAttributesTest + { + /// <summary> + /// Test configure mapping + /// </summary> + [TestMethod] + public void ShouldConfigMapping() + { + ExtensionList extensions = new ExtensionList(); + FluentConfig.Configure(extensions).MapingFromAssemblyOf<FluentMapAttributesTest>(); + + var key = extensions[typeof(DboFluentMapAttributesTest).FullName]; + var mem1 = key["Id"]; + Assert.IsTrue(mem1.Attributes.ContainsKey("Identity")); + + var mem2 = key["Test"]; + Assert.IsTrue(mem2.Attributes.ContainsKey("MemberMapper")); + Assert.IsTrue(mem2.Attributes.ContainsKey("DbType")); + } + + public class DboFluentMapAttributesTest + { + public int Id { get; set; } + public List<string> Test { get; set; } + } + + public class DboFluentMapAttributesTestMap : FluentMap<DboFluentMapAttributesTest> + { + public DboFluentMapAttributesTestMap() + { + TableName("t1"); + + MapField(x => x.Id).Identity(); + MapField(x => x.Test).MapIgnore(false).MemberMapper(typeof(BinarySerialisationMapper)).DbType(System.Data.DbType.Binary); + } + } + + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/FluentMapTest.cs b/UnitTests/Fluent/FluentMapTest.cs new file mode 100644 index 000000000..77694d0a4 --- /dev/null +++ b/UnitTests/Fluent/FluentMapTest.cs @@ -0,0 +1,1220 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using BLToolkit.Data; +using BLToolkit.Data.Linq; +using BLToolkit.DataAccess; +using BLToolkit.Fluent.Test.MockDataBase; +using BLToolkit.Mapping; +using BLToolkit.Mapping.Fluent; +using BLToolkit.Reflection.Extension; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace BLToolkit.Fluent.Test +{ + /// <summary> + /// Тестирование FluentMap + /// </summary> + [TestClass] + public class FluentMapTest + { + [TestInitialize] + public void Initialize() + { + DbManager.AddDataProvider(typeof(MockDataProvider)); + } + + /// <summary> + /// TableName mapping + /// </summary> + [TestMethod] + public void ShouldMapTableName() + { + // db config + var conn = new MockDb() + .NewReader("Field1") + .NewRow(1); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<TableNameDbo>() + .TableName("TableNameDboT1") + .MapTo(db); + + // when + db.GetTable<TableNameDbo>().ToArray(); + + // then + conn.Commands[0] + .Assert().AreTable("TableNameDboT1", "Fail mapping"); + } + } + + /// <summary> + /// TableName mapping fro child + /// </summary> + [TestMethod] + public void ShouldMapTableNameForChild() + { + // db config + var conn = new MockDb() + .NewReader("Field1") + .NewRow(1); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<TableNameDbo>() + .TableName("TableNameDboT1") + .MapTo(db); + + // when + db.GetTable<TableNameChildDbo>().ToArray(); + + // then + conn.Commands[0] + .Assert().AreTable("TableNameDboT1", "Fail mapping"); + } + } + + /// <summary> + /// MapField mapping + /// </summary> + [TestMethod] + public void ShouldMapField() + { + // db config + var conn = new MockDb() + .NewNonQuery(); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<MapFieldDbo>() + .MapField(_ => _.Field1, "f1") + .MapTo(db); + + // when + db.GetTable<MapFieldDbo>().Insert(() => new MapFieldDbo { Field1 = 1 }); + + // then + conn.Commands[0] + .Assert().AreField("f1", "Fail mapping"); + } + } + + /// <summary> + /// MapField mapping for child + /// </summary> + [TestMethod] + public void ShouldMapFieldforChild() + { + // db config + var conn = new MockDb() + .NewNonQuery(); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<MapFieldDbo>() + .MapField(_ => _.Field1, "f1") + .MapTo(db); + + // when + db.GetTable<MapFieldChild1Dbo>().Insert(() => new MapFieldChild1Dbo { Field1 = 1 }); + + // then + conn.Commands[0] + .Assert().AreField("f1", "Fail mapping"); + } + } + + /// <summary> + /// MapField mapping for child override + /// </summary> + [TestMethod] + public void ShouldMapFieldforChildOverride() + { + // db config + var conn = new MockDb() + .NewNonQuery(); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<MapFieldDbo>() + .MapField(_ => _.Field1, "f1") + .MapTo(db); + new FluentMap<MapFieldChild2Dbo>() + .MapField(_ => _.Field1, "fc1") + .MapTo(db); + + // when + db.GetTable<MapFieldChild2Dbo>().Insert(() => new MapFieldChild2Dbo { Field1 = 1 }); + + // then + conn.Commands[0] + .Assert().AreField("fc1", "Fail mapping"); + } + } + + /// <summary> + /// PrimaryKey mapping + /// </summary> + [TestMethod] + public void ShouldMapPrimaryKey() + { + // db config + var conn = new MockDb() + .NewReader("Field1", "Field2") + .NewRow(1, 2); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<PrimaryKeyDbo>() + .PrimaryKey(_ => _.Field2) + .MapTo(db); + + // when + AssertExceptionEx.AreNotException<Exception>(() => new SqlQuery<PrimaryKeyDbo>(db).SelectByKey(1) + , "Fail query"); + + // then + Assert.AreEqual(1, conn.Commands[0].Parameters.Count, "Fail params"); + conn.Commands[0] + .Assert().AreField("Field2", 2, "Not where part"); + } + } + + /// <summary> + /// PrimaryKey mapping for child + /// </summary> + [TestMethod] + public void ShouldMapPrimaryKeyForChild() + { + // db config + var conn = new MockDb() + .NewReader("Field1", "Field2") + .NewRow(1, 2); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<PrimaryKeyDbo>() + .PrimaryKey(_ => _.Field2) + .MapTo(db); + + // when + AssertExceptionEx.AreNotException<Exception>(() => new SqlQuery<PrimaryKeyChildDbo>(db).SelectByKey(1) + , "Fail query"); + + // then + Assert.AreEqual(1, conn.Commands[0].Parameters.Count, "Fail params"); + conn.Commands[0] + .Assert().AreField("Field2", 2, "Not where part"); + } + } + + /// <summary> + /// NonUpdatable use + /// </summary> + [TestMethod] + public void ShouldMapNonUpdatable() + { + // db config + var conn = new MockDb() + .NewNonQuery(); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<NonUpdatableDbo>() + .NonUpdatable(_ => _.Field1) + .MapTo(db); + + // when + new SqlQuery<NonUpdatableDbo>(db).Insert(new NonUpdatableDbo { Field1 = 10, Field2 = 1 }); + + // then + Assert.AreEqual(1, conn.Commands[0].Parameters.Count, "Fail params"); + } + } + + /// <summary> + /// NonUpdatable use for child + /// </summary> + [TestMethod] + public void ShouldMapNonUpdatableForChild() + { + // db config + var conn = new MockDb() + .NewNonQuery(); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<NonUpdatableDbo>() + .NonUpdatable(_ => _.Field1) + .MapTo(db); + + // when + new SqlQuery<NonUpdatableChildDbo>(db).Insert(new NonUpdatableChildDbo { Field1 = 10, Field2 = 1 }); + + // then + Assert.AreEqual(1, conn.Commands[0].Parameters.Count, "Fail params"); + } + } + + /// <summary> + /// SqlIgnore mapping on insert + /// </summary> + [TestMethod] + public void ShouldMapSqlIgnoreInsert() + { + // db config + var conn = new MockDb() + .NewNonQuery(); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<SqlIgnoreInsertDbo>() + .SqlIgnore(_ => _.Field2) + .MapTo(db); + + // when / then + new SqlQuery<SqlIgnoreInsertDbo>(db).Insert(new SqlIgnoreInsertDbo { Field1 = 20, Field2 = 2 }); + AssertExceptionEx.AreException<LinqException>( + () => db.GetTable<SqlIgnoreInsertDbo>().Insert(() => new SqlIgnoreInsertDbo { Field1 = 10, Field2 = 1 }) + , "Fail for linq"); + + // then + conn.Commands[0] + .Assert().AreNotField("Field2", "Field exists"); + Assert.AreEqual(1, conn.Commands[0].Parameters.Count, "Fail params"); + } + } + + /// <summary> + /// SqlIgnore mapping on select + /// </summary> + [TestMethod] + public void ShouldMapSqlIgnoreSelect() + { + // db config + var conn = new MockDb() + .NewReader("Field1") + .NewRow(10); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<SqlIgnoreSelectDbo>() + .SqlIgnore(_ => _.Field2) + .MapTo(db); + + var table = db.GetTable<SqlIgnoreSelectDbo>(); + + // when + (from t in table where t.Field1 == 10 select t).First(); + + // then + conn.Commands[0] + .Assert().AreNotField("Field2", "Field exists"); + } + } + + /// <summary> + /// SqlIgnore mapping for child + /// </summary> + [TestMethod] + public void ShouldMapSqlIgnoreForChild() + { + // db config + var conn = new MockDb() + .NewReader("Field1") + .NewRow(10); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<SqlIgnoreSelectDbo>() + .SqlIgnore(_ => _.Field2) + .MapTo(db); + + var table = db.GetTable<SqlIgnoreChildDbo>(); + + // when + (from t in table where t.Field1 == 10 select t).First(); + + // then + conn.Commands[0] + .Assert().AreNotField("Field2", "Field exists"); + } + } + + /// <summary> + /// MapIgnore mapping on insert + /// </summary> + [TestMethod] + public void ShouldMapIgnoreInsert() + { + // db config + var conn = new MockDb() + .NewNonQuery(); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<MapIgnoreInsertDbo>() + .MapIgnore(_ => _.Field2) + .MapTo(db); + + // when / then + new SqlQuery<MapIgnoreInsertDbo>(db).Insert(new MapIgnoreInsertDbo { Field1 = 20, Field2 = 2 }); + + AssertExceptionEx.AreException<LinqException>( + () => db.GetTable<MapIgnoreInsertDbo>().Insert(() => new MapIgnoreInsertDbo { Field1 = 10, Field2 = 1 }) + , "Fail for linq"); + + // then + conn.Commands[0] + .Assert().AreNotField("Field2", "Field exists"); + Assert.AreEqual(1, conn.Commands[0].Parameters.Count, "Fail params"); + } + } + + /// <summary> + /// MapIgnore mapping on select + /// </summary> + [TestMethod] + public void ShouldMapIgnoreSelect() + { + // db config + var conn = new MockDb() + .NewReader("Field1") + .NewRow(10, 1); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<MapIgnoreSelectDbo>() + .MapIgnore(_ => _.Field2) + .MapTo(db); + + var table = db.GetTable<MapIgnoreSelectDbo>(); + + // when + (from t in table where t.Field1 == 10 select t).First(); + + // then + conn.Commands[0] + .Assert().AreNotField("Field2", "Field exists"); + } + } + + /// <summary> + /// MapIgnore mapping for child + /// </summary> + [TestMethod] + public void ShouldMapIgnoreForChild() + { + // db config + var conn = new MockDb() + .NewReader("Field1") + .NewRow(10, 1); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<MapIgnoreSelectDbo>() + .MapIgnore(_ => _.Field2) + .MapTo(db); + + var table = db.GetTable<MapIgnoreChildDbo>(); + + // when + (from t in table where t.Field1 == 10 select t).First(); + + // then + conn.Commands[0] + .Assert().AreNotField("Field2", "Field exists"); + } + } + + /// <summary> + /// Trimmable mapping + /// </summary> + [TestMethod] + public void ShouldMapTrimmable() + { + // db config + var conn = new MockDb() + .NewReader("Field1") + .NewRow("test "); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<TrimmableDbo>() + .Trimmable(_ => _.Field1) + .MapTo(db); + + var table = db.GetTable<TrimmableDbo>(); + + // when + var dbo = (from t in table select t).First(); + + // then + Assert.AreEqual("test", dbo.Field1, "Not trimmable"); + } + } + + /// <summary> + /// Trimmable mapping for child + /// </summary> + [TestMethod] + public void ShouldMapTrimmableForChild() + { + // db config + var conn = new MockDb() + .NewReader("Field1") + .NewRow("test "); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<TrimmableDbo>() + .Trimmable(_ => _.Field1) + .MapTo(db); + + var table = db.GetTable<TrimmableChildDbo>(); + + // when + var dbo = (from t in table select t).First(); + + // then + Assert.AreEqual("test", dbo.Field1, "Not trimmable"); + } + } + + /// <summary> + /// MapValue mapping for member + /// </summary> + [TestMethod] + public void ShouldMapValueForMember() + { + // db config + var conn = new MockDb() + .NewReader("Field1", "Field2") + .NewRow(true, false); + + using (conn) + using (var db = new DbManager(conn)) + { +#warning bug for maping TO db + // fluent config + new FluentMap<MapValueMemberDbo>() + .MapField(_ => _.Field1) + .MapValue("result true", true) + .MapValue("result false", false) + .MapField(_ => _.Field2) + .MapValue("value true", true) + .MapValue("value false", false) + .MapTo(db); + + var table = db.GetTable<MapValueMemberDbo>(); + + // when + var dbo = (from t in table select t).First(); + + // then + Assert.AreEqual("result true", dbo.Field1, "Not map from value1"); + Assert.AreEqual("value false", dbo.Field2, "Not map from value2"); + } + } + + /// <summary> + /// MapValue mapping for member for child + /// </summary> + [TestMethod] + public void ShouldMapValueForMemberForChild() + { + // db config + var conn = new MockDb() + .NewReader("Field1", "Field2") + .NewRow(true, false); + + using (conn) + using (var db = new DbManager(conn)) + { +#warning bug for maping TO db + // fluent config + new FluentMap<MapValueMemberDbo>() + .MapField(_ => _.Field1) + .MapValue("result true", true) + .MapValue("result false", false) + .MapField(_ => _.Field2) + .MapValue("value true", true) + .MapValue("value false", false) + .MapTo(db); + + var table = db.GetTable<MapValueMemberChildDbo>(); + + // when + var dbo = (from t in table select t).First(); + + // then + Assert.AreEqual("result true", dbo.Field1, "Not map from value1"); + Assert.AreEqual("value false", dbo.Field2, "Not map from value2"); + } + } + + /// <summary> + /// MapValue mapping for enum + /// </summary> + [TestMethod] + public void ShouldMapValueForEnum() + { + // db config + var conn = new MockDb() + .NewReader("Field1", "Field2", "Field3", "Field4") + .NewRow("ok", "super", "yes", 10); + + using (conn) + using (var db = new DbManager(conn)) + { +#warning bug for maping TO db + // fluent config + new FluentMap<MapValueEnumDbo>() + .MapValue(MapValueEnum.Value1, "ok", "yes") + .MapValue(MapValueEnum.Value2, "super") + .MapTo(db); + + var table = db.GetTable<MapValueEnumDbo>(); + + // when + var dbo = (from t in table select t).First(); + + // then + Assert.AreEqual(MapValueEnum.Value1, dbo.Field1, "Not map from value1"); + Assert.AreEqual(MapValueEnum.Value2, dbo.Field2, "Not map from value2"); + Assert.AreEqual(MapValueEnum.Value1, dbo.Field3, "Not map from value3"); + } + } + + /// <summary> + /// MapValue mapping for enum for child + /// </summary> + [TestMethod] + public void ShouldMapValueForEnumForChild() + { + // db config + var conn = new MockDb() + .NewReader("Field1", "Field2", "Field3", "Field4") + .NewRow("ok", "super", "yes", 10); + + using (conn) + using (var db = new DbManager(conn)) + { +#warning bug for maping TO db + // fluent config + new FluentMap<MapValueEnumDbo>() + .MapValue(MapValueEnum.Value1, "ok", "yes") + .MapValue(MapValueEnum.Value2, "super") + .MapTo(db); + + var table = db.GetTable<MapValueEnumChildDbo>(); + + // when + var dbo = (from t in table select t).First(); + + // then + Assert.AreEqual(MapValueEnum.Value1, dbo.Field1, "Not map from value1"); + Assert.AreEqual(MapValueEnum.Value2, dbo.Field2, "Not map from value2"); + Assert.AreEqual(MapValueEnum.Value1, dbo.Field3, "Not map from value3"); + } + } + + /// <summary> + /// MapValue mapping for type + /// </summary> + [TestMethod] + public void ShouldMapValueForType() + { + // db config + var conn = new MockDb() + .NewReader("Field1", "Field2", "Field3") + .NewRow("one", "two", true); + + using (conn) + using (var db = new DbManager(conn)) + { +#warning bug for property any different types +#warning bug for maping TO db + // fluent config + new FluentMap<MapValueTypeDbo>() + .MapValue(1, "one", "1") + .MapValue(2, "two") + .MapValue(3, true) + .MapTo(db); + + var table = db.GetTable<MapValueTypeDbo>(); + + // when + var dbo = (from t in table select t).First(); + + // then + Assert.AreEqual(1, dbo.Field1, "Not map from value1"); + Assert.AreEqual(2, dbo.Field2, "Not map from value2"); + Assert.AreEqual(3, dbo.Field3, "Not map from value3"); + } + } + + /// <summary> + /// MapValue mapping for type for child + /// </summary> + [TestMethod] + public void ShouldMapValueForTypeForChild() + { + // db config + var conn = new MockDb() + .NewReader("Field1", "Field2", "Field3") + .NewRow("one", "two", true); + + using (conn) + using (var db = new DbManager(conn)) + { +#warning bug for property any different types +#warning bug for maping TO db + // fluent config + new FluentMap<MapValueTypeDbo>() + .MapValue(1, "one", "1") + .MapValue(2, "two") + .MapValue(3, true) + .MapTo(db); + + var table = db.GetTable<MapValueTypeChildDbo>(); + + // when + var dbo = (from t in table select t).First(); + + // then + Assert.AreEqual(1, dbo.Field1, "Not map from value1"); + Assert.AreEqual(2, dbo.Field2, "Not map from value2"); + Assert.AreEqual(3, dbo.Field3, "Not map from value3"); + } + } + + /// <summary> + /// InheritanceMapping mapping + /// </summary> + [TestMethod] + public void ShouldMapInheritanceMapping() + { + // db config + var conn = new MockDb() + .NewReader("Field1", "Field2") + .NewRow(1, 1) + .NewRow(2, 2); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<InheritanceMappingDbo>() + .InheritanceMapping<InheritanceMappingDbo1>(1) + .InheritanceMapping<InheritanceMappingDbo2>(2) + .InheritanceField(_ => _.Field2) + .MapTo(db); + + var table = db.GetTable<InheritanceMappingDbo>(); + + // when + var dbos = (from t in table select t).ToArray(); + + // then + Assert.IsInstanceOfType(dbos[0], typeof(InheritanceMappingDbo1), "Invalid type1"); + Assert.IsInstanceOfType(dbos[1], typeof(InheritanceMappingDbo2), "Invalid type2"); + } + } + + /// <summary> + /// InheritanceMapping mapping select only child + /// </summary> + [TestMethod] + public void ShouldMapInheritanceMappingSelectChild() + { + // db config + var conn = new MockDb() + .NewReader("Field1", "Field2") + .NewRow(1, 1); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<InheritanceMappingChDbo>() + .TableName("tt") + .InheritanceMapping<InheritanceMappingChDbo1>(11111) + .InheritanceMapping<InheritanceMappingChDbo2>(22222) + .InheritanceField(_ => _.Field2) + .MapTo(db); + + var table = db.GetTable<InheritanceMappingChDbo1>(); + + // when + var dbos = (from t in table select t).ToArray(); + + // then + Assert.IsInstanceOfType(dbos[0], typeof(InheritanceMappingChDbo1), "Invalid type"); + Assert.IsTrue(conn.Commands[0].CommandText.ToLower().Contains("where"), "Not condition"); + Assert.IsTrue(conn.Commands[0].CommandText.ToLower().Contains("11111"), "Fail condition value"); + conn.Commands[0] + .Assert().AreField("Field2", 2, "Not in where part"); + } + } + + /// <summary> + /// Association mapping to many + /// </summary> + [TestMethod] + public void ShouldMapAssociationToMany() + { + // db config + var conn = new MockDb() + .NewReader("Field4") + .NewRow("TestMany"); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<AssociationThis1Dbo>() + .MapField(_ => _.FieldThis1, "ThisId") + .MapField(_ => _.FieldThis2) + .Association(_ => _.FieldThis1).ToMany((AssociationOtherDbo _) => _.FieldOther2) + .MapTo(db); + + var table = db.GetTable<AssociationThis1Dbo>(); + + // when + var dbo = (from t in table select t.FieldThis2.First().FieldOther4).First(); + + // then + Assert.AreEqual("TestMany", dbo, "Fail result for many"); + conn.Commands[0] + .Assert().AreField("ThisId", "Fail this key"); + conn.Commands[0] + .Assert().AreField("FieldOther2", "Fail other key"); + conn.Commands[0] + .Assert().AreField("FieldOther4", "Fail other result"); + Assert.AreEqual(3, conn.Commands[0].Fields.Count, "More fields"); + } + } + + /// <summary> + /// Association mapping to one + /// </summary> + [TestMethod] + public void ShouldMapAssociationToOne() + { + // db config + var conn = new MockDb() + .NewReader("Field4") + .NewRow("TestOne"); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<AssociationThis2Dbo>() + .MapField(_ => _.FieldThis1, "ThisId") + .MapField(_ => _.FieldThis3) + .Association(_ => _.FieldThis1).ToOne(_ => _.FieldOther3) + .MapTo(db); + + var table = db.GetTable<AssociationThis2Dbo>(); + + // when + var dbo = (from t in table select t.FieldThis3.FieldOther4).First(); + + // then + Assert.AreEqual("TestOne", dbo, "Fail result for many"); + conn.Commands[0] + .Assert().AreField("ThisId", "Fail this key"); + conn.Commands[0] + .Assert().AreField("FieldOther3", "Fail other key"); + conn.Commands[0] + .Assert().AreField("FieldOther4", "Fail other result"); + Assert.AreEqual(3, conn.Commands[0].Fields.Count, "More fields"); + } + } + + /// <summary> + /// Association mapping for child + /// </summary> + [TestMethod] + public void ShouldMapAssociationForChild() + { + // db config + var conn = new MockDb() + .NewReader("Field4") + .NewRow("TestOne"); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<AssociationThis2Dbo>() + .MapField(_ => _.FieldThis1, "ThisId") + .MapField(_ => _.FieldThis3) + .Association(_ => _.FieldThis1).ToOne(_ => _.FieldOther3) + .MapTo(db); + + var table = db.GetTable<AssociationThis2ChildDbo>(); + + // when + var dbo = (from t in table select t.FieldThis3.FieldOther4).First(); + + // then + Assert.AreEqual("TestOne", dbo, "Fail result for many"); + conn.Commands[0] + .Assert().AreField("ThisId", "Fail this key"); + conn.Commands[0] + .Assert().AreField("FieldOther3", "Fail other key"); + conn.Commands[0] + .Assert().AreField("FieldOther4", "Fail other result"); + Assert.AreEqual(3, conn.Commands[0].Fields.Count, "More fields"); + } + } + + /// <summary> + /// Relation mapping + /// </summary> + [TestMethod] + public void ShouldMapRelation() + { + // given + List<Parent> parents = new List<Parent>(); + MapResultSet[] sets = new MapResultSet[3]; + + sets[0] = new MapResultSet(typeof(Parent), parents); + sets[1] = new MapResultSet(typeof(Child)); + sets[2] = new MapResultSet(typeof(Grandchild)); + + // db config + var conn = new MockDb() + .NewReader("ParentID") + .NewRow(1) + .NewRow(2) + .NextResult("ChildID", "ParentID") + .NewRow(4, 1) + .NewRow(5, 2) + .NewRow(6, 2) + .NewRow(7, 1) + .NextResult("GrandchildID", "ChildID") + .NewRow(1, 4) + .NewRow(2, 4) + .NewRow(3, 5) + .NewRow(4, 5) + .NewRow(5, 6) + .NewRow(6, 6) + .NewRow(7, 7) + .NewRow(8, 7); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<Parent>() + .MapField(_ => _.ID, "ParentID").PrimaryKey() + .MapField(_ => _.Children).Relation() + .MapTo(db); + new FluentMap<Child>() + .MapField(_ => _.Parent.ID, "ParentID") + .MapField(_ => _.ID, "ChildID").PrimaryKey() + .MapField(_ => _.Parent).Relation() + .MapField(_ => _.Grandchildren).Relation() + .MapTo(db); + new FluentMap<Grandchild>() + .MapField(_ => _.Child.ID, "ChildID") + .MapField(_ => _.ID, "GrandchildID").PrimaryKey() + .MapField(_ => _.Child).Relation() + .MapTo(db); + + // when + db.SetCommand("select *").ExecuteResultSet(sets); + } + + // then + Assert.IsTrue(parents.Any()); + + foreach (Parent parent in parents) + { + Assert.IsNotNull(parent); + Assert.IsTrue(parent.Children.Any()); + + foreach (Child child in parent.Children) + { + Assert.AreEqual(parent, child.Parent); + Assert.IsTrue(child.Grandchildren.Any()); + + foreach (Grandchild grandchild in child.Grandchildren) + { + Assert.AreEqual(child, grandchild.Child); + Assert.AreEqual(parent, grandchild.Child.Parent); + } + } + } + } + + /// <summary> + /// Relation mapping for child + /// </summary> + [TestMethod] + public void ShouldMapRelationForChild() + { + // given + List<Parent2Child> parents = new List<Parent2Child>(); + MapResultSet[] sets = new MapResultSet[2]; + + sets[0] = new MapResultSet(typeof(Parent2Child), parents); + sets[1] = new MapResultSet(typeof(Child2)); + + // db config + var conn = new MockDb() + .NewReader("ParentID") + .NewRow(1) + .NewRow(2) + .NextResult("ChildID", "ParentID") + .NewRow(4, 1) + .NewRow(5, 2) + .NewRow(6, 2) + .NewRow(7, 1); + + using (conn) + using (var db = new DbManager(conn)) + { + // fluent config + new FluentMap<Parent2>() + .MapField(_ => _.ID, "ParentID").PrimaryKey() + .MapField(_ => _.Children).Relation() + .MapTo(db); + new FluentMap<Child2>() + .MapField(_ => _.Parent.ID, "ParentID") + .MapField(_ => _.ID, "ChildID").PrimaryKey() + .MapField(_ => _.Parent).Relation() + .MapTo(db); + + // when + db.SetCommand("select *").ExecuteResultSet(sets); + } + + // then + Assert.IsTrue(parents.Any()); + + foreach (Parent2Child parent in parents) + { + Assert.IsNotNull(parent); + Assert.IsTrue(parent.Children.Any()); + + foreach (Child2 child in parent.Children) + { + Assert.AreEqual(parent, child.Parent); + } + } + } + + #region Dbo + public class TableNameDbo + { + public int Field1 { get; set; } + } + public class TableNameChildDbo : TableNameDbo + { + } + public class MapFieldDbo + { + public int Field1 { get; set; } + } + public class MapFieldChild1Dbo : MapFieldDbo + { + } + public class MapFieldChild2Dbo : MapFieldDbo + { + } + public class PrimaryKeyDbo + { + public int Field1 { get; set; } + public int Field2 { get; set; } + } + public class PrimaryKeyChildDbo : PrimaryKeyDbo + { + } + public class NonUpdatableDbo + { + public int Field1 { get; set; } + public int Field2 { get; set; } + } + public class NonUpdatableChildDbo : NonUpdatableDbo + { + } + public class SqlIgnoreInsertDbo + { + public int Field1 { get; set; } + public int Field2 { get; set; } + } + public class SqlIgnoreSelectDbo + { + public int Field1 { get; set; } + public int Field2 { get; set; } + } + public class SqlIgnoreChildDbo : SqlIgnoreSelectDbo + { + } + public class MapIgnoreInsertDbo + { + public int Field1 { get; set; } + public int Field2 { get; set; } + } + public class MapIgnoreSelectDbo + { + public int Field1 { get; set; } + public int Field2 { get; set; } + } + public class MapIgnoreChildDbo : MapIgnoreSelectDbo + { + } + public class TrimmableDbo + { + public string Field1 { get; set; } + } + public class TrimmableChildDbo : TrimmableDbo + { + } + public class MapValueMemberDbo + { + public string Field1 { get; set; } + public string Field2 { get; set; } + } + public class MapValueMemberChildDbo : MapValueMemberDbo + { + } + public class MapValueEnumDbo + { + public MapValueEnum Field1 { get; set; } + public MapValueEnum Field2 { get; set; } + public MapValueEnum Field3 { get; set; } + public int Field4 { get; set; } + } + public class MapValueEnumChildDbo : MapValueEnumDbo + { + } + public enum MapValueEnum + { + Value1, + Value2 + } + public class MapValueTypeDbo + { + public int Field1 { get; set; } + public int Field2 { get; set; } + public int Field3 { get; set; } + } + public class MapValueTypeChildDbo : MapValueTypeDbo + { + } + public abstract class InheritanceMappingDbo + { + public int Field1 { get; set; } + public int Field2 { get; set; } + } + public class InheritanceMappingDbo1 : InheritanceMappingDbo + { + } + public class InheritanceMappingDbo2 : InheritanceMappingDbo + { + } + public abstract class InheritanceMappingChDbo + { + public int Field1 { get; set; } + public int Field2 { get; set; } + } + public class InheritanceMappingChDbo1 : InheritanceMappingChDbo + { + } + public class InheritanceMappingChDbo2 : InheritanceMappingChDbo + { + } + public class AssociationThis1Dbo + { + public int FieldThis1 { get; set; } + public List<AssociationOtherDbo> FieldThis2 { get; set; } + } + public class AssociationThis2Dbo + { + public int FieldThis1 { get; set; } + public AssociationOtherDbo FieldThis3 { get; set; } + } + public class AssociationThis2ChildDbo : AssociationThis2Dbo + { + } + public class AssociationOtherDbo + { + public int FieldOther1 { get; set; } + public int FieldOther2 { get; set; } + public int FieldOther3 { get; set; } + public string FieldOther4 { get; set; } + } + public class Parent + { + public int ID; + public List<Child> Children = new List<Child>(); + } + public class Child + { + public int ID; + public Parent Parent = new Parent(); + public List<Grandchild> Grandchildren = new List<Grandchild>(); + } + public class Grandchild + { + public int ID; + public Child Child = new Child(); + } + public class Parent2 + { + public int ID; + public List<Child2> Children = new List<Child2>(); + } + public class Parent2Child : Parent2 + { + } + public class Child2 + { + public int ID; + public Parent2Child Parent = new Parent2Child(); + } + #endregion + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/MockDataBase/AssertCommandData.cs b/UnitTests/Fluent/MockDataBase/AssertCommandData.cs new file mode 100644 index 000000000..83dec2935 --- /dev/null +++ b/UnitTests/Fluent/MockDataBase/AssertCommandData.cs @@ -0,0 +1,46 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace BLToolkit.Fluent.Test.MockDataBase +{ + public class AssertCommandData + { + private readonly MockCommandData _data; + + public AssertCommandData(MockCommandData data) + { + _data = data; + } + + public void AreField(string fieldName, int? count = null, string message = null) + { + int fCount = _data.Fields.TryGetValue(fieldName, out fCount) ? fCount : 0; + if ((null == count) && (0 < fCount)) + { + return; + } + if ((null != count) && (count.Value == fCount)) + { + return; + } + Assert.Fail(message ?? string.Format("Fail field '{0}'", fieldName)); + } + + public void AreField(string fieldName, string message = null) + { + AreField(fieldName, null, message); + } + + public void AreNotField(string fieldName, string message = null) + { + AreField(fieldName, 0, message); + } + + public void AreTable(string tableName, string message = null) + { + if (!_data.Tables.Contains(tableName)) + { + Assert.Fail(message ?? string.Format("Fail table '{0}'", tableName)); + } + } + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/MockDataBase/AssertDb.cs b/UnitTests/Fluent/MockDataBase/AssertDb.cs new file mode 100644 index 000000000..c15dcbae7 --- /dev/null +++ b/UnitTests/Fluent/MockDataBase/AssertDb.cs @@ -0,0 +1,23 @@ +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace BLToolkit.Fluent.Test.MockDataBase +{ + public class AssertDb + { + private readonly MockDb _db; + + public AssertDb(MockDb db) + { + _db = db; + } + + public void AreAll(string message = null) + { + if (_db.Commands.Any(c => !c.IsUsing)) + { + Assert.Fail(message ?? "Fail all queries"); + } + } + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/MockDataBase/AssertMockDataBaseEx.cs b/UnitTests/Fluent/MockDataBase/AssertMockDataBaseEx.cs new file mode 100644 index 000000000..51ebab4ca --- /dev/null +++ b/UnitTests/Fluent/MockDataBase/AssertMockDataBaseEx.cs @@ -0,0 +1,15 @@ +namespace BLToolkit.Fluent.Test.MockDataBase +{ + public static class AssertMockDataBaseEx + { + public static AssertDb Assert(this MockDb db) + { + return new AssertDb(db); + } + + public static AssertCommandData Assert(this MockCommandData data) + { + return new AssertCommandData(data); + } + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/MockDataBase/MockCommand.cs b/UnitTests/Fluent/MockDataBase/MockCommand.cs new file mode 100644 index 000000000..c14d28cb9 --- /dev/null +++ b/UnitTests/Fluent/MockDataBase/MockCommand.cs @@ -0,0 +1,165 @@ +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text.RegularExpressions; + +namespace BLToolkit.Fluent.Test.MockDataBase +{ + public partial class MockDb + { + /// <summary> + /// IDbCommand + /// </summary> + private partial class MockCommand : IDbCommand + { + private readonly MockDb _db; + private readonly Regex _findTableRx = new Regex(MockSqlProvider.TableMarker + @"(\w+)"); + private readonly Regex _findFieldRx = new Regex(MockSqlProvider.FieldMarker + @"(\w+)"); + + public MockCommand(MockDb db) + { + _db = db; + Parameters = new DataParameterCollection(); + } + + public void Dispose() + { + } + + public void Prepare() + { + } + + public void Cancel() + { + } + + public IDbDataParameter CreateParameter() + { + return new MockDbDataParameter(); + } + + public int ExecuteNonQuery() + { + return MockCommandData().NonQueryResult; + } + + public IDataReader ExecuteReader() + { + return new MockReader(MockCommandData(false)); + } + + public IDataReader ExecuteReader(CommandBehavior behavior) + { + return ExecuteReader(); + } + + public object ExecuteScalar() + { + return MockCommandData().ScalarResult; + } + + public IDbConnection Connection { get; set; } + + public IDbTransaction Transaction { get; set; } + + public string CommandText { get; set; } + + public int CommandTimeout { get; set; } + + public CommandType CommandType { get; set; } + + public IDataParameterCollection Parameters { get; private set; } + + public UpdateRowSource UpdatedRowSource { get; set; } + + private MockCommandData MockCommandData(bool isUsing = true) + { + Dictionary<string, int> fields; + List<string> tables; + FindFields(CommandText, out fields); + FindTables(CommandText, out tables); + CommandText = ClearMockMarkers(CommandText); + + var cmd = _db.NextCommand(); + cmd.CommandText = CommandText; + cmd.Parameters = Parameters.Cast<MockDbDataParameter>().ToList(); + cmd.Fields = fields; + cmd.Tables = tables; + cmd.IsUsing = isUsing; + return cmd; + } + + private string ClearMockMarkers(string commandText) + { + return commandText + .Replace(MockSqlProvider.FieldMarker, "") + .Replace(MockSqlProvider.TableMarker, ""); + } + + private void FindTables(string commandText, out List<string> tables) + { + tables = (from Match match in _findTableRx.Matches(commandText) select match.Groups[1].Value) + .Distinct().ToList(); + } + + private void FindFields(string commandText, out Dictionary<string, int> fields) + { + fields = (from Match match in _findFieldRx.Matches(commandText) select match.Groups[1].Value) + .GroupBy(s => s, (s, ss) => new { Key = s, Value = ss.Count() }) + .ToDictionary(kv => kv.Key, kv => kv.Value); + } + + private class DataParameterCollection : List<MockDbDataParameter>, IDataParameterCollection + { + public bool Contains(string parameterName) + { + return this.Any(p => p.ParameterName == parameterName); + } + + public int IndexOf(string parameterName) + { + for (int i = 0; i < Count; i++) + { + if (this[i].ParameterName == parameterName) + { + return i; + } + } + return -1; + } + + public void RemoveAt(string parameterName) + { + var data = this.FirstOrDefault(p => p.ParameterName == parameterName); + if (null != data) + { + Remove(data); + } + } + + public object this[string parameterName] + { + get + { + var data = this.FirstOrDefault(p => p.ParameterName == parameterName); + return null == data ? null : data.Value; + } + set + { + var data = this.FirstOrDefault(p => p.ParameterName == parameterName); + if (null == data) + { + Add(new MockDbDataParameter { ParameterName = parameterName, Value = value }); + } + else + { + data.Value = value; + } + } + } + } + } + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/MockDataBase/MockCommandData.cs b/UnitTests/Fluent/MockDataBase/MockCommandData.cs new file mode 100644 index 000000000..31d1fe4cf --- /dev/null +++ b/UnitTests/Fluent/MockDataBase/MockCommandData.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; + +namespace BLToolkit.Fluent.Test.MockDataBase +{ + public class MockCommandData + { + public int NonQueryResult { get; set; } + + public MockReaderData ReaderResult { get; set; } + + public object ScalarResult { get; set; } + + public string CommandText { get; set; } + + public bool IsUsing { get; set; } + + public List<MockDbDataParameter> Parameters { get; set; } + + public Dictionary<string, int> Fields { get; set; } + + public List<string> Tables { get; set; } + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/MockDataBase/MockDataProvider.cs b/UnitTests/Fluent/MockDataBase/MockDataProvider.cs new file mode 100644 index 000000000..0d896c373 --- /dev/null +++ b/UnitTests/Fluent/MockDataBase/MockDataProvider.cs @@ -0,0 +1,44 @@ +using System; +using System.Data; +using System.Data.Common; +using BLToolkit.Data.DataProvider; +using BLToolkit.Data.Sql.SqlProvider; + +namespace BLToolkit.Fluent.Test.MockDataBase +{ + /// <summary> + /// For BLToolkit + /// </summary> + public class MockDataProvider : DataProviderBase + { + public override IDbConnection CreateConnectionObject() + { + throw new NotImplementedException(); + } + + public override DbDataAdapter CreateDataAdapterObject() + { + throw new NotImplementedException(); + } + + public override bool DeriveParameters(IDbCommand command) + { + throw new NotImplementedException(); + } + + public override ISqlProvider CreateSqlProvider() + { + return new MockSqlProvider(); + } + + public override Type ConnectionType + { + get { return typeof(MockDb); } + } + + public override string Name + { + get { return "Mock"; } + } + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/MockDataBase/MockDb.cs b/UnitTests/Fluent/MockDataBase/MockDb.cs new file mode 100644 index 000000000..8c18a3cb3 --- /dev/null +++ b/UnitTests/Fluent/MockDataBase/MockDb.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace BLToolkit.Fluent.Test.MockDataBase +{ + /// <summary> + /// DB configure start point + /// </summary> + public partial class MockDb : IDbConnection + { + private int _cmdIndex = -1; + private readonly List<MockCommandData> _commands = new List<MockCommandData>(); + + public List<MockCommandData> Commands { get { return _commands; } } + + private MockCommandData NextCommand() + { + _cmdIndex++; + if (_cmdIndex == _commands.Count) + { + Assert.Fail("Command not define"); + } + return _commands[_cmdIndex]; + } + + /// <summary> + /// New IDataReader query + /// </summary> + /// <param name="fields"></param> + /// <returns></returns> + public MockDb NewReader(params string[] fields) + { + CurrentSetupCommandData = new MockCommandData { ReaderResult = new MockReaderData() }; + return NextResult(fields); + } + + /// <summary> + /// Next result into current IDataReader context + /// </summary> + /// <param name="fields"></param> + /// <returns></returns> + public MockDb NextResult(params string[] fields) + { + var data = new MockReaderResultData(); + data.SetNames(fields); + CurrentSetupCommandData.ReaderResult.CurrentResult = data; + return this; + } + + public MockDb NewRow(params object[] values) + { + CurrentSetupCommandData.ReaderResult.CurrentResult.Values.Add(values); + return this; + } + + private MockCommandData CurrentSetupCommandData + { + get { return _commands.LastOrDefault(); } + set { _commands.Add(value); } + } + + public MockDb NewNonQuery(int value = 1) + { + CurrentSetupCommandData = new MockCommandData { NonQueryResult = value }; + return this; + } + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/MockDataBase/MockDbConnection.cs b/UnitTests/Fluent/MockDataBase/MockDbConnection.cs new file mode 100644 index 000000000..0699bd7a6 --- /dev/null +++ b/UnitTests/Fluent/MockDataBase/MockDbConnection.cs @@ -0,0 +1,63 @@ +using System.Data; + +namespace BLToolkit.Fluent.Test.MockDataBase +{ + /// <summary> + /// IDbConnection + /// </summary> + public partial class MockDb : IDbConnection + { + private ConnectionState _state; + + IDbTransaction IDbConnection.BeginTransaction(IsolationLevel il) + { + throw new System.NotImplementedException(); + } + + IDbTransaction IDbConnection.BeginTransaction() + { + throw new System.NotImplementedException(); + } + + void IDbConnection.ChangeDatabase(string databaseName) + { + throw new System.NotImplementedException(); + } + + void IDbConnection.Close() + { + _state = ConnectionState.Closed; + } + + string IDbConnection.ConnectionString { get; set; } + + int IDbConnection.ConnectionTimeout + { + get { throw new System.NotImplementedException(); } + } + + IDbCommand IDbConnection.CreateCommand() + { + return new MockCommand(this); + } + + string IDbConnection.Database + { + get { throw new System.NotImplementedException(); } + } + + void IDbConnection.Open() + { + _state = ConnectionState.Open; + } + + ConnectionState IDbConnection.State + { + get { return _state; } + } + + void System.IDisposable.Dispose() + { + } + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/MockDataBase/MockDbDataParameter.cs b/UnitTests/Fluent/MockDataBase/MockDbDataParameter.cs new file mode 100644 index 000000000..6865625b2 --- /dev/null +++ b/UnitTests/Fluent/MockDataBase/MockDbDataParameter.cs @@ -0,0 +1,33 @@ +using System.Data; + +namespace BLToolkit.Fluent.Test.MockDataBase +{ + /// <summary> + /// IDbDataParameter + /// </summary> + public class MockDbDataParameter : IDbDataParameter + { + public DbType DbType { get; set; } + + public ParameterDirection Direction { get; set; } + + public bool IsNullable + { + get { throw new System.NotImplementedException(); } + } + + public string ParameterName { get; set; } + + public string SourceColumn { get; set; } + + public DataRowVersion SourceVersion { get; set; } + + public object Value { get; set; } + + public byte Precision { get; set; } + + public byte Scale { get; set; } + + public int Size { get; set; } + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/MockDataBase/MockReader.cs b/UnitTests/Fluent/MockDataBase/MockReader.cs new file mode 100644 index 000000000..85163528f --- /dev/null +++ b/UnitTests/Fluent/MockDataBase/MockReader.cs @@ -0,0 +1,205 @@ +using System; +using System.Data; +using System.Linq; + +namespace BLToolkit.Fluent.Test.MockDataBase +{ + public partial class MockDb + { + private partial class MockCommand : IDbCommand + { + /// <summary> + /// IDataReader + /// </summary> + private class MockReader : IDataReader + { + private readonly MockReaderData _data; + private int _rowIndex = -1; + private int _resultIndex = 0; + private MockCommandData _cmd; + + public MockReader(MockCommandData data) + { + _cmd = data; + _data = data.ReaderResult; + } + + public void Dispose() + { + } + + public string GetName(int i) + { + return _data.Results[_resultIndex].Names[i]; + } + + public string GetDataTypeName(int i) + { + throw new NotImplementedException(); + } + + public Type GetFieldType(int i) + { + Type type = _data.Results[_resultIndex].Types[i]; + if (null == type) + { + object o = _data.Results[_resultIndex].Values.First()[i]; + if (null == o) + { + throw new ArgumentException(); + } + type = o.GetType(); + } + return type; + } + + public object GetValue(int i) + { + return _data.Results[_resultIndex].Values[_rowIndex][i]; + } + + public int GetValues(object[] values) + { + _data.Results[_resultIndex].Values[_rowIndex].CopyTo(values, 0); + return Math.Min(_data.Results[_resultIndex].Values[_rowIndex].Length, values.Length); + } + + public int GetOrdinal(string name) + { + throw new NotImplementedException(); + } + + public bool GetBoolean(int i) + { + return Convert.ToBoolean(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public byte GetByte(int i) + { + return Convert.ToByte(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length) + { + throw new NotImplementedException(); + } + + public char GetChar(int i) + { + return Convert.ToChar(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length) + { + throw new NotImplementedException(); + } + + public Guid GetGuid(int i) + { + throw new NotImplementedException(); + } + + public short GetInt16(int i) + { + return Convert.ToInt16(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public int GetInt32(int i) + { + return Convert.ToInt32(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public long GetInt64(int i) + { + return Convert.ToInt64(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public float GetFloat(int i) + { + throw new NotImplementedException(); + } + + public double GetDouble(int i) + { + return Convert.ToDouble(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public string GetString(int i) + { + return Convert.ToString(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public decimal GetDecimal(int i) + { + return Convert.ToDecimal(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public DateTime GetDateTime(int i) + { + return Convert.ToDateTime(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public IDataReader GetData(int i) + { + throw new NotImplementedException(); + } + + public bool IsDBNull(int i) + { + return null == _data.Results[_resultIndex].Values[_rowIndex][i]; + } + + public int FieldCount + { + get { return _data.Results[_resultIndex].Names.Count; } + } + + object IDataRecord.this[int i] + { + get { throw new NotImplementedException(); } + } + + object IDataRecord.this[string name] + { + get { throw new NotImplementedException(); } + } + + public void Close() + { + IsClosed = true; + } + + public DataTable GetSchemaTable() + { + throw new NotImplementedException(); + } + + public bool NextResult() + { + _rowIndex = -1; + _resultIndex += 1; + return _data.Results.Count > _resultIndex; + } + + public bool Read() + { + _cmd.IsUsing = true; + _rowIndex++; + return _data.Results[_resultIndex].Values.Count > _rowIndex; + } + + public int Depth + { + get { throw new NotImplementedException(); } + } + + public bool IsClosed { get; set; } + + public int RecordsAffected + { + get { return _rowIndex + 1; } + } + } + } + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/MockDataBase/MockReaderData.cs b/UnitTests/Fluent/MockDataBase/MockReaderData.cs new file mode 100644 index 000000000..160db816d --- /dev/null +++ b/UnitTests/Fluent/MockDataBase/MockReaderData.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace BLToolkit.Fluent.Test.MockDataBase +{ + public class MockReaderData + { + public MockReaderData() + { + Results = new List<MockReaderResultData>(); + } + + public List<MockReaderResultData> Results { get; private set; } + + public MockReaderResultData CurrentResult + { + get { return Results.LastOrDefault(); } + set { Results.Add(value); } + } + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/MockDataBase/MockReaderResultData.cs b/UnitTests/Fluent/MockDataBase/MockReaderResultData.cs new file mode 100644 index 000000000..a3daf92ed --- /dev/null +++ b/UnitTests/Fluent/MockDataBase/MockReaderResultData.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace BLToolkit.Fluent.Test.MockDataBase +{ + public class MockReaderResultData + { + public MockReaderResultData() + { + Names = new List<string>(); + Types = new List<Type>(); + Values = new List<object[]>(); + } + + public List<string> Names { get; private set; } + + public List<Type> Types { get; private set; } + + public List<object[]> Values { get; private set; } + + public void SetNames(string[] fields) + { + Names.Clear(); + Names.AddRange(fields); + Types = Types.Take(Math.Min(Types.Count, Names.Count)).ToList(); + for (int i = Types.Count; i < Names.Count; i++) + { + Types.Add(null); + } + } + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/MockDataBase/MockSqlProvider.cs b/UnitTests/Fluent/MockDataBase/MockSqlProvider.cs new file mode 100644 index 000000000..ed2c464ee --- /dev/null +++ b/UnitTests/Fluent/MockDataBase/MockSqlProvider.cs @@ -0,0 +1,32 @@ +using BLToolkit.Data.DataProvider; +using BLToolkit.Data.Sql.SqlProvider; + +namespace BLToolkit.Fluent.Test.MockDataBase +{ + /// <summary> + /// For BLToolkit + /// </summary> + public class MockSqlProvider : BasicSqlProvider + { + public const string FieldMarker = "{D02ADC4A-7838-4FA8-8AD7-1DCE93C8098E}"; + public const string TableMarker = "{A96D8597-A829-496C-AA71-0ED995E184CE}"; + + protected override ISqlProvider CreateSqlProvider() + { + return new MockSqlProvider(); + } + + public override object Convert(object value, ConvertType convertType) + { + if (ConvertType.NameToQueryField == convertType) + { + return FieldMarker + value; + } + if (ConvertType.NameToQueryTable == convertType) + { + return TableMarker + value; + } + return base.Convert(value, convertType); + } + } +} \ No newline at end of file diff --git a/UnitTests/Fluent/Properties/AssemblyInfo.cs b/UnitTests/Fluent/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..6441fc0da --- /dev/null +++ b/UnitTests/Fluent/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("BLToolkit.Fluent.Test")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("BLToolkit.Fluent.Test")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2012")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c44cb6d7-7888-4613-88bb-933012101efa")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/UnitTests/Fluent/UnitTests.Fluent.csproj b/UnitTests/Fluent/UnitTests.Fluent.csproj new file mode 100644 index 000000000..edd72c6bb --- /dev/null +++ b/UnitTests/Fluent/UnitTests.Fluent.csproj @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion> + </ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{527300F8-9F04-434C-8239-4FE5E174FF6B}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>BLToolkit.Fluent.Test</RootNamespace> + <AssemblyName>BLToolkit.Fluent.Test</AssemblyName> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" /> + <Reference Include="System" /> + <Reference Include="System.Core"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies"> + <Visible>False</Visible> + </CodeAnalysisDependentAssemblyPaths> + </ItemGroup> + <ItemGroup> + <Compile Include="AssertExceptionEx.cs" /> + <Compile Include="FluentMapAttributesTest.cs" /> + <Compile Include="FluentConfigTest.cs" /> + <Compile Include="FluentMapTest.cs" /> + <Compile Include="MockDataBase\AssertCommandData.cs" /> + <Compile Include="MockDataBase\AssertDb.cs" /> + <Compile Include="MockDataBase\MockDbConnection.cs" /> + <Compile Include="MockDataBase\AssertMockDataBaseEx.cs" /> + <Compile Include="MockDataBase\MockDbDataParameter.cs" /> + <Compile Include="MockDataBase\MockCommand.cs" /> + <Compile Include="MockDataBase\MockCommandData.cs" /> + <Compile Include="MockDataBase\MockDataProvider.cs" /> + <Compile Include="MockDataBase\MockDb.cs" /> + <Compile Include="MockDataBase\MockReader.cs" /> + <Compile Include="MockDataBase\MockReaderData.cs" /> + <Compile Include="MockDataBase\MockReaderResultData.cs" /> + <Compile Include="MockDataBase\MockSqlProvider.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\Source\BLToolkit.4.csproj"> + <Project>{0c325f5d-e50e-4340-8724-d29896ccc583}</Project> + <Name>BLToolkit.4</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/UnitTests/Linq/App.config b/UnitTests/Linq/App.config index 78905d58b..aba936d0d 100644 --- a/UnitTests/Linq/App.config +++ b/UnitTests/Linq/App.config @@ -1,6 +1,6 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="utf-8"?> <configuration> - <!-- + <!-- <configSections> <section name="bltoolkit" type="BLToolkit.Configuration.BLToolkitSection, BLToolkit.4"/> </configSections> @@ -18,8 +18,7 @@ </dataProviders> </bltoolkit> --> - - <!-- + <!-- <system.diagnostics> <sources> <source name="System.ServiceModel.MessageLogging"> @@ -45,29 +44,37 @@ </diagnostics> </system.serviceModel> --> - <connectionStrings> - <add name="Access" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BLToolkitData.mdb;Locale Identifier=1033;Jet OLEDB:Engine Type=5;Persist Security Info=True"/> - <add name="Access.Data" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\..\..\..\Data\BLToolkitData.mdb;Locale Identifier=1033;Jet OLEDB:Engine Type=5;Persist Security Info=True"/> - <add name="DB2" connectionString="Server=DBHost:50000;Database=TESTDATA;UID=Administrator;PWD=TestPassword;" providerName="IBM.Data.DB2"/> - <add name="Fdp" connectionString="DataSource=DBHost;Database=C:\Data\TestData.fdb;User Id=SYSDBA;Password=masterkey"/> - <add name="Informix" connectionString="Host=DBHost;Service=9088;Server=ol_informix1170;Protocol=onsoctcp;Database=TestData;UID=informix;PWD=TestPassword;" providerName="IBM.Data.Informix"/> - <add name="MySql" connectionString="Server=DBHost;Port=3306;Database=testdata;Uid=root;Pwd=TestPassword;charset=utf8;" providerName="MySql.Data.MySqlClient"/> - <add name="Oracle" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBHost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=TestData)));User Id=SYSMAN;Password=TestPassword;" providerName="Oracle.DataAccess.Client"/> + <add name="Access" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BLToolkitData.mdb;Locale Identifier=1033;Jet OLEDB:Engine Type=5;Persist Security Info=True" /> + <add name="Access.Data" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\..\..\..\Data\BLToolkitData.mdb;Locale Identifier=1033;Jet OLEDB:Engine Type=5;Persist Security Info=True" /> + <add name="DB2" connectionString="Server=DBHost:50000;Database=TESTDATA;UID=Administrator;PWD=TestPassword;" providerName="IBM.Data.DB2" /> + <add name="Fdp" connectionString="DataSource=DBHost;Database=C:\Data\TestData.fdb;User Id=SYSDBA;Password=masterkey" /> + <add name="Informix" connectionString="Host=DBHost;Service=9088;Server=ol_informix1170;Protocol=onsoctcp;Database=TestData;UID=informix;PWD=TestPassword;" providerName="IBM.Data.Informix" /> + <add name="MySql" connectionString="Server=DBHost;Port=3306;Database=testdata;Uid=root;Pwd=TestPassword;charset=utf8;" providerName="MySql.Data.MySqlClient" /> + <add name="Oracle" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBHost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=TestData)));User Id=TestUser;Password=TestPassword;" providerName="Oracle.DataAccess.Client" /> + <add name="DevartOracle" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBHost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=TestData)));User Id=TestUser;Password=TestPassword;" providerName="Devart.Data.Oracle" /> <!-- - <add name="ManagedOracle" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBHost1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)));User Id=TestUser;Password=TestPassword;" providerName="Oracle.ManagedDataAccess.Client"/> + <add name="ManagedOracle" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBHost1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)));User Id=TestUser;Password=TestPassword;" providerName="Oracle.ManagedDataAccess.Client"/> --> - <add name="PostgreSQL" connectionString="Server=DBHost;Port=5432;Database=TestData;User Id=postgres;Password=TestPassword;Pooling=true;MinPoolSize=10;MaxPoolSize=100;Protocol=3;" providerName="Npgsql"/> - <add name="Sql2008" connectionString="Server=.;Database=BLToolkitData;Integrated Security=SSPI;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient"/> - <add name="Sql2005" connectionString="Server=DBHost\SQLSERVER2005;Database=TestData;User Id=sa;Password=TestPassword;" providerName="System.Data.SqlClient"/> - <add name="SqlCe" connectionString="Data Source=BLToolkitData.sdf"/> - <add name="SqlCe.Data" connectionString="Data Source=..\..\..\..\Data\BLToolkitData.sdf"/> - <add name="SQLite" connectionString="Data Source=.\BLToolkitData.sqlite"/> - <add name="SQLite.Data" connectionString="Data Source=..\..\..\..\Data\BLToolkitData.sqlite"/> - <add name="Sybase" connectionString="Data Source=DBHost2008;Port=5000;Database=TestData;Uid=sa;Password=TestPassword" providerName="Sybase.Data.AseClient"/> - <add name="Northwind" connectionString="Data Source=.;Database=Northwind;Integrated Security=SSPI" providerName="System.Data.SqlClient"/> + <add name="PostgreSQL" connectionString="Server=DBHost;Port=5432;Database=TestData;User Id=postgres;Password=TestPassword;Pooling=true;MinPoolSize=10;MaxPoolSize=100;Protocol=3;" providerName="Npgsql" /> + <add name="Sql2012" connectionString="Server=DBHost\SQLSERVER2012;Database=TestData;User Id=sa;Password=TestPassword;" providerName="System.Data.SqlClient" /> + <add name="Sql2008" connectionString="Server=DBHost\SQLSERVER2008;Database=TestData;User Id=sa;Password=TestPassword;" providerName="System.Data.SqlClient" /> + <add name="Sql2005" connectionString="Server=DBHost\SQLSERVER2005;Database=TestData;User Id=sa;Password=TestPassword;" providerName="System.Data.SqlClient" /> + <add name="Sql2000" connectionString="Server=DBHost2008\SQLSERVER2000;Database=TestData;User Id=sa;Password=TestPassword;" providerName="System.Data.SqlClient" /> + <add name="SqlCe" connectionString="Data Source=BLToolkitData.sdf" /> + <add name="SqlCe.Data" connectionString="Data Source=..\..\..\..\Data\BLToolkitData.sdf" /> + <add name="SQLite" connectionString="Data Source=.\BLToolkitData.sqlite" /> + <add name="SQLite.Data" connectionString="Data Source=..\..\..\..\Data\BLToolkitData.sqlite" /> + <add name="Sybase" connectionString="Data Source=DBHost2008;Port=5000;Database=TestData;Uid=sa;Password=TestPassword" providerName="Sybase.Data.AseClient" /> + <add name="Northwind" connectionString="Server=DBHost\SQLSERVER2012;Database=Northwind;User Id=sa;Password=TestPassword;" providerName="System.Data.SqlClient" /> </connectionStrings> <startup> - <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> </startup> -</configuration> + + +<system.data> + <DbProviderFactories> + <add name="dotConnect for Oracle" invariant="Devart.Data.Oracle" description="Devart dotConnect for Oracle" type="Devart.Data.Oracle.OracleProviderFactory, Devart.Data.Oracle, Version=8.1.36.0, Culture=neutral, PublicKeyToken=09af7300eec23701" /> + </DbProviderFactories> + </system.data></configuration> \ No newline at end of file diff --git a/UnitTests/Linq/Association.cs b/UnitTests/Linq/AssociationTest.cs similarity index 81% rename from UnitTests/Linq/Association.cs rename to UnitTests/Linq/AssociationTest.cs index 5295d6c36..7a5ce96b3 100644 --- a/UnitTests/Linq/Association.cs +++ b/UnitTests/Linq/AssociationTest.cs @@ -1,6 +1,6 @@ using System; using System.Linq; - +using BLToolkit.Data; using BLToolkit.Data.DataProvider; using BLToolkit.Data.Linq; using BLToolkit.DataAccess; @@ -13,7 +13,7 @@ namespace Data.Linq using Model; [TestFixture] - public class Association : TestBase + public class AssociationTest : TestBase { [Test] public void Test1() @@ -117,7 +117,7 @@ public void SelectMany3() .SelectMany(g => g.Select(ch => ch.Parent)))); } - [Test] + [Test] public void SelectMany4() { ForEachProvider(new[] { ProviderName.Access }, db => AreEqual( @@ -188,7 +188,7 @@ public void GroupBy4() } [Test] - public void EqualsNull1() + public void EqualsNull1([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) AreEqual( @@ -197,7 +197,7 @@ public void EqualsNull1() } [Test] - public void EqualsNull2() + public void EqualsNull2([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) AreEqual( @@ -206,7 +206,7 @@ public void EqualsNull2() } [Test] - public void EqualsNull3() + public void EqualsNull3([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) AreEqual( @@ -215,7 +215,7 @@ public void EqualsNull3() } [Test] - public void StackOverflow1() + public void StackOverflow1([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) Assert.AreEqual( @@ -308,25 +308,23 @@ public class Bottom } [Test] - public void TestTernary1() + public void TestTernary1([DataContexts(ProviderName.SQLite, ProviderName.Access)] string context) { var ids = new[] { 1, 5 }; - ForEachProvider( - new[] { ProviderName.SQLite, ProviderName.Access }, - db => - { - var q = - from t in db.GetTable<Top>() - where ids.Contains(t.ParentID) - orderby t.ParentID - select t.Middle == null ? null : t.Middle.Bottom; + using (var db = GetDataContext(context)) + { + var q = + from t in db.GetTable<Top>() + where ids.Contains(t.ParentID) + orderby t.ParentID + select t.Middle == null ? null : t.Middle.Bottom; - var list = q.ToList(); + var list = q.ToList(); - Assert.NotNull(list[0]); - Assert.Null (list[1]); - }); + Assert.NotNull(list[0]); + Assert.Null (list[1]); + } } [Test] @@ -370,33 +368,34 @@ orderby t.ParentID Assert.Null (list[1]); }); } - - [TableName("Child")] - [InheritanceMapping(Code = 1, IsDefault = true, Type = typeof(ChildForHeirarhy))] - public class ChildBaseForHeirarhy - { - [MapField(IsInheritanceDiscriminator = true)] - public int ChildID { get; set; } - } - - public class ChildForHeirarhy : ChildBaseForHeirarhy - { - public int ParentID { get; set; } - [Association(ThisKey = "ParentID", OtherKey = "ParentID", CanBeNull = true)] - public Parent Parent { get; set; } - } - - [Test] - public void AssociationInHeirarhy() - { - ForEachProvider(db => - { - db.GetTable<ChildBaseForHeirarhy>() - .OfType<ChildForHeirarhy>() - .Select(ch => new ChildForHeirarhy { Parent = ch.Parent }) - .ToList(); - }); - } + + [TableName("CHILD")] + [InheritanceMapping(Code = 1, IsDefault = true, Type = typeof(ChildForHeirarhy))] + public class ChildBaseForHeirarhy + { + [MapField(IsInheritanceDiscriminator = true)] + public int ChildID { get; set; } + } + + public class ChildForHeirarhy : ChildBaseForHeirarhy + { + public int ParentID { get; set; } + [Association(ThisKey = "ParentID", OtherKey = "ParentID", CanBeNull = true)] + public Parent Parent { get; set; } + } + + + [Test] + public void TestAssociationInHeirarhy() + { + ForEachProvider( Providers.Select(p => p.Name).Except(new [] { ProviderName.Firebird }).ToArray(), context => + { + var db = context as TestDbManager; + if (db == null) return; + db.GetTable<ChildBaseForHeirarhy>().OfType<ChildForHeirarhy>() + .Select(ch => new ChildForHeirarhy() {Parent = ch.Parent}).ToList(); + }); + } [Test] public void LetTest1() @@ -424,6 +423,6 @@ from p in db.Parent select new { p } into p let chs = p.p.Children select new { p.p.ParentID, Count = chs.Count() })); - } + } } } diff --git a/UnitTests/Linq/BatchTest.cs b/UnitTests/Linq/BatchTest.cs index f7dfa0cd7..9e2fb5190 100644 --- a/UnitTests/Linq/BatchTest.cs +++ b/UnitTests/Linq/BatchTest.cs @@ -1,7 +1,8 @@ using System; -using System.Linq; -using BLToolkit.Data.DataProvider; +using BLToolkit.Data; using BLToolkit.Data.Linq; +using BLToolkit.DataAccess; +using BLToolkit.Mapping; using Data.Linq; using Data.Linq.Model; @@ -14,56 +15,72 @@ namespace Update public class BatchTest : TestBase { [Test] - public void Transaction() + public void Transaction([DataContexts(ExcludeLinqService = true)] string context) { - foreach (var provider in Providers) + using (var db = new TestDbManager(context)) { - using (var db = new TestDbManager(provider.Name)) + var list = new[] { - var list = new[] - { - new Parent { ParentID = 1111, Value1 = 1111 }, - new Parent { ParentID = 2111, Value1 = 2111 }, - new Parent { ParentID = 3111, Value1 = 3111 }, - new Parent { ParentID = 4111, Value1 = 4111 }, - }; + new Parent { ParentID = 1111, Value1 = 1111 }, + new Parent { ParentID = 2111, Value1 = 2111 }, + new Parent { ParentID = 3111, Value1 = 3111 }, + new Parent { ParentID = 4111, Value1 = 4111 }, + }; - foreach (var parent in list) - db.Parent.Delete(p => p.ParentID == parent.ParentID); + foreach (var parent in list) + db.Parent.Delete(p => p.ParentID == parent.ParentID); - db.BeginTransaction(); - db.InsertBatch(list); - db.CommitTransaction(); + db.BeginTransaction(); + db.InsertBatch(list); + db.CommitTransaction(); - foreach (var parent in list) - db.Parent.Delete(p => p.ParentID == parent.ParentID); - } + foreach (var parent in list) + db.Parent.Delete(p => p.ParentID == parent.ParentID); } } [Test] - public void NoTransaction() + public void NoTransaction([DataContexts(ExcludeLinqService=true)] string context) { - foreach (var provider in Providers) + using (var db = new TestDbManager(context)) { - using (var db = new TestDbManager(provider.Name)) + var list = new[] { - var list = new[] - { - new Parent { ParentID = 1111, Value1 = 1111 }, - new Parent { ParentID = 2111, Value1 = 2111 }, - new Parent { ParentID = 3111, Value1 = 3111 }, - new Parent { ParentID = 4111, Value1 = 4111 }, - }; + new Parent { ParentID = 1111, Value1 = 1111 }, + new Parent { ParentID = 2111, Value1 = 2111 }, + new Parent { ParentID = 3111, Value1 = 3111 }, + new Parent { ParentID = 4111, Value1 = 4111 }, + }; - foreach (var parent in list) - db.Parent.Delete(p => p.ParentID == parent.ParentID); + foreach (var parent in list) + db.Parent.Delete(p => p.ParentID == parent.ParentID); - db.InsertBatch(list); + db.InsertBatch(list); - foreach (var parent in list) - db.Parent.Delete(p => p.ParentID == parent.ParentID); - } + foreach (var parent in list) + db.Parent.Delete(p => p.ParentID == parent.ParentID); + } + } + + [TableName(Database="KanoonIr", Name="Area")] + public class Area + { + [ PrimaryKey(1)] public int AreaCode { get; set; } + public string AreaName { get; set; } + public int StateCode { get; set; } + [ PrimaryKey(2)] public int CityCode { get; set; } + public string Address { get; set; } + public string Tels { get; set; } + [Nullable ] public string WebSite { get; set; } + public bool IsActive { get; set; } + } + + [Test, ExpectedException(typeof(InvalidOperationException), ExpectedMessage="Cannot access destination table '[KanoonIr]..[Area]'.")] + public void Issue260([IncludeDataContexts("Sql2005")] string context) + { + using (var db = GetDataContext(context)) + { + ((DbManager)db).InsertBatch(new[] { new Area { AreaCode = 1 } }); } } } diff --git a/UnitTests/Linq/Common.cs b/UnitTests/Linq/Common.cs index afca567e8..160076b4e 100644 --- a/UnitTests/Linq/Common.cs +++ b/UnitTests/Linq/Common.cs @@ -107,6 +107,25 @@ public void ClientCoalesce2() from p in db.Parent select p.Value1 ?? GetDefault2(p.ParentID))); } + [Test] + public void CoalesceLike([DataContexts] string context) + { + using (var db = GetDataContext(context)) + AreEqual( + from p in Person + where + (p.FirstName == null ? (bool?)null : (bool?)p.FirstName.StartsWith("Jo")) == null ? + false : + (p.FirstName == null ? (bool?)null : p.FirstName.StartsWith("Jo")).Value + select p, + from p in db.Person + where + (p.FirstName == null ? (bool?)null : (bool?)p.FirstName.StartsWith("Jo")) == null ? + false : + (p.FirstName == null ? (bool?)null : p.FirstName.StartsWith("Jo")).Value + select p); + } + [Test] public void PreferServerFunc1() { @@ -145,7 +164,7 @@ public void ClosureTest() } [Test] - public void ExecuteTest() + public void ExecuteTest([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { diff --git a/UnitTests/Linq/CompileTest.cs b/UnitTests/Linq/CompileTest.cs index 994c31795..1a92932dc 100644 --- a/UnitTests/Linq/CompileTest.cs +++ b/UnitTests/Linq/CompileTest.cs @@ -27,16 +27,16 @@ public void CompiledTest1() } [Test] - public void CompiledTest2() + public void CompiledTest2([DataContexts] string context) { var query = CompiledQuery.Compile((ITestDataContext db, int n) => db.Child.Where(c => c.ParentID == n).Take(n)); - ForEachProvider(db => + using (var db = GetDataContext(context)) { Assert.AreEqual(1, query(db, 1).ToList().Count()); Assert.AreEqual(2, query(db, 2).ToList().Count()); - }); + } } [Test] @@ -110,7 +110,7 @@ public void ConcurentTest1() threads[i] = new Thread(() => { - using (var db = new TestDbManager("Sql2008")) + using (var db = new TestDbManager()) { var id = (n % 6) + 1; results[n,0] = id; diff --git a/UnitTests/Linq/ComplexTest.cs b/UnitTests/Linq/ComplexTest.cs index e2923a4cb..f66d7b74a 100644 --- a/UnitTests/Linq/ComplexTest.cs +++ b/UnitTests/Linq/ComplexTest.cs @@ -279,7 +279,7 @@ from g in o.Parent.GrandChildren } [Test] - public void ExpressionTest1() + public void ExpressionTest1([IncludeDataContexts("Northwind")] string context) { Expression<Func<Northwind.Customer,bool>> pred1 = cust=>cust.Country=="UK"; Expression<Func<Northwind.Customer,bool>> pred2 = cust=>cust.Country=="France"; diff --git a/UnitTests/Linq/ConcatUnionTest.cs b/UnitTests/Linq/ConcatUnionTest.cs index 7d2791e13..cbe5d013b 100644 --- a/UnitTests/Linq/ConcatUnionTest.cs +++ b/UnitTests/Linq/ConcatUnionTest.cs @@ -152,7 +152,7 @@ public void Concat6() } [Test] - public void Concat7() + public void Concat7([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) AreEqual( @@ -492,68 +492,68 @@ public abstract class AbstractParent } [Test] - public void UnionAbstract1() + public void UnionAbstract1([DataContexts] string context) { - ForEachProvider(db => + using (var db = GetDataContext(context)) { var list = db.GetTable<AbstractParent>().Union(db.GetTable<AbstractParent>()).ToList(); Assert.AreEqual(Parent.Count(), list.Count); - }); + } } [Test] - public void ObjectUnion1() + public void ObjectUnion1([DataContexts] string context) { - ForEachProvider( - db => AreEqual( + using (var db = GetDataContext(context)) + AreEqual( (from p1 in Parent where p1.ParentID > 3 select p1).Union( (from p2 in Parent where p2.ParentID <= 3 select p2)), (from p1 in db.Parent where p1.ParentID > 3 select p1).Union( - (from p2 in db.Parent where p2.ParentID <= 3 select p2)))); + (from p2 in db.Parent where p2.ParentID <= 3 select p2))); } - [Test] - public void ObjectUnion2() + //////[Test] + public void ObjectUnion2([DataContexts] string context) { - ForEachProvider( - db => AreEqual( + using (var db = GetDataContext(context)) + AreEqual( (from p1 in Parent where p1.ParentID > 3 select p1).Union( (from p2 in Parent where p2.ParentID <= 3 select (Parent)null)), (from p1 in db.Parent where p1.ParentID > 3 select p1).Union( - (from p2 in db.Parent where p2.ParentID <= 3 select (Parent)null)))); + (from p2 in db.Parent where p2.ParentID <= 3 select (Parent)null))); } [Test] - public void ObjectUnion3() + public void ObjectUnion3([DataContexts] string context) { - ForEachProvider( - db => AreEqual( + using (var db = GetDataContext(context)) + AreEqual( (from p1 in Parent where p1.ParentID > 3 select new { p = p1 }).Union( (from p2 in Parent where p2.ParentID <= 3 select new { p = p2 })), (from p1 in db.Parent where p1.ParentID > 3 select new { p = p1 }).Union( - (from p2 in db.Parent where p2.ParentID <= 3 select new { p = p2 })))); + (from p2 in db.Parent where p2.ParentID <= 3 select new { p = p2 }))); } - [Test] - public void ObjectUnion4() + //////[Test] + public void ObjectUnion4([DataContexts] string context) { - ForEachProvider( - db => AreEqual( + using (var db = GetDataContext(context)) + AreEqual( (from p1 in Parent where p1.ParentID > 3 select new { p = new { p = p1, p1.ParentID } }).Union( (from p2 in Parent where p2.ParentID <= 3 select new { p = new { p = p2, p2.ParentID } })), (from p1 in db.Parent where p1.ParentID > 3 select new { p = new { p = p1, p1.ParentID } }).Union( - (from p2 in db.Parent where p2.ParentID <= 3 select new { p = new { p = p2, p2.ParentID } })))); + (from p2 in db.Parent where p2.ParentID <= 3 select new { p = new { p = p2, p2.ParentID } }))); } - [Test] - public void ObjectUnion5() + //////[Test] + public void ObjectUnion5([DataContexts] string context) { - ForEachProvider( - db => AreEqual( + using (var db = GetDataContext(context)) + AreEqual( (from p1 in Parent where p1.ParentID > 3 select new { p = new { p = p1, ParentID = p1.ParentID + 1 } }).Union( (from p2 in Parent where p2.ParentID <= 3 select new { p = new { p = p2, ParentID = p2.ParentID + 1 } })), (from p1 in db.Parent where p1.ParentID > 3 select new { p = new { p = p1, ParentID = p1.ParentID + 1 } }).Union( - (from p2 in db.Parent where p2.ParentID <= 3 select new { p = new { p = p2, ParentID = p2.ParentID + 1 } })))); + (from p2 in db.Parent where p2.ParentID <= 3 select new { p = new { p = p2, ParentID = p2.ParentID + 1 } }))); } [Test] @@ -591,5 +591,43 @@ from c in g.DefaultIfEmpty() } } } + + public class TestEntity1 { public int Id; public string Field1; } + public class TestEntity2 { public int Id; public string Field1; } + + [Test] + public void Concat90() + { + using(var context = new TestDbManager()) + { + var join1 = + from t1 in context.GetTable<TestEntity1>() + join t2 in context.GetTable<TestEntity2>() + on t1.Id equals t2.Id + into tmp + from t2 in tmp.DefaultIfEmpty() + select new { t1, t2 }; + + var join1Sql = join1.ToString(); + Assert.IsNotNull(join1Sql); + + var join2 = + from t2 in context.GetTable<TestEntity2>() + join t1 in context.GetTable<TestEntity1>() + on t2.Id equals t1.Id + into tmp + from t1 in tmp.DefaultIfEmpty() + where t1 == null + select new { t1, t2 }; + + var join2Sql = join2.ToString(); + Assert.IsNotNull(join2Sql); + + var fullJoin = join1.Concat(join2); + + var fullJoinSql = fullJoin.ToString(); // BLToolkit.Data.Linq.LinqException : Types in Concat are constructed incompatibly. + Assert.IsNotNull(fullJoinSql); + } + } } } diff --git a/UnitTests/Linq/ConvertExpression.cs b/UnitTests/Linq/ConvertExpression.cs index 67d69c234..3d6d49736 100644 --- a/UnitTests/Linq/ConvertExpression.cs +++ b/UnitTests/Linq/ConvertExpression.cs @@ -202,11 +202,10 @@ public void Any4() [Test] - public void LetTest1() + public void LetTest1([DataContexts(ProviderName.SqlCe, ProviderName.Informix, ProviderName.Sybase)] string context) { - ForEachProvider( - new[] { ProviderName.SqlCe, ProviderName.Informix, ProviderName.Sybase }, - db => AreEqual( + using (var db = GetDataContext(context)) + AreEqual( from p in Parent let ch = p.Children where ch.FirstOrDefault() != null @@ -215,7 +214,7 @@ select ch.FirstOrDefault().ParentID from p in db.Parent let ch = p.Children where ch.FirstOrDefault() != null - select ch.FirstOrDefault().ParentID)); + select ch.FirstOrDefault().ParentID); } [Test] @@ -339,18 +338,18 @@ from p in Parent } ).Where(t => t.ParentID > 0) , - ( - from p in db.Parent - let ch1 = db.Child.Where(c => c.ParentID == p.ParentID) - let ch2 = ch1.Where(c => c.ChildID > -100) - select new - { - p.ParentID, - Any = ch2.Any(), - Count = ch2.Count(), - First1 = ch2.FirstOrDefault(c => c.ParentID > 0).ParentID, - First2 = ch2.FirstOrDefault() - } + ( + from p in db.Parent + let ch1 = db.Child.Where(c => c.ParentID == p.ParentID) + let ch2 = ch1.Where(c => c.ChildID > -100) + select new + { + p.ParentID, + Any = ch2.Any(), + Count = ch2.Count(), + First1 = ch2.FirstOrDefault(c => c.ParentID > 0).ParentID, + First2 = ch2.FirstOrDefault() + } ).Where(t => t.ParentID > 0))); BLToolkit.Common.Configuration.Linq.AllowMultipleQuery = false; @@ -486,12 +485,12 @@ from p in db.Parent } [Test] - public void LetTest11() + public void LetTest11([DataContexts] string context) { BLToolkit.Common.Configuration.Linq.AllowMultipleQuery = true; - ForEachProvider( - db => AreEqual( + using (var db = GetDataContext(context)) + AreEqual( from p in Parent let ch1 = Child.FirstOrDefault(c => c.ParentID > 0) let ch2 = Child.Where(c => c.ChildID > -100) @@ -508,7 +507,7 @@ from p in db.Parent { First1 = ch1 == null ? 0 : ch1.ParentID, First2 = ch2.FirstOrDefault() - })); + }); BLToolkit.Common.Configuration.Linq.AllowMultipleQuery = false; } diff --git a/UnitTests/Linq/ConvertTest.cs b/UnitTests/Linq/ConvertTest.cs index 79a91a584..09dcb918a 100644 --- a/UnitTests/Linq/ConvertTest.cs +++ b/UnitTests/Linq/ConvertTest.cs @@ -209,11 +209,12 @@ from p in from t in Types select (byte)t.MoneyValue where p > 0 select p, } [Test] - public void ConvertToByte() + public void ConvertToByte([DataContexts] string context) { - ForEachProvider(db => AreEqual( - from p in from t in Types select Convert.ToByte(t.MoneyValue) where p > 0 select p, - from p in from t in db.Types select Convert.ToByte(t.MoneyValue) where p > 0 select p)); + using (var db = GetDataContext(context)) + AreEqual( + from p in from t in Types select Convert.ToByte(t.MoneyValue) where p > 0 select p, + from p in from t in db.Types select Convert.ToByte(t.MoneyValue) where p > 0 select p); } #endregion @@ -361,11 +362,12 @@ from t in Types select Sql.Convert(Sql.Date, t.DateTimeValue.Year + "-01-01") } [Test] - public void ToSqlTime() + public void ToSqlTime([DataContexts(ProviderName.SQLite)] string context) { - ForEachProvider(new[] { ProviderName.SQLite }, db => AreEqual( - from t in Types select Sql.Convert(Sql.Time, t.DateTimeValue.Hour + ":01:01"), - from t in db.Types select Sql.Convert(Sql.Time, t.DateTimeValue.Hour + ":01:01"))); + using (var db = GetDataContext(context)) + AreEqual( + from t in Types select Sql.Convert(Sql.Time, t.DateTimeValue.Hour + ":01:01"), + from t in db.Types select Sql.Convert(Sql.Time, t.DateTimeValue.Hour + ":01:01")); } DateTime ToDateTime(DateTimeOffset dto) @@ -412,7 +414,7 @@ from t in Types select Sql.Convert(Sql.Char(20), t.MoneyValue).Trim(' ', '0', [Test] public void ToDefaultChar() { - ForEachProvider(new[] { "Oracle", ProviderName.Firebird, ProviderName.PostgreSQL }, db => AreEqual( + ForEachProvider(new[] { "Oracle", "DevartOracle", ProviderName.Firebird, ProviderName.PostgreSQL }, db => AreEqual( from t in Types select Sql.Convert(Sql.DefaultChar, t.MoneyValue).Trim(' ', '0', '.'), from t in db.Types select Sql.Convert(Sql.DefaultChar, t.MoneyValue).Trim(' ', '0', '.'))); } @@ -428,7 +430,7 @@ from t in Types select Sql.Convert(Sql.VarChar(20), t.MoneyValue).Trim(' ', ' [Test] public void ToDefaultVarChar() { - ForEachProvider(new[] { "Oracle", ProviderName.Firebird, ProviderName.PostgreSQL }, db => AreEqual( + ForEachProvider(new[] { "Oracle", "DevartOracle", ProviderName.Firebird, ProviderName.PostgreSQL }, db => AreEqual( from t in Types select Sql.Convert(Sql.DefaultVarChar, t.MoneyValue).Trim(' ', '0', '.'), from t in db.Types select Sql.Convert(Sql.DefaultVarChar, t.MoneyValue).Trim(' ', '0', '.'))); } @@ -444,7 +446,7 @@ from t in Types select Sql.Convert(Sql.NChar(20), t.MoneyValue).Trim(' ', '0' [Test] public void ToDefaultNChar() { - ForEachProvider(new[] { "Oracle", ProviderName.Firebird, ProviderName.PostgreSQL }, db => AreEqual( + ForEachProvider(new[] { "Oracle", "DevartOracle", ProviderName.Firebird, ProviderName.PostgreSQL }, db => AreEqual( from t in Types select Sql.Convert(Sql.DefaultNChar, t.MoneyValue).Trim(' ', '0', '.'), from t in db.Types select Sql.Convert(Sql.DefaultNChar, t.MoneyValue).Trim(' ', '0', '.'))); } @@ -460,7 +462,7 @@ from t in Types select Sql.Convert(Sql.NVarChar(20), t.MoneyValue).Trim(' ', [Test] public void ToDefaultNVarChar() { - ForEachProvider(new[] { "Oracle", ProviderName.Firebird, ProviderName.PostgreSQL }, db => AreEqual( + ForEachProvider(new[] { "Oracle", "DevartOracle", ProviderName.Firebird, ProviderName.PostgreSQL }, db => AreEqual( from t in Types select Sql.Convert(Sql.DefaultNVarChar, t.MoneyValue).Trim(' ', '0', '.'), from t in db.Types select Sql.Convert(Sql.DefaultNVarChar, t.MoneyValue).Trim(' ', '0', '.'))); } diff --git a/UnitTests/Linq/CountTest.cs b/UnitTests/Linq/CountTest.cs index 722b77cc6..584cbea2d 100644 --- a/UnitTests/Linq/CountTest.cs +++ b/UnitTests/Linq/CountTest.cs @@ -67,9 +67,9 @@ public void Count7() } [Test] - public void SubQueryCount() + public void SubQueryCount([IncludeDataContexts("Sql2008", "Sql2012")] string context) { - using (var db = new TestDbManager()) + using (var db = new TestDbManager(context)) { AreEqual( from p in Parent @@ -149,21 +149,22 @@ from ch in db.Child [Test] - public void GroupBy21() + public void GroupBy21([DataContexts] string context) { var n = 1; - ForEachProvider(db => AreEqual( - from ch in - from ch in Child select new { ParentID = ch.ParentID + 1, ch.ChildID } - where ch.ParentID + 1 > n - group ch by ch into g - select g.Count(p => p.ParentID < 3), - from ch in - from ch in db.Child select new { ParentID = ch.ParentID + 1, ch.ChildID } - where ch.ParentID + 1 > n - group ch by ch into g - select g.Count(p => p.ParentID < 3))); + using (var db = GetDataContext(context)) + AreEqual( + from ch in + from ch in Child select new { ParentID = ch.ParentID + 1, ch.ChildID } + where ch.ParentID + 1 > n + group ch by ch into g + select g.Count(p => p.ParentID < 3), + from ch in + from ch in db.Child select new { ParentID = ch.ParentID + 1, ch.ChildID } + where ch.ParentID + 1 > n + group ch by ch into g + select g.Count(p => p.ParentID < 3)); } [Test] @@ -189,7 +190,7 @@ where ch.ParentID + 1 > n [Test] public void GroupBy23() { - ForEachProvider(new[] { ProviderName.SqlCe, "Oracle", ProviderName.Sybase, ProviderName.Access }, db => AreEqual( + ForEachProvider(new[] { ProviderName.SqlCe, "Oracle", "DevartOracle", "Sql2000", ProviderName.Sybase, ProviderName.Access }, db => AreEqual( from p in from p in Parent select new { ParentID = p.ParentID + 1, p.Value1 } where p.ParentID + 1 > 1 diff --git a/UnitTests/Linq/CreateData.cs b/UnitTests/Linq/CreateData.cs index f74239d4c..357d343c8 100644 --- a/UnitTests/Linq/CreateData.cs +++ b/UnitTests/Linq/CreateData.cs @@ -64,18 +64,18 @@ static void RunScript(string configString, string divider, string name) db.InsertBatch(new[] { - new LinqDataTypes { ID = 1, MoneyValue = 1.11m, DateTimeValue = new DateTime(2001, 1, 11, 1, 11, 21, 100), BoolValue = true, GuidValue = new Guid("ef129165-6ffe-4df9-bb6b-bb16e413c883"), SmallIntValue = 1 }, - new LinqDataTypes { ID = 2, MoneyValue = 2.49m, DateTimeValue = new DateTime(2005, 5, 15, 5, 15, 25, 500), BoolValue = false, GuidValue = new Guid("bc663a61-7b40-4681-ac38-f9aaf55b706b"), SmallIntValue = 2 }, - new LinqDataTypes { ID = 3, MoneyValue = 3.99m, DateTimeValue = new DateTime(2009, 9, 19, 9, 19, 29, 90), BoolValue = true, GuidValue = new Guid("d2f970c0-35ac-4987-9cd5-5badb1757436"), SmallIntValue = 3 }, - new LinqDataTypes { ID = 4, MoneyValue = 4.50m, DateTimeValue = new DateTime(2009, 9, 20, 9, 19, 29, 90), BoolValue = false, GuidValue = new Guid("40932fdb-1543-4e4a-ac2c-ca371604fb4b"), SmallIntValue = 4 }, - new LinqDataTypes { ID = 5, MoneyValue = 5.50m, DateTimeValue = new DateTime(2009, 9, 21, 9, 19, 29, 90), BoolValue = true, GuidValue = new Guid("febe3eca-cb5f-40b2-ad39-2979d312afca"), SmallIntValue = 5 }, - new LinqDataTypes { ID = 6, MoneyValue = 6.55m, DateTimeValue = new DateTime(2009, 9, 22, 9, 19, 29, 90), BoolValue = false, GuidValue = new Guid("8d3c5d1d-47db-4730-9fe7-968f6228a4c0"), SmallIntValue = 6 }, - new LinqDataTypes { ID = 7, MoneyValue = 7.00m, DateTimeValue = new DateTime(2009, 9, 23, 9, 19, 29, 90), BoolValue = true, GuidValue = new Guid("48094115-83af-46dd-a906-bff26ee21ee2"), SmallIntValue = 7 }, - new LinqDataTypes { ID = 8, MoneyValue = 8.99m, DateTimeValue = new DateTime(2009, 9, 24, 9, 19, 29, 90), BoolValue = false, GuidValue = new Guid("c1139f1f-1335-4cd4-937e-92602f732dd3"), SmallIntValue = 8 }, - new LinqDataTypes { ID = 9, MoneyValue = 9.63m, DateTimeValue = new DateTime(2009, 9, 25, 9, 19, 29, 90), BoolValue = true, GuidValue = new Guid("46c5c512-3d4b-4cf7-b4e7-1de080789e5d"), SmallIntValue = 9 }, - new LinqDataTypes { ID = 10, MoneyValue = 10.77m, DateTimeValue = new DateTime(2009, 9, 26, 9, 19, 29, 90), BoolValue = false, GuidValue = new Guid("61b2bc55-147f-4b40-93ed-a4aa83602fee"), SmallIntValue = 10 }, - new LinqDataTypes { ID = 11, MoneyValue = 11.45m, DateTimeValue = new DateTime(2009, 9, 27, 9, 19, 29, 90), BoolValue = true, GuidValue = new Guid("d3021d18-97f0-4dc0-98d0-f0c7df4a1230"), SmallIntValue = 11 }, - new LinqDataTypes { ID = 12, MoneyValue = 11.45m, DateTimeValue = new DateTime(2012, 11, 7, 19, 19, 29, 90), BoolValue = true, GuidValue = new Guid("03021d18-97f0-4dc0-98d0-f0c7df4a1230"), SmallIntValue = 12 }, + new LinqDataTypes { ID = 1, MoneyValue = 1.11m, DateTimeValue = new DateTime(2001, 1, 11, 1, 11, 21, 100), BoolValue = true, GuidValue = new Guid("ef129165-6ffe-4df9-bb6b-bb16e413c883"), SmallIntValue = 1 }, + new LinqDataTypes { ID = 2, MoneyValue = 2.49m, DateTimeValue = new DateTime(2005, 5, 15, 5, 15, 25, 500), BoolValue = false, GuidValue = new Guid("bc663a61-7b40-4681-ac38-f9aaf55b706b"), SmallIntValue = 2 }, + new LinqDataTypes { ID = 3, MoneyValue = 3.99m, DateTimeValue = new DateTime(2009, 9, 19, 9, 19, 29, 90), BoolValue = true, GuidValue = new Guid("d2f970c0-35ac-4987-9cd5-5badb1757436"), SmallIntValue = 3 }, + new LinqDataTypes { ID = 4, MoneyValue = 4.50m, DateTimeValue = new DateTime(2009, 9, 20, 9, 19, 29, 90), BoolValue = false, GuidValue = new Guid("40932fdb-1543-4e4a-ac2c-ca371604fb4b"), SmallIntValue = 4 }, + new LinqDataTypes { ID = 5, MoneyValue = 5.50m, DateTimeValue = new DateTime(2009, 9, 21, 9, 19, 29, 90), BoolValue = true, GuidValue = new Guid("febe3eca-cb5f-40b2-ad39-2979d312afca"), SmallIntValue = 5 }, + new LinqDataTypes { ID = 6, MoneyValue = 6.55m, DateTimeValue = new DateTime(2009, 9, 22, 9, 19, 29, 90), BoolValue = false, GuidValue = new Guid("8d3c5d1d-47db-4730-9fe7-968f6228a4c0"), SmallIntValue = 6 }, + new LinqDataTypes { ID = 7, MoneyValue = 7.00m, DateTimeValue = new DateTime(2009, 9, 23, 9, 19, 29, 90), BoolValue = true, GuidValue = new Guid("48094115-83af-46dd-a906-bff26ee21ee2"), SmallIntValue = 7 }, + new LinqDataTypes { ID = 8, MoneyValue = 8.99m, DateTimeValue = new DateTime(2009, 9, 24, 9, 19, 29, 90), BoolValue = false, GuidValue = new Guid("c1139f1f-1335-4cd4-937e-92602f732dd3"), SmallIntValue = 8 }, + new LinqDataTypes { ID = 9, MoneyValue = 9.63m, DateTimeValue = new DateTime(2009, 9, 25, 9, 19, 29, 90), BoolValue = true, GuidValue = new Guid("46c5c512-3d4b-4cf7-b4e7-1de080789e5d"), SmallIntValue = 9 }, + new LinqDataTypes { ID = 10, MoneyValue = 10.77m, DateTimeValue = new DateTime(2009, 9, 26, 9, 19, 29, 90), BoolValue = false, GuidValue = new Guid("61b2bc55-147f-4b40-93ed-a4aa83602fee"), SmallIntValue = 10 }, + new LinqDataTypes { ID = 11, MoneyValue = 11.45m, DateTimeValue = new DateTime(2009, 9, 27, 9, 19, 29, 90), BoolValue = true, GuidValue = new Guid("d3021d18-97f0-4dc0-98d0-f0c7df4a1230"), SmallIntValue = 11 }, + new LinqDataTypes { ID = 12, MoneyValue = 11.45m, DateTimeValue = new DateTime(2012, 11, 7, 19, 19, 29, 90), BoolValue = true, GuidValue = new Guid("03021d18-97f0-4dc0-98d0-f0c7df4a1230"), SmallIntValue = 12 }, }); db.InsertBatch(new[] @@ -138,23 +138,22 @@ static void RunScript(string configString, string divider, string name) } } -#if !MOBILE - [Test] public void DB2 () { RunScript(ProviderName.DB2, "\nGO\n", "DB2"); } - [Test] public void Informix () { RunScript(ProviderName.Informix, "\nGO\n", "Informix"); } - [Test] public void Oracle () { RunScript("Oracle", "\n/\n", "Oracle"); } - [Test] public void Firebird () { RunScript(ProviderName.Firebird, "COMMIT;", "Firebird2"); } - [Test] public void PostgreSQL() { RunScript(ProviderName.PostgreSQL, "\nGO\n", "PostgreSQL"); } - [Test] public void MySql () { RunScript(ProviderName.MySql, "\nGO\n", "MySql"); } - [Test] public void Sql2005 () { RunScript("Sql2005", "\nGO\n", "MsSql"); } - [Test] public void Sybase () { RunScript(ProviderName.Sybase, "\nGO\n", "Sybase"); } -#endif - - [Test] public void Sql2008 () { RunScript("Sql2008", "\nGO\n", "MsSql"); } - [Test] public void SqlCe () { RunScript(ProviderName.SqlCe, "\nGO\n", "SqlCe"); } - [Test] public void SqlCeData () { RunScript(ProviderName.SqlCe + ".Data", "\nGO\n", "SqlCe"); } - [Test] public void SQLite () { RunScript(ProviderName.SQLite, "\nGO\n", "SQLite"); } - [Test] public void SQLiteData() { RunScript(ProviderName.SQLite + ".Data", "\nGO\n", "SQLite"); } - [Test] public void Access () { RunScript(ProviderName.Access, "\nGO\n", "Access"); } - [Test] public void AccessData() { RunScript(ProviderName.Access + ".Data", "\nGO\n", "Access"); } + [Test] public void DB2 ([IncludeDataContexts(ProviderName.DB2 )] string context) { RunScript(context, "\nGO\n", "DB2"); } + [Test] public void Informix ([IncludeDataContexts(ProviderName.Informix )] string context) { RunScript(context, "\nGO\n", "Informix"); } + [Test] public void Oracle ([IncludeDataContexts("Oracle" )] string context) { RunScript(context, "\n/\n", "Oracle"); } + [Test] public void Firebird ([IncludeDataContexts(ProviderName.Firebird )] string context) { RunScript(context, "COMMIT;", "Firebird2"); } + [Test] public void PostgreSQL([IncludeDataContexts(ProviderName.PostgreSQL)] string context) { RunScript(context, "\nGO\n", "PostgreSQL"); } + [Test] public void MySql ([IncludeDataContexts(ProviderName.MySql )] string context) { RunScript(context, "\nGO\n", "MySql"); } + [Test] public void Sql2000 ([IncludeDataContexts("Sql2000" )] string context) { RunScript(context, "\nGO\n", "MsSql2000"); } + [Test] public void Sql2005 ([IncludeDataContexts("Sql2005" )] string context) { RunScript(context, "\nGO\n", "MsSql"); } + [Test] public void Sql2008 ([IncludeDataContexts("Sql2008" )] string context) { RunScript(context, "\nGO\n", "MsSql"); } + [Test] public void Sql2012 ([IncludeDataContexts("Sql2012" )] string context) { RunScript(context, "\nGO\n", "MsSql"); } + [Test] public void SqlCe ([IncludeDataContexts(ProviderName.SqlCe )] string context) { RunScript(context, "\nGO\n", "SqlCe"); } + [Test] public void SqlCeData ([IncludeDataContexts(ProviderName.SqlCe )] string context) { RunScript(context + ".Data", "\nGO\n", "SqlCe"); } + [Test] public void SQLite ([IncludeDataContexts(ProviderName.SQLite )] string context) { RunScript(context, "\nGO\n", "SQLite"); } + [Test] public void SQLiteData([IncludeDataContexts(ProviderName.SQLite )] string context) { RunScript(context + ".Data", "\nGO\n", "SQLite"); } + [Test] public void Access ([IncludeDataContexts(ProviderName.Access )] string context) { RunScript(context, "\nGO\n", "Access"); } + [Test] public void AccessData([IncludeDataContexts(ProviderName.Access )] string context) { RunScript(context + ".Data", "\nGO\n", "Access"); } + [Test] public void Sybase ([IncludeDataContexts(ProviderName.Sybase )] string context) { RunScript(context, "\nGO\n", "Sybase"); } } } diff --git a/UnitTests/Linq/DataContextTest.cs b/UnitTests/Linq/DataContextTest.cs index 05690500e..071932d9f 100644 --- a/UnitTests/Linq/DataContextTest.cs +++ b/UnitTests/Linq/DataContextTest.cs @@ -1,10 +1,11 @@ using System; using System.Linq; -using NUnit.Framework; - +using BLToolkit.Data.DataProvider; using BLToolkit.Data.Linq; +using NUnit.Framework; + namespace Data.Linq { using Model; @@ -15,7 +16,7 @@ public class DataContextTest [Test] public void TestContext() { - var ctx = new DataContext("Sql2008"); + var ctx = new DataContext(ProviderName.Access); ctx.GetTable<Person>().ToList(); @@ -42,7 +43,7 @@ public void TestContext() [Test] public void TestContextToString() { - using (var ctx = new DataContext("Sql2008")) + using (var ctx = new DataContext(ProviderName.Access)) { Console.WriteLine(ctx.GetTable<Person>().ToString()); diff --git a/UnitTests/Linq/DataServiceTest.cs b/UnitTests/Linq/DataServiceTest.cs index d0665185b..864ae105e 100644 --- a/UnitTests/Linq/DataServiceTest.cs +++ b/UnitTests/Linq/DataServiceTest.cs @@ -17,8 +17,6 @@ public void Test1() { var ds = new DataService<NorthwindDB>(); var mp = ds.GetService(typeof(IDataServiceMetadataProvider)); - - } } } diff --git a/UnitTests/Linq/DateTimeFunctions.cs b/UnitTests/Linq/DateTimeFunctions.cs index d3210229e..1a5b3ad33 100644 --- a/UnitTests/Linq/DateTimeFunctions.cs +++ b/UnitTests/Linq/DateTimeFunctions.cs @@ -232,11 +232,14 @@ static TimeSpan TruncMiliseconds(TimeSpan ts) } [Test] - public void TimeOfDay() + public void TimeOfDay([DataContexts] string context) { - ForEachProvider(db => AreEqual( - from t in Types select TruncMiliseconds(Sql.AsSql(t.DateTimeValue.TimeOfDay)), - from t in db.Types select TruncMiliseconds(Sql.AsSql(t.DateTimeValue.TimeOfDay)))); + using (var db = GetDataContext(context)) + { + AreEqual( + from t in Types select TruncMiliseconds(Sql.AsSql(t.DateTimeValue.TimeOfDay)), + from t in db.Types select TruncMiliseconds(Sql.AsSql(t.DateTimeValue.TimeOfDay))); + } } #endregion @@ -393,7 +396,7 @@ public void AddMilliseconds() public void SubDateDay() { ForEachProvider( - new[] { ProviderName.Informix, "Oracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, + new[] { ProviderName.Informix, "Oracle", "DevartOracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, db => AreEqual( from t in Types select (int)(t.DateTimeValue.AddHours(100) - t.DateTimeValue).TotalDays, from t in db.Types select (int)Sql.AsSql((t.DateTimeValue.AddHours(100) - t.DateTimeValue).TotalDays))); @@ -403,7 +406,7 @@ from t in Types select (int)(t.DateTimeValue.AddHours(100) - t.Date public void DateDiffDay() { ForEachProvider( - new[] { ProviderName.Informix, "Oracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, + new[] { ProviderName.Informix, "Oracle", "DevartOracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, db => AreEqual( from t in Types select Sql.DateDiff(Sql.DateParts.Day, t.DateTimeValue, t.DateTimeValue.AddHours(100)), from t in db.Types select Sql.AsSql(Sql.DateDiff(Sql.DateParts.Day, t.DateTimeValue, t.DateTimeValue.AddHours(100))))); @@ -413,7 +416,7 @@ from t in Types select Sql.DateDiff(Sql.DateParts.Day, t.DateTimeVa public void SubDateHour() { ForEachProvider( - new[] { ProviderName.Informix, "Oracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, + new[] { ProviderName.Informix, "Oracle", "DevartOracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, db => AreEqual( from t in Types select (int)(t.DateTimeValue.AddHours(100) - t.DateTimeValue).TotalHours, from t in db.Types select (int)Sql.AsSql((t.DateTimeValue.AddHours(100) - t.DateTimeValue).TotalHours))); @@ -423,7 +426,7 @@ from t in Types select (int)(t.DateTimeValue.AddHours(100) - t.Date public void DateDiffHour() { ForEachProvider( - new[] { ProviderName.Informix, "Oracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, + new[] { ProviderName.Informix, "Oracle", "DevartOracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, db => AreEqual( from t in Types select Sql.DateDiff(Sql.DateParts.Hour, t.DateTimeValue, t.DateTimeValue.AddHours(100)), from t in db.Types select Sql.AsSql(Sql.DateDiff(Sql.DateParts.Hour, t.DateTimeValue, t.DateTimeValue.AddHours(100))))); @@ -433,7 +436,7 @@ from t in Types select Sql.DateDiff(Sql.DateParts.Hour, t.DateTimeV public void SubDateMinute() { ForEachProvider( - new[] { ProviderName.Informix, "Oracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, + new[] { ProviderName.Informix, "Oracle", "DevartOracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, db => AreEqual( from t in Types select (int)(t.DateTimeValue.AddMinutes(100) - t.DateTimeValue).TotalMinutes, from t in db.Types select (int)Sql.AsSql((t.DateTimeValue.AddMinutes(100) - t.DateTimeValue).TotalMinutes))); @@ -443,7 +446,7 @@ from t in Types select (int)(t.DateTimeValue.AddMinutes(100) - t.Da public void DateDiffMinute() { ForEachProvider( - new[] { ProviderName.Informix, "Oracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, + new[] { ProviderName.Informix, "Oracle", "DevartOracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, db => AreEqual( from t in Types select Sql.DateDiff(Sql.DateParts.Minute, t.DateTimeValue, t.DateTimeValue.AddMinutes(100)), from t in db.Types select Sql.AsSql(Sql.DateDiff(Sql.DateParts.Minute, t.DateTimeValue, t.DateTimeValue.AddMinutes(100))))); @@ -453,7 +456,7 @@ from t in Types select Sql.DateDiff(Sql.DateParts.Minute, t.DateTim public void SubDateSecond() { ForEachProvider( - new[] { ProviderName.Informix, "Oracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, + new[] { ProviderName.Informix, "Oracle", "DevartOracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, db => AreEqual( from t in Types select (int)(t.DateTimeValue.AddMinutes(100) - t.DateTimeValue).TotalSeconds, from t in db.Types select (int)Sql.AsSql((t.DateTimeValue.AddMinutes(100) - t.DateTimeValue).TotalSeconds))); @@ -463,7 +466,7 @@ from t in Types select (int)(t.DateTimeValue.AddMinutes(100) - t.Da public void DateDiffSecond() { ForEachProvider( - new[] { ProviderName.Informix, "Oracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, + new[] { ProviderName.Informix, "Oracle", "DevartOracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, db => AreEqual( from t in Types select Sql.DateDiff(Sql.DateParts.Second, t.DateTimeValue, t.DateTimeValue.AddMinutes(100)), from t in db.Types select Sql.AsSql(Sql.DateDiff(Sql.DateParts.Second, t.DateTimeValue, t.DateTimeValue.AddMinutes(100))))); @@ -473,7 +476,7 @@ from t in Types select Sql.DateDiff(Sql.DateParts.Second, t.DateTim public void SubDateMillisecond() { ForEachProvider( - new[] { ProviderName.Informix, "Oracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, + new[] { ProviderName.Informix, "Oracle", "DevartOracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, db => AreEqual( from t in Types select (int)(t.DateTimeValue.AddSeconds(1) - t.DateTimeValue).TotalMilliseconds, from t in db.Types select (int)Sql.AsSql((t.DateTimeValue.AddSeconds(1) - t.DateTimeValue).TotalMilliseconds))); @@ -483,7 +486,7 @@ from t in Types select (int)(t.DateTimeValue.AddSeconds(1) - t.Date public void DateDiffMillisecond() { ForEachProvider( - new[] { ProviderName.Informix, "Oracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, + new[] { ProviderName.Informix, "Oracle", "DevartOracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, db => AreEqual( from t in Types select Sql.DateDiff(Sql.DateParts.Millisecond, t.DateTimeValue, t.DateTimeValue.AddSeconds(1)), from t in db.Types select Sql.AsSql(Sql.DateDiff(Sql.DateParts.Millisecond, t.DateTimeValue, t.DateTimeValue.AddSeconds(1))))); diff --git a/UnitTests/Linq/DefaultDataProviders.txt b/UnitTests/Linq/DefaultDataProviders.txt new file mode 100644 index 000000000..ffcdc6e91 --- /dev/null +++ b/UnitTests/Linq/DefaultDataProviders.txt @@ -0,0 +1,19 @@ +-- This file defines data providers loaded by default for all users. +-- Copy this file as UserDataProviders.txt and uncomment providers you need to work on. +-- UserDataProviders.txt is in .gitignore and it is not committed to the repository. + +Access +SqlCe +SQLite +--DB2 +--Fdp +--Informix +--Sql2000 +--Sql2005 +--Sql2008 +--Sql2012 +--MySql +--Oracle +--PostgreSQL +--Sybase +--Northwind diff --git a/UnitTests/Linq/DeleteTest.cs b/UnitTests/Linq/DeleteTest.cs new file mode 100644 index 000000000..e5f5a7d6a --- /dev/null +++ b/UnitTests/Linq/DeleteTest.cs @@ -0,0 +1,272 @@ +using System; +using System.Linq; + +using BLToolkit.Data.DataProvider; +using BLToolkit.Data.Linq; + +using NUnit.Framework; + +using Data.Linq; +using Data.Linq.Model; + +#region ReSharper disable +// ReSharper disable ConvertToConstant.Local +// ReSharper disable CheckNamespace +#endregion + +namespace Update +{ + [TestFixture] + public class DeleteTest : TestBase + { + [Test] + public void Delete1() + { + ForEachProvider(db => + { + var parent = new Parent1 { ParentID = 1001, Value1 = 1001 }; + + db.Delete(parent); + + try + { + db.Insert(parent); + + Assert.AreEqual(1, db.Parent.Count (p => p.ParentID == parent.ParentID)); + Assert.AreEqual(1, db.Parent.Delete(p => p.ParentID == parent.ParentID)); + Assert.AreEqual(0, db.Parent.Count (p => p.ParentID == parent.ParentID)); + } + finally + { + db.Delete(parent); + } + }); + } + + [Test] + public void Delete2() + { + ForEachProvider(db => + { + var parent = new Parent1 { ParentID = 1001, Value1 = 1001 }; + + db.Delete(parent); + + try + { + db.Insert(parent); + + Assert.AreEqual(1, db.Parent.Count(p => p.ParentID == parent.ParentID)); + Assert.AreEqual(1, db.Parent.Where(p => p.ParentID == parent.ParentID).Delete()); + Assert.AreEqual(0, db.Parent.Count(p => p.ParentID == parent.ParentID)); + } + finally + { + db.Delete(parent); + } + }); + } + + [Test] + public void Delete3() + { + ForEachProvider(new[] { ProviderName.Informix }, db => + { + db.Child.Delete(c => new[] { 1001, 1002 }.Contains(c.ChildID)); + + try + { + db.Child.Insert(() => new Child { ParentID = 1, ChildID = 1001 }); + db.Child.Insert(() => new Child { ParentID = 1, ChildID = 1002 }); + + Assert.AreEqual(3, db.Child.Count(c => c.ParentID == 1)); + Assert.AreEqual(2, db.Child.Where(c => c.Parent.ParentID == 1 && new[] { 1001, 1002 }.Contains(c.ChildID)).Delete()); + Assert.AreEqual(1, db.Child.Count(c => c.ParentID == 1)); + } + finally + { + db.Child.Delete(c => new[] { 1001, 1002 }.Contains(c.ChildID)); + } + }); + } + + [Test] + public void Delete4() + { + ForEachProvider(new[] { ProviderName.Informix }, db => + { + db.GrandChild1.Delete(gc => new[] { 1001, 1002 }.Contains(gc.GrandChildID.Value)); + + try + { + db.GrandChild.Insert(() => new GrandChild { ParentID = 1, ChildID = 1, GrandChildID = 1001 }); + db.GrandChild.Insert(() => new GrandChild { ParentID = 1, ChildID = 2, GrandChildID = 1002 }); + + Assert.AreEqual(3, db.GrandChild1.Count(gc => gc.ParentID == 1)); + Assert.AreEqual(2, db.GrandChild1.Where(gc => gc.Parent.ParentID == 1 && new[] { 1001, 1002 }.Contains(gc.GrandChildID.Value)).Delete()); + Assert.AreEqual(1, db.GrandChild1.Count(gc => gc.ParentID == 1)); + } + finally + { + db.GrandChild1.Delete(gc => new[] { 1001, 1002 }.Contains(gc.GrandChildID.Value)); + } + }); + } + + [Test] + public void Delete5() + { + ForEachProvider(db => + { + var values = new[] { 1001, 1002 }; + + db.Parent.Delete(_ => _.ParentID > 1000); + + try + { + db.Parent.Insert(() => new Parent { ParentID = values[0], Value1 = 1 }); + db.Parent.Insert(() => new Parent { ParentID = values[1], Value1 = 1 }); + + Assert.AreEqual(2, db.Parent.Count(_ => _.ParentID > 1000)); + Assert.AreEqual(2, db.Parent.Delete(_ => values.Contains(_.ParentID))); + Assert.AreEqual(0, db.Parent.Count(_ => _.ParentID > 1000)); + } + finally + { + db.Parent.Delete(_ => _.ParentID > 1000); + } + }); + } + + [Test] + public void AlterDelete([DataContexts(ProviderName.Informix, ExcludeLinqService=true)] string context) + { + using (var db = GetDataContext(context)) + { + var q = + from p in db.Parent + join ch in db.Child on p.ParentID equals ch.ParentID into lj1 + from ch in lj1.DefaultIfEmpty() + where ch != null && ch.ParentID == -1 || ch == null && p.ParentID == -1 + select p; + + q.Delete(); + + var sql = ((TestDbManager)db).LastQuery; + + if (sql.Contains("EXISTS")) + Assert.That(sql.IndexOf("(("), Is.GreaterThan(0)); + } + } + + [Test] + public void DeleteMany1([DataContexts( + ProviderName.Access, ProviderName.DB2, ProviderName.Informix, "Oracle", + ProviderName.PostgreSQL, ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Firebird + )] string context) + { + using (var db = GetDataContext(context)) + { + db.Parent.Insert(() => new Parent { ParentID = 1001 }); + db.Child. Insert(() => new Child { ParentID = 1001, ChildID = 1 }); + db.Child. Insert(() => new Child { ParentID = 1001, ChildID = 2 }); + + try + { + var q = + from p in db.Parent + where p.ParentID >= 1000 + select p; + + var n = q.SelectMany(p => p.Children).Delete(); + + Assert.That(n, Is.GreaterThanOrEqualTo(2)); + } + finally + { + db.Child. Delete(c => c.ParentID >= 1000); + db.Parent.Delete(c => c.ParentID >= 1000); + } + } + } + + [Test] + public void DeleteMany2([DataContexts( + ProviderName.Access, ProviderName.DB2, ProviderName.Informix, "Oracle", + ProviderName.PostgreSQL, ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Firebird + )] string context) + { + using (var db = GetDataContext(context)) + { + db.Parent. Insert(() => new Parent { ParentID = 1001 }); + db.Child. Insert(() => new Child { ParentID = 1001, ChildID = 1 }); + db.GrandChild.Insert(() => new GrandChild { ParentID = 1001, ChildID = 1, GrandChildID = 1}); + db.GrandChild.Insert(() => new GrandChild { ParentID = 1001, ChildID = 1, GrandChildID = 2}); + db.GrandChild.Insert(() => new GrandChild { ParentID = 1001, ChildID = 1, GrandChildID = 3}); + db.Child. Insert(() => new Child { ParentID = 1001, ChildID = 2 }); + db.GrandChild.Insert(() => new GrandChild { ParentID = 1001, ChildID = 2, GrandChildID = 1}); + db.GrandChild.Insert(() => new GrandChild { ParentID = 1001, ChildID = 2, GrandChildID = 2}); + db.GrandChild.Insert(() => new GrandChild { ParentID = 1001, ChildID = 2, GrandChildID = 3}); + + try + { + var q = + from p in db.Parent + where p.ParentID >= 1000 + select p; + + var n1 = q.SelectMany(p => p.Children.SelectMany(c => c.GrandChildren)).Delete(); + var n2 = q.SelectMany(p => p.Children). Delete(); + + Assert.That(n1, Is.EqualTo(6)); + Assert.That(n2, Is.EqualTo(2)); + } + finally + { + db.GrandChild.Delete(c => c.ParentID >= 1000); + db.Child. Delete(c => c.ParentID >= 1000); + db.Parent. Delete(c => c.ParentID >= 1000); + } + } + } + + [Test] + public void DeleteMany3([DataContexts( + ProviderName.Access, ProviderName.DB2, ProviderName.Informix, "Oracle", + ProviderName.PostgreSQL, ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Firebird + )] string context) + { + var ids = new[] { 1001 }; + + using (var db = GetDataContext(context)) + { + db.GrandChild.Delete(c => c.ParentID >= 1000); + db.Child. Delete(c => c.ParentID >= 1000); + db.Parent. Delete(c => c.ParentID >= 1000); + + db.Parent. Insert(() => new Parent { ParentID = 1001 }); + db.Child. Insert(() => new Child { ParentID = 1001, ChildID = 1 }); + db.GrandChild.Insert(() => new GrandChild { ParentID = 1001, ChildID = 1, GrandChildID = 1}); + db.GrandChild.Insert(() => new GrandChild { ParentID = 1001, ChildID = 1, GrandChildID = 2}); + + try + { + var q = + from p in db.Parent + where ids.Contains(p.ParentID) + select p; + + var n1 = q.SelectMany(p => p.Children).SelectMany(gc => gc.GrandChildren).Delete(); + + Assert.That(n1, Is.EqualTo(2)); + } + finally + { + db.GrandChild.Delete(c => c.ParentID >= 1000); + db.Child. Delete(c => c.ParentID >= 1000); + db.Parent. Delete(c => c.ParentID >= 1000); + } + } + } + } +} diff --git a/UnitTests/Linq/ElementOperationTest.cs b/UnitTests/Linq/ElementOperationTest.cs index f5b9e8018..3ca0273a7 100644 --- a/UnitTests/Linq/ElementOperationTest.cs +++ b/UnitTests/Linq/ElementOperationTest.cs @@ -81,7 +81,7 @@ from p in Parent select Child.FirstOrDefault().ChildID, public void NestedFirstOrDefaultScalar2() { ForEachProvider( - new[] { ProviderName.Informix, "Oracle", ProviderName.Sybase }, db => + new[] { ProviderName.Informix, "Oracle", "DevartOracle", ProviderName.Sybase }, db => AreEqual( from p in Parent select new @@ -186,7 +186,7 @@ from p in Parent select p.Children.Select(c => c.ParentID).Distinct().SingleO } [Test] - public void FirstOrDefaultEntitySet() + public void FirstOrDefaultEntitySet([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { @@ -197,7 +197,7 @@ public void FirstOrDefaultEntitySet() } [Test] - public void NestedSingleOrDefaultTest() + public void NestedSingleOrDefaultTest([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { @@ -208,7 +208,7 @@ public void NestedSingleOrDefaultTest() } [Test] - public void MultipleQuery() + public void MultipleQuery([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { diff --git a/UnitTests/Linq/EnumMapping.cs b/UnitTests/Linq/EnumMapping.cs new file mode 100644 index 000000000..971ca58b5 --- /dev/null +++ b/UnitTests/Linq/EnumMapping.cs @@ -0,0 +1,1534 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using BLToolkit.Data.DataProvider; +using BLToolkit.Data.Linq; +using BLToolkit.DataAccess; +using BLToolkit.Mapping; +using NUnit.Framework; + +namespace Data.Linq +{ + [TestFixture, Category("MapValue")] + public class EnumMapping : TestBase + { + enum TestEnum1 + { + [MapValue(11L)] Value1 = 3, + [MapValue(12L)] Value2, + } + enum TestEnum2 + { + Value1 = 3, + Value2, + } + enum TestEnum3 + { + Value1 = 3, + Value2, + } + + [TableName("LinqDataTypes")] + class TestTable1 + { + [PrimaryKey, MapField("ID")] public int Id; + [MapField("BigIntValue")] public TestEnum1 TestField; + } + + [MapValue(TestEnum2.Value2, 12L)] + [TableName("LinqDataTypes")] + class TestTable2 + { + [PrimaryKey, MapField("ID")] + public int Id; + + [MapValue(TestEnum2.Value1, 11L)] + [MapField("BigIntValue")] + public TestEnum2 TestField; + + [MapField("IntValue")] + public TestEnum3 Int32Field; + } + + [TableName("LinqDataTypes")] + class NullableTestTable1 + { + [PrimaryKey, MapField("ID")] + public int? Id; + + [MapField("BigIntValue")] + public TestEnum1? TestField; + } + + [MapValue(TestEnum2.Value2, 12L)] + [TableName("LinqDataTypes")] + class NullableTestTable2 + { + [PrimaryKey, MapField("ID")] + public int? Id; + + [MapValue(TestEnum2.Value1, 11L)] + [MapField("BigIntValue")] + public TestEnum2? TestField; + + [MapField("IntValue")] + public TestEnum3? Int32Field; + } + + [TableName("LinqDataTypes")] + class RawTable + { + [PrimaryKey, MapField("ID")] + public int Id; + + [MapField("BigIntValue")] + public long TestField; + + [MapField("IntValue")] + public int Int32Field; + } + + class Cleaner : IDisposable + { + readonly ITestDataContext _db; + + public Cleaner(ITestDataContext db) + { + _db = db; + Clean(); + } + + private void Clean() + { + _db.GetTable<RawTable>().Where(r => r.Id == RID).Delete(); + } + + public void Dispose() + { + try + { + // rollback emulation for WCF + Clean(); + } + catch (Exception) + { + } + } + } + + const long VAL2 = 12; + const long VAL1 = 11; + const int RID = 101; + + [Test] + public void EnumMapInsert1() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<TestTable1>().Insert(() => new TestTable1 + { + Id = RID, + TestField = TestEnum1.Value2 + }); + + Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Count()); + } + }); + } + + [Test] + public void EnumMapInsert2() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<TestTable2>().Insert(() => new TestTable2 + { + Id = RID, + TestField = TestEnum2.Value2 + }); + + Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Count()); + } + }); + } + + [Test] + public void EnumMapInsert3() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<NullableTestTable1>().Insert(() => new NullableTestTable1 + { + Id = RID, + TestField = TestEnum1.Value2 + }); + + Assert.AreEqual(1, db.GetTable<RawTable>() + .Where(r => r.Id == RID && r.TestField == VAL2).Count()); + } + }); + } + + [Test] + public void EnumMapInsert4() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<NullableTestTable2>().Insert(() => new NullableTestTable2 + { + Id = RID, + TestField = TestEnum2.Value2 + }); + + Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Count()); + } + }); + } + + [Test] + public void EnumMapWhere1() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var result = db.GetTable<TestTable1>().Where(r => r.Id == RID && r.TestField == TestEnum1.Value2).Select(r => r.TestField).FirstOrDefault(); + Assert.True(result == TestEnum1.Value2); + } + }); + } + + [Test] + public void EnumMapWhere2() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var result = db.GetTable<TestTable2>().Where(r => r.Id == RID && r.TestField == TestEnum2.Value2).Select(r => r.TestField).FirstOrDefault(); + Assert.True(result == TestEnum2.Value2); + } + }); + } + + [Test] + public void EnumMapWhere3() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var result = db.GetTable<NullableTestTable1>() + .Where(r => r.Id == RID && r.TestField == TestEnum1.Value2) + .Select(r => r.TestField).FirstOrDefault(); + Assert.True(result == TestEnum1.Value2); + } + }); + } + + [Test] + public void EnumMapWhere4() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var result = db.GetTable<NullableTestTable2>() + .Where(r => r.Id == RID && r.TestField == TestEnum2.Value2) + .Select(r => r.TestField).FirstOrDefault(); + Assert.True(result == TestEnum2.Value2); + } + }); + } + + [Test] + public void EnumMapUpdate1() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL1 + }); + + db.GetTable<TestTable1>() + .Where(r => r.Id == RID && r.TestField == TestEnum1.Value1) + .Update(r => new TestTable1 { TestField = TestEnum1.Value2 }); + + var result = db.GetTable<RawTable>() + .Where(r => r.Id == RID && r.TestField == VAL2) + .Select(r => r.TestField) + .FirstOrDefault(); + + Assert.True(result == VAL2); + } + }); + } + + [Test] + public void EnumMapUpdate2() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL1 + }); + + db.GetTable<TestTable2>() + .Where(r => r.Id == RID && r.TestField == TestEnum2.Value1) + .Update(r => new TestTable2 { TestField = TestEnum2.Value2 }); + + var result = db.GetTable<RawTable>() + .Where(r => r.Id == RID && r.TestField == VAL2) + .Select(r => r.TestField) + .FirstOrDefault(); + + Assert.True(result == VAL2); + } + }); + } + + [Test] + public void EnumMapUpdate3() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL1 + }); + + db.GetTable<NullableTestTable1>() + .Where(r => r.Id == RID && r.TestField == TestEnum1.Value1) + .Update(r => new NullableTestTable1 { TestField = TestEnum1.Value2 }); + + var result = db.GetTable<RawTable>() + .Where(r => r.Id == RID && r.TestField == VAL2) + .Select(r => r.TestField) + .FirstOrDefault(); + + Assert.True(result == VAL2); + } + }); + } + + [Test] + public void EnumMapUpdate4() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL1 + }); + + db.GetTable<NullableTestTable2>() + .Where(r => r.Id == RID && r.TestField == TestEnum2.Value1) + .Update(r => new NullableTestTable2 { TestField = TestEnum2.Value2 }); + + var result = db.GetTable<RawTable>() + .Where(r => r.Id == RID && r.TestField == VAL2) + .Select(r => r.TestField) + .FirstOrDefault(); + + Assert.True(result == VAL2); + } + }); + } + + [Test] + public void EnumMapSelectAnon1([DataContexts] string context) + { + using (var db = GetDataContext(context)) + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var result = db.GetTable<TestTable1>() + .Where(r => r.Id == RID && r.TestField == TestEnum1.Value2) + .Select(r => new { r.TestField }) + .FirstOrDefault(); + + Assert.NotNull(result); + Assert.That(result.TestField, Is.EqualTo(TestEnum1.Value2)); + } + } + } + + [Test] + public void EnumMapSelectAnon2() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var result = db.GetTable<TestTable2>() + .Where(r => r.Id == RID && r.TestField == TestEnum2.Value2) + .Select(r => new { r.TestField }) + .FirstOrDefault(); + + Assert.NotNull(result); + Assert.True(result.TestField == TestEnum2.Value2); + } + }); + } + + [Test] + public void EnumMapSelectAnon3() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var result = db.GetTable<NullableTestTable1>() + .Where(r => r.Id == RID && r.TestField == TestEnum1.Value2) + .Select(r => new { r.TestField }) + .FirstOrDefault(); + + Assert.NotNull(result); + Assert.True(result.TestField == TestEnum1.Value2); + } + }); + } + + [Test] + public void EnumMapSelectAnon4() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var result = db.GetTable<NullableTestTable2>() + .Where(r => r.Id == RID && r.TestField == TestEnum2.Value2) + .Select(r => new { r.TestField }) + .FirstOrDefault(); + + Assert.NotNull(result); + Assert.True(result.TestField == TestEnum2.Value2); + } + }); + } + + [Test] + public void EnumMapDelete1() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.True(1 == db.GetTable<TestTable1>().Delete(r => r.Id == RID && r.TestField == TestEnum1.Value2)); + } + }); + } + + [Test] + public void EnumMapDelete2() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.True(1 == db.GetTable<TestTable2>().Delete(r => r.Id == RID && r.TestField == TestEnum2.Value2)); + } + }); + } + + [Test] + public void EnumMapDelete3() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.True(1 == db.GetTable<NullableTestTable1>() + .Delete(r => r.Id == RID && r.TestField == TestEnum1.Value2)); + } + }); + } + + [Test] + public void EnumMapDelete4() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.True(1 == db.GetTable<NullableTestTable2>() + .Delete(r => r.Id == RID && r.TestField == TestEnum2.Value2)); + } + }); + } + + [Test] + public void EnumMapSet1() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL1 + }); + + db.GetTable<TestTable1>() + .Where(r => r.Id == RID && r.TestField == TestEnum1.Value1) + .Set(r => r.TestField, TestEnum1.Value2).Update(); + var result = db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Select(r => r.TestField).FirstOrDefault(); + Assert.True(result == VAL2); + } + }); + } + + [Test] + public void EnumMapSet2() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL1 + }); + + db.GetTable<TestTable2>() + .Where(r => r.Id == RID && r.TestField == TestEnum2.Value1) + .Set(r => r.TestField, TestEnum2.Value2).Update(); + var result = db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Select(r => r.TestField).FirstOrDefault(); + Assert.True(result == VAL2); + } + }); + } + + [Test] + public void EnumMapSet3() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + Int32Field = 3 + }); + + db.GetTable<TestTable2>() + .Where(r => r.Id == RID && r.Int32Field == TestEnum3.Value1) + .Set(r => r.Int32Field, () => TestEnum3.Value2).Update(); + Assert.True(1 == db.GetTable<RawTable>().Where(r => r.Id == RID && r.Int32Field == 4).Count()); + } + }); + } + + [Test] + public void EnumMapSet4() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL1 + }); + + db.GetTable<NullableTestTable1>() + .Where(r => r.Id == RID && r.TestField == TestEnum1.Value1) + .Set(r => r.TestField, TestEnum1.Value2).Update(); + var result = db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Select(r => r.TestField).FirstOrDefault(); + Assert.True(result == VAL2); + } + }); + } + + [Test] + public void EnumMapSet5() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL1 + }); + + db.GetTable<NullableTestTable2>() + .Where(r => r.Id == RID && r.TestField == TestEnum2.Value1) + .Set(r => r.TestField, TestEnum2.Value2).Update(); + var result = db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Select(r => r.TestField).FirstOrDefault(); + Assert.True(result == VAL2); + } + }); + } + + [Test] + public void EnumMapSet6() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + Int32Field = 3 + }); + + db.GetTable<NullableTestTable2>() + .Where(r => r.Id == RID && r.Int32Field == TestEnum3.Value1) + .Set(r => r.Int32Field, () => TestEnum3.Value2).Update(); + Assert.True(1 == db.GetTable<RawTable>().Where(r => r.Id == RID && r.Int32Field == 4).Count()); + } + }); + } + + [Test] + public void EnumMapContains1([DataContexts] string context) + { + using (var db = GetDataContext(context)) + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.True(1 == db.GetTable<TestTable1>() + .Where(r => r.Id == RID && new[] { TestEnum1.Value2 }.Contains(r.TestField)).Count()); + } + } + } + + [Test] + public void EnumMapContains2() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.That(db.GetTable<TestTable2>().Where(r => r.Id == RID && new[] { TestEnum2.Value2 }.Contains(r.TestField)).Count(), Is.EqualTo(1)); + } + }); + } + + [Test] + public void EnumMapContains3() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.True(1 == db.GetTable<NullableTestTable1>() + .Where(r => r.Id == RID && new[] { (TestEnum1?)TestEnum1.Value2 }.Contains(r.TestField)).Count()); + } + }); + } + + [Test] + public void EnumMapContains4() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.True(1 == db.GetTable<NullableTestTable2>() + .Where(r => r.Id == RID && new[] { (TestEnum2?)TestEnum2.Value2 }.Contains(r.TestField)).Count()); + } + }); + } + + [Test] + public void EnumMapSelectNull1() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID + }); + + var result = db.GetTable<NullableTestTable1>() + .Where(r => r.Id == RID) + .Select(r => new { r.TestField }) + .FirstOrDefault(); + + Assert.NotNull(result); + Assert.True(result.TestField == null); + } + }); + } + + [Test] + public void EnumMapSelectNull2() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID + }); + + var result = db.GetTable<NullableTestTable2>() + .Where(r => r.Id == RID) + .Select(r => new { r.TestField }) + .FirstOrDefault(); + + Assert.NotNull(result); + Assert.True(result.TestField == null); + } + }); + } + + [Test] + public void EnumMapWhereNull1() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID + }); + + var result = db.GetTable<NullableTestTable1>() + .Where(r => r.Id == RID && r.TestField == null) + .Select(r => new { r.TestField }).FirstOrDefault(); + Assert.NotNull(result); + Assert.Null(result.TestField); + } + }); + } + + [Test] + public void EnumMapWhereNull2() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID + }); + + var result = db.GetTable<NullableTestTable2>() + .Where(r => r.Id == RID && r.TestField == null) + .Select(r => new { r.TestField }).FirstOrDefault(); + Assert.NotNull(result); + Assert.Null(result.TestField); + } + }); + } + + [Test] + public void EnumMapInsertObject1() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.Insert(new TestTable1 + { + Id = RID, + TestField = TestEnum1.Value2 + }); + + Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Count()); + } + }); + } + + [Test] + public void EnumMapInsertObject2() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.Insert(new TestTable2 + { + Id = RID, + TestField = TestEnum2.Value2 + }); + + Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Count()); + } + }); + } + + [Test] + public void EnumMapInsertObject3() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.Insert(new NullableTestTable1 + { + Id = RID, + TestField = TestEnum1.Value2 + }); + + Assert.AreEqual(1, db.GetTable<RawTable>() + .Where(r => r.Id == RID && r.TestField == VAL2).Count()); + } + }); + } + + [Test] + public void EnumMapInsertObject4() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.Insert(new NullableTestTable2 + { + Id = RID, + TestField = TestEnum2.Value2 + }); + + Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Count()); + } + }); + } + + [Test] + public void EnumMapInsertFromSelectWithParam1() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var param = TestEnum1.Value1; + + var result = db.GetTable<TestTable1>() + .Where(r => r.Id == RID && r.TestField == TestEnum1.Value2) + .Select(r => new TestTable1 + { + Id = r.Id, + TestField = param + }) + .Insert(db.GetTable<TestTable1>(), r => r); + + Assert.AreEqual(1, result); + Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL1).Count()); + } + }); + } + + [Test] + public void EnumMapInsertFromSelectWithParam2() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var param = TestEnum2.Value1; + + var result = db.GetTable<TestTable2>() + .Where(r => r.Id == RID && r.TestField == TestEnum2.Value2) + .Select(r => new TestTable2 + { + Id = r.Id, + TestField = param + }) + .Insert(db.GetTable<TestTable2>(), r => r); + + Assert.AreEqual(1, result); + Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL1).Count()); + } + }); + } + + [Test] + public void EnumMapInsertFromSelectWithParam3() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var param = TestEnum1.Value1; + + var result = db.GetTable<NullableTestTable1>() + .Where(r => r.Id == RID && r.TestField == TestEnum1.Value2) + .Select(r => new NullableTestTable1 + { + Id = r.Id, + TestField = param + }) + .Insert(db.GetTable<NullableTestTable1>(), r => r); + + Assert.AreEqual(1, result); + Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL1).Count()); + } + }); + } + + [Test] + public void EnumMapInsertFromSelectWithParam4() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var param = TestEnum2.Value1; + + var result = db.GetTable<NullableTestTable2>() + .Where(r => r.Id == RID && r.TestField == TestEnum2.Value2) + .Select(r => new NullableTestTable2 + { + Id = r.Id, + TestField = param + }) + .Insert(db.GetTable<NullableTestTable2>(), r => r); + + Assert.AreEqual(1, result); + Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL1).Count()); + } + }); + } + + [Test] + public void EnumMapDeleteEquals1() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.True(1 == db.GetTable<TestTable1>().Delete(r => r.Id == RID && r.TestField.Equals(TestEnum1.Value2))); + } + }); + } + + [Test] + public void EnumMapDeleteEquals2() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.True(1 == db.GetTable<TestTable2>().Delete(r => r.Id == RID && r.TestField.Equals(TestEnum2.Value2))); + } + }); + } + + [Test] + public void EnumMapDeleteEquals3() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.True(1 == db.GetTable<NullableTestTable1>() + .Delete(r => r.Id == RID && r.TestField.Equals(TestEnum1.Value2))); + } + }); + } + + [Test] + public void EnumMapDeleteEquals4() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.True(1 == db.GetTable<NullableTestTable2>() + .Delete(r => r.Id == RID && r.TestField.Equals(TestEnum2.Value2))); + } + }); + } + + [Test] + public void EnumMapCustomPredicate1([DataContexts] string context) + { + using (var db = GetDataContext(context)) + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var entityParameter = Expression.Parameter(typeof(TestTable1), "entity"); // parameter name required for BLToolkit + var filterExpression = Expression.Equal(Expression.Field(entityParameter, "TestField"), Expression.Constant(TestEnum1.Value2)); + var filterPredicate = Expression.Lambda<Func<TestTable1, bool>>(filterExpression, entityParameter); + var result = db.GetTable<TestTable1>().Where(filterPredicate).ToList(); + + Assert.AreEqual(1, result.Count); + } + } + } + + [Test] + public void EnumMapCustomPredicate2([DataContexts] string context) + { + using (var db = GetDataContext(context)) + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var entityParameter = Expression.Parameter(typeof(TestTable2), "entity"); // parameter name required for BLToolkit + var filterExpression = Expression.Equal(Expression.Field(entityParameter, "TestField"), Expression.Constant(TestEnum2.Value2)); + var filterPredicate = Expression.Lambda<Func<TestTable2, bool>>(filterExpression, entityParameter); + var result = db.GetTable<TestTable2>().Where(filterPredicate).ToList(); + + Assert.AreEqual(1, result.Count); + } + } + } + + [TableName("LinqDataTypes")] + class TestTable3 + { + [PrimaryKey] + public int ID; + + [MapField("BigIntValue")] + public TestEnum1? TargetType; + + [MapField("IntValue")] + public int? TargetID; + } + + struct ObjectReference + { + public TestEnum1 TargetType; + public int TargetID; + public ObjectReference(TestEnum1 targetType, int tagetId) + { + TargetType = targetType; + TargetID = tagetId; + } + } + + [Test] + public void Test_4_1_18_Regression1() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable() + { + Id = RID, + TestField = VAL2, + Int32Field = 10 + }); + + var result = db.GetTable<TestTable3>().Where(r => r.ID == RID).Select(_ => new + { + Target = _.TargetType != null && _.TargetID != null + ? new ObjectReference(_.TargetType.Value, _.TargetID.Value) + : default(ObjectReference?) + }) + .ToArray(); + + Assert.AreEqual(1, result.Length); + Assert.NotNull(result[0].Target); + Assert.AreEqual(10, result[0].Target.Value.TargetID); + Assert.AreEqual(TestEnum1.Value2, result[0].Target.Value.TargetType); + } + }); + } + + [TableName("LinqDataTypes")] + class TestTable4 + { + [PrimaryKey] + public int ID; + + [MapField("BigIntValue")] + public TestEnum2? TargetType; + + [MapField("IntValue")] + public int? TargetID; + } + + struct ObjectReference2 + { + public TestEnum2 TargetType; + public int TargetID; + public ObjectReference2(TestEnum2 targetType, int tagetId) + { + TargetType = targetType; + TargetID = tagetId; + } + } + + [Test] + public void Test_4_1_18_Regression2() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable() + { + Id = RID, + TestField = (long)TestEnum2.Value2, + Int32Field = 10 + }); + + var result = db.GetTable<TestTable4>().Where(r => r.ID == RID).Select(_ => new + { + Target = _.TargetType != null && _.TargetID != null + ? new ObjectReference2(_.TargetType.Value, _.TargetID.Value) + : default(ObjectReference2?) + }) + .ToArray(); + + Assert.AreEqual(1, result.Length); + Assert.NotNull(result[0].Target); + Assert.AreEqual(10, result[0].Target.Value.TargetID); + Assert.AreEqual(TestEnum2.Value2, result[0].Target.Value.TargetType); + } + }); + } + + class NullableResult + { + public TestEnum1? Value; + } + + [Test] + public void EnumMapSelectNull([DataContexts] string context) + { + using (var db = GetDataContext(context)) + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID + }); + + var result = db.GetTable<TestTable1>() + .Where(r => r.Id == RID) + .Select(r => new NullableResult {Value = r.TestField }) + .FirstOrDefault(); + + Assert.NotNull(result); + Assert.Null(result.Value); + } + } + } + + private TestEnum1 Convert(TestEnum1 val) + { + return val; + } + + [Test] + public void EnumMapSelectNull_Regression([DataContexts] string context) + { + using (var db = GetDataContext(context)) + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var result = db.GetTable<TestTable1>() + .Where(r => r.Id == RID) + .Select(r => new NullableResult { Value = Convert(r.TestField) }) + .FirstOrDefault(); + + Assert.NotNull(result); + Assert.That(result.Value, Is.EqualTo(TestEnum1.Value2)); + } + } + } + + [Flags] + enum TestFlag + { + Value1 = 0x1, + Value2 = 0x2 + } + + [TableName("LinqDataTypes")] + class TestTable5 + { + public int ID; + public TestFlag IntValue; + } + + [Test] + public void TestFlagEnum([DataContexts(ProviderName.Access)] string context) + { + using (var db = GetDataContext(context)) + { + var result = + from t in db.GetTable<TestTable5>() + where (t.IntValue & TestFlag.Value1) != 0 + select t; + + var sql = result.ToString(); + + Assert.That(sql, Is.Not.Contains("Convert")); + } + } + + [Test] + public void EnumMapContainsList1() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var set = new HashSet<TestEnum1>(); + set.Add(TestEnum1.Value2); + + Assert.That(db.GetTable<TestTable1>() + .Where(r => r.Id == RID && set.Contains(r.TestField)).Count(), Is.EqualTo(1)); + Assert.That(db.GetTable<TestTable1>() + .Where(r => r.Id == RID && !set.Contains(r.TestField)).Count(), Is.EqualTo(0)); + } + }); + } + + [Test] + public void EnumMapContainsList2() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var set = new HashSet<TestEnum2>(); + set.Add(TestEnum2.Value2); + + Assert.That(db.GetTable<TestTable2>().Where(r => r.Id == RID && set.Contains(r.TestField)).Count(), Is.EqualTo(1)); + Assert.That(db.GetTable<TestTable2>().Where(r => r.Id == RID && !set.Contains(r.TestField)).Count(), Is.EqualTo(0)); + } + }); + } + + [Test] + public void EnumMapContainsList3() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var set = new HashSet<TestEnum1?>(); + set.Add(TestEnum1.Value2); + + Assert.That(db.GetTable<NullableTestTable1>() + .Where(r => r.Id == RID && set.Contains(r.TestField)).Count(), Is.EqualTo(1)); + Assert.That(db.GetTable<NullableTestTable1>() + .Where(r => r.Id == RID && !set.Contains(r.TestField)).Count(), Is.EqualTo(0)); + } + }); + } + + [Test] + public void EnumMapContainsList4() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + var set = new HashSet<TestEnum2?>(); + set.Add(TestEnum2.Value2); + + Assert.That(db.GetTable<NullableTestTable2>() + .Where(r => r.Id == RID && set.Contains(r.TestField)).Count(), Is.EqualTo(1)); + Assert.That(db.GetTable<NullableTestTable2>() + .Where(r => r.Id == RID && !set.Contains(r.TestField)).Count(), Is.EqualTo(0)); + } + }); + } + + [Test] + public void EnumMapIntermediateObject1() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.That( + db.GetTable<TestTable1>() + .Select(r => new {r.Id, r.TestField}) + .Where(r => r.Id == RID && r.TestField == TestEnum1.Value2).Count(), Is.EqualTo(1)); + } + }); + } + + //////[Test] + public void EnumMapIntermediateObject2() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.That( + db.GetTable<TestTable2>() + .Select(r => new { r.Id, r.TestField }) + .Where(r => r.Id == RID && r.TestField == TestEnum2.Value2).Count(), Is.EqualTo(1)); + } + }); + } + + [Test] + public void EnumMapIntermediateObject3() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.That( + db.GetTable<NullableTestTable1>() + .Select(r => new { r.Id, r.TestField }) + .Where(r => r.Id == RID && r.TestField == TestEnum1.Value2).Count(), Is.EqualTo(1)); + } + }); + } + + //////[Test] + public void EnumMapIntermediateObject4() + { + ForEachProvider(db => + { + using (new Cleaner(db)) + { + db.GetTable<RawTable>().Insert(() => new RawTable + { + Id = RID, + TestField = VAL2 + }); + + Assert.That( + db.GetTable<NullableTestTable2>() + .Select(r => new { r.Id, r.TestField }) + .Where(r => r.Id == RID && r.TestField == TestEnum2.Value2).Count(), Is.EqualTo(1)); + } + }); + } + } +} diff --git a/UnitTests/Linq/Exceptions/Common.cs b/UnitTests/Linq/Exceptions/Common.cs index a447714af..9a736940a 100644 --- a/UnitTests/Linq/Exceptions/Common.cs +++ b/UnitTests/Linq/Exceptions/Common.cs @@ -1,18 +1,18 @@ using System; using System.Collections.Generic; -using NUnit.Framework; - using BLToolkit.Common; using BLToolkit.Data; using BLToolkit.Data.Linq; using BLToolkit.Data.Sql; -using Data.Linq; -using Data.Linq.Model; +using NUnit.Framework; namespace Data.Exceptions { + using Linq; + using Linq.Model; + [TestFixture] public class Common : TestBase { @@ -20,7 +20,7 @@ class MyDbManager : TestDbManager { public MyDbManager() : base("Sql2008") {} - protected override SqlQuery ProcessQuery(SqlQuery sqlQuery) + public override SqlQuery ProcessQuery(SqlQuery sqlQuery) { if (sqlQuery.IsInsert && sqlQuery.Insert.Into.Name == "Parent") { @@ -74,7 +74,7 @@ protected override SqlQuery ProcessQuery(SqlQuery sqlQuery) } [Test, ExpectedException(typeof(DataException), ExpectedMessage = "Invalid object name 'Parent1'.")] - public void ReplaceTableTest() + public void ReplaceTableTest([IncludeDataContexts("Sql2008", "Sql2012")] string context) { using (var db = new MyDbManager()) { diff --git a/UnitTests/Linq/ExplicitInterfaceTests.cs b/UnitTests/Linq/ExplicitInterfaceTests.cs new file mode 100644 index 000000000..15e8fcabf --- /dev/null +++ b/UnitTests/Linq/ExplicitInterfaceTests.cs @@ -0,0 +1,121 @@ +using System; +using System.Linq; + +using BLToolkit.Data.Linq; +using BLToolkit.DataAccess; +using BLToolkit.Mapping; + +using NUnit.Framework; + +namespace Data.Linq +{ + [TestFixture] + public class ExplicitInterfaceTests : TestBase + { + interface IDate + { + DateTime? Date { get; } + } + + interface IDate2 + { + DateTime? Date { get; set; } + } + + [TableName("LinqDataTypes")] + class TestTable : IDate + { + [MapField("GuidValue")] + Guid? GuidValue { get; set; } + + [MapField("BoolValue")] + public bool? Bit { get; set; } + + private DateTime? _date; + + [MapField("DateTimeValue", Storage = "_date")] + DateTime? IDate.Date + { + get + { + return _date; + } + } + } + + [TableName("LinqDataTypes")] + public class TestTable2 : IDate + { + [MapField("GuidValue")] + Guid? GuidValue { get; set; } + + [MapField("BoolValue")] + public bool? Bit { get; set; } + + private DateTime? _date; + + [MapField("DateTimeValue", Storage = "_date")] + DateTime? IDate.Date + { + get + { + return _date; + } + } + } + + [TableName("LinqDataTypes")] + public class TestTable3 : IDate2 + { + [MapField("GuidValue")] + Guid? GuidValue { get; set; } + + [MapField("BoolValue")] + public bool? Bit { get; set; } + + [MapField("DateTimeValue")] + DateTime? IDate2.Date + { + get; + set; + } + } + + static IQueryable<T> SelectNoDate<T>(IQueryable<T> items) where T : IDate + { + return items.Where(i => i.Date == null); + } + + static IQueryable<T> SelectNoDate2<T>(IQueryable<T> items) where T : IDate2 + { + return items.Where(i => i.Date == null); + } + + [Test] + public void ExplicitInterface1() + { + using (var db = new TestDbManager()) + { + var result = SelectNoDate(db.GetTable<TestTable>()).ToList(); + } + } + + [Test] + public void ExplicitInterface2() + { + using (var db = new TestDbManager()) + { + var result = SelectNoDate(db.GetTable<TestTable2>()).ToList(); + } + } + + [Test] + public void ExplicitInterface3() + { + using (var db = new TestDbManager()) + { + var result = SelectNoDate2(db.GetTable<TestTable3>()).ToList(); + } + } + } +} diff --git a/UnitTests/Linq/ExpressionsTest.cs b/UnitTests/Linq/ExpressionsTest.cs index 3cbd5f838..83ab2f49d 100644 --- a/UnitTests/Linq/ExpressionsTest.cs +++ b/UnitTests/Linq/ExpressionsTest.cs @@ -205,5 +205,84 @@ from p in db.GetParent10(ch) where ch.ParentID == p.ParentID select ch); } + + [MethodExpression("GetBoolExpression1")] + static bool GetBool1<T>(T obj) + { + throw new InvalidOperationException(); + } + + static Expression<Func<T,bool>> GetBoolExpression1<T>() + where T : class + { + return obj => obj != null; + } + + [Test] + public void TestGenerics1() + { + using (var db = new TestDbManager()) + { + var q = + from ch in db.Child + where GetBool1(ch.Parent) + select ch; + + q.ToList(); + } + } + + [MethodExpression("GetBoolExpression2_{0}")] + static bool GetBool2<T>(T obj) + { + throw new InvalidOperationException(); + } + + static Expression<Func<Parent,bool>> GetBoolExpression2_Parent() + { + return obj => obj != null; + } + + [Test] + public void TestGenerics2() + { + using (var db = new TestDbManager()) + { + var q = + from ch in db.Child + where GetBool2(ch.Parent) + select ch; + + q.ToList(); + } + } + + class TestClass<T> + { + [MethodExpression("GetBoolExpression3")] + public static bool GetBool3(Parent obj) + { + throw new InvalidOperationException(); + } + + static Expression<Func<Parent,bool>> GetBoolExpression3() + { + return obj => obj != null; + } + } + + [Test] + public void TestGenerics3() + { + using (var db = new TestDbManager()) + { + var q = + from ch in db.Child + where TestClass<int>.GetBool3(ch.Parent) + select ch; + + q.ToList(); + } + } } } diff --git a/UnitTests/Linq/ExtensionTests.cs b/UnitTests/Linq/ExtensionTests.cs index e1cdd9bb8..a7c5450f6 100644 --- a/UnitTests/Linq/ExtensionTests.cs +++ b/UnitTests/Linq/ExtensionTests.cs @@ -19,32 +19,32 @@ public class ParenTable } [Test] - public void TableName() + public void TableName([IncludeDataContexts("Sql2008", "Sql2012")] string context) { - using (var db = new TestDbManager("Sql2008")) + using (var db = new TestDbManager(context)) db.GetTable<ParenTable>().TableName("Parent").ToList(); } [Test] - public void DatabaseName() + public void DatabaseName([IncludeDataContexts("Sql2008")] string context) { - using (var db = new TestDbManager("Sql2008")) - db.GetTable<Parent>().DatabaseName("BLToolkitData").ToList(); + using (var db = new TestDbManager(context)) + db.GetTable<Parent>().DatabaseName("TestData").ToList(); } [Test] - public void OwnerName() + public void OwnerName([IncludeDataContexts("Sql2008", "Sql2012")] string context) { - using (var db = new TestDbManager("Sql2008")) + using (var db = new TestDbManager(context)) db.GetTable<Parent>().OwnerName("dbo").ToList(); } [Test] - public void AllNames() + public void AllNames([IncludeDataContexts("Sql2008")] string context) { - using (var db = new TestDbManager("Sql2008")) + using (var db = new TestDbManager(context)) db.GetTable<ParenTable>() - .DatabaseName("BLToolkitData") + .DatabaseName("TestData") .OwnerName("dbo") .TableName("Parent") .ToList(); diff --git a/UnitTests/Linq/Functions.cs b/UnitTests/Linq/Functions.cs index e86cd71d6..c723275c0 100644 --- a/UnitTests/Linq/Functions.cs +++ b/UnitTests/Linq/Functions.cs @@ -268,7 +268,7 @@ from p in Parent where p.Value1.Equals(null) select p, } [Test] - public void Equals4() + public void Equals4([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) AreEqual( diff --git a/UnitTests/Linq/GroupByTest.cs b/UnitTests/Linq/GroupByTest.cs index 25dd6bafb..ec11613ac 100644 --- a/UnitTests/Linq/GroupByTest.cs +++ b/UnitTests/Linq/GroupByTest.cs @@ -1043,7 +1043,7 @@ where g.Count() > 2 && g.Key.ParentID != 1 } [Test] - public void GrooupByAssociation3() + public void GrooupByAssociation3([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { @@ -1059,7 +1059,7 @@ where g.Count() == 12 } [Test] - public void GrooupByAssociation4() + public void GrooupByAssociation4([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { @@ -1119,7 +1119,7 @@ from p in db.Parent } [Test] - public void GroupByAggregate2() + public void GroupByAggregate2([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) AreEqual( @@ -1357,14 +1357,14 @@ group ch by ch.ParentID into g select g.Select(ch => ch.ChildID).Where(id => id < 30).Count(id => id >= 20)))); } - [Test] - public void GroupByExtraFieldBugTest() + [Test, Category("MySql")] + public void GroupByExtraFieldBugTest([IncludeDataContexts(ProviderName.MySql)] string context) { // https://github.com/igor-tkachev/bltoolkit/issues/42 // extra field is generated in the GROUP BY clause, for example: // GROUP BY p.LastName, p.LastName <--- the second one is redundant - using (var db = new TestDbManager("MySql")) + using (var db = new TestDbManager(context)) { var q = from d in db.Doctor @@ -1458,5 +1458,78 @@ group t by t.ID into g })); } + + [Test] + public void InnerQuery([DataContexts(ProviderName.SqlCe)] string context) + { + using (var db = GetDataContext(context)) + { + AreEqual( + Doctor.GroupBy(s => s.PersonID).Select(s => s.Select(d => d.Taxonomy).First()), + db.Doctor.GroupBy(s => s.PersonID).Select(s => s.Select(d => d.Taxonomy).First())); + } + } + + [Test] + public void CalcMember([DataContexts] string context) + { + using (var db = GetDataContext(context)) + { + AreEqual( + from parent in Parent + from child in Person + where child.ID == parent.ParentID + let data = new + { + parent.Value1, + Value = child.FirstName == "John" ? child.FirstName : "a" + } + group data by data.Value into groupedData + select new + { + groupedData.Key, + Count = groupedData.Count() + }, + from parent in db.Parent + from child in db.Person + where child.ID == parent.ParentID + let data = new + { + parent.Value1, + Value = child.FirstName == "John" ? child.FirstName : "a" + } + group data by data.Value into groupedData + select new + { + groupedData.Key, + Count = groupedData.Count() + }); + } + } + + [Test] + public void GroupByDate([DataContexts] string context) + { + using (var db = GetDataContext(context)) + { + AreEqual( + from t in Types2 + group t by new { t.DateTimeValue.Value.Month, t.DateTimeValue.Value.Year } into grp + select new + { + Total = grp.Sum(_ => _.MoneyValue), + year = grp.Key.Year, + month = grp.Key.Month + }, + from t in db.Types2 + group t by new { t.DateTimeValue.Value.Month, t.DateTimeValue.Value.Year } into grp + select new + { + Total = grp.Sum(_ => _.MoneyValue), + year = grp.Key.Year, + month = grp.Key.Month + }); + } + } } } diff --git a/UnitTests/Linq/IdlTest.cs b/UnitTests/Linq/IdlTest.cs index 6132e2200..cb277f123 100644 --- a/UnitTests/Linq/IdlTest.cs +++ b/UnitTests/Linq/IdlTest.cs @@ -15,6 +15,24 @@ namespace Data.Linq [TestFixture] public partial class IdlTest : TestBase { + class IdlProvidersAttribute : IncludeDataContextsAttribute + { + public IdlProvidersAttribute() + : base(ProviderName.SQLite, ProviderName.MySql, "Sql2005", "Sql2008") + { + } + } + + private void ForProvider(string providerName, Action<ITestDataContext> func) + { + ForEachProvider(Providers.Select(p => p.Name).Except(new[] { providerName }).ToArray(), func); + } + + private void ForMySqlProvider(Action<ITestDataContext> func) + { + ForEachProvider(Providers.Select(p => p.Name).Except(new[] { ProviderName.MySql }).ToArray(), func); + } + #region PersonWithId public interface IHasID @@ -46,12 +64,14 @@ public PersonWithId(int id, string firstName) public int ID { get; set; } public string FirstName { get; set; } public string LastName; - [Nullable] - public string MiddleName; + [Nullable] public string MiddleName; public Gender Gender; [MapIgnore] - public string Name { get { return FirstName + " " + LastName; } } + public string Name + { + get { return FirstName + " " + LastName; } + } public override bool Equals(object obj) { @@ -64,10 +84,10 @@ public bool Equals(PersonWithId other) if (ReferenceEquals(this, other)) return true; return other.ID == ID && - Equals(other.LastName, LastName) && - Equals(other.MiddleName, MiddleName) && - other.Gender == Gender && - Equals(other.FirstName, FirstName); + Equals(other.LastName, LastName) && + Equals(other.MiddleName, MiddleName) && + other.Gender == Gender && + Equals(other.FirstName, FirstName); } public override int GetHashCode() @@ -83,6 +103,7 @@ public override int GetHashCode() } } } + #endregion #region ObjectId @@ -122,7 +143,7 @@ public class WithObjectIdBase : IHasObjectId1 { public ObjectId Id { get; set; } } - + public class PersonWithObjectId : WithObjectIdBase, IHasObjectId2 { public string FistName { get; set; } @@ -152,72 +173,75 @@ public int? Value #endregion [Test] - public void TestComplexExpression() + public void TestComplexExpression([IdlProviders] string providerName) { // failed with BLToolkit.Data.Linq.LinqException : 'new StationObjectId() {Value = ConvertNullable(child.ChildID)}' // cannot be converted to SQL. - ForMySqlProvider( + ForProvider( + providerName, db => - { - var source = from child in db.GrandChild - select - new - { - NullableId = new NullableObjectId { Value = child.ChildID } - }; + { + var source = from child in db.GrandChild + select + new + { + NullableId = new NullableObjectId { Value = child.ChildID } + }; - var query = from e in source where e.NullableId == 1 select e; + var query = from e in source where e.NullableId == 1 select e; - var result = query.ToArray(); - Assert.That(result, Is.Not.Null); - }); + var result = query.ToArray(); + Assert.That(result, Is.Not.Null); + }); } - [Test] - public void TestJoin() + public void TestJoin([IdlProviders] string providerName) { // failed with System.ArgumentOutOfRangeException : Index was out of range. Must be non-negative and less than // the size of the collection. // Parameter name: index - ForMySqlProvider( + ForProvider( + providerName, db => - { - var source = from p1 in db.Person - join p2 in db.Person on p1.ID equals p2.ID - select - new { ID1 = new ObjectId { Value = p1.ID }, FirstName2 = p2.FirstName, }; + { + var source = from p1 in db.Person + join p2 in db.Person on p1.ID equals p2.ID + select + new { ID1 = new ObjectId { Value = p1.ID }, FirstName2 = p2.FirstName, }; - var query = from p1 in source select p1.ID1.Value; + var query = from p1 in source select p1.ID1.Value; - var result = query.ToArray(); - Assert.That(result, Is.Not.Null); - }); + var result = query.ToArray(); + Assert.That(result, Is.Not.Null); + }); } [Test] - public void TestNullableExpression() + public void TestNullableExpression([IdlProviders] string providerName) { // failed with System.NullReferenceException : Object reference not set to an instance of an object. - ForMySqlProvider( + ForProvider( + providerName, db => - { - var source = from obj in db.Person select new { Id = obj.ID, }; + { + var source = from obj in db.Person select new { Id = obj.ID, }; - // fails for bool?, double?, int32?, int64?, string - // works for byte?, int16?, DateTime? - double? @p1 = null; + // fails for bool?, double?, int32?, int64?, string + // works for byte?, int16?, DateTime? + double? @p1 = null; - var r = from c in source where @p1 != null select c; + var r = from c in source where @p1 != null select c; - Assert.That(r.ToArray(), Is.Not.Null); - }); + Assert.That(r.ToArray(), Is.Not.Null); + }); } [Test] - public void TestLookupWithInterfaceProperty() + public void TestLookupWithInterfaceProperty([IdlProviders] string providerName) { - ForMySqlProvider( + ForProvider( + providerName, db => { var r = GetById<PersonWithId>(db, 1).SingleOrDefault(); @@ -240,18 +264,20 @@ public class ParentEx : ObjectWithId #endregion [Test] - public void TestForObjectExt() + public void TestForObjectExt([IdlProviders] string providerName) { - ForMySqlProvider(db => - { - var r = from p in db.Parent + ForProvider( + providerName, + db => + { + var r = from p in db.Parent select new ParentEx - { - Id = new ObjectId { Value = p.ParentID }, - Value1 = p.Value1, - }; - Assert.That(r.ToArray(), Is.Not.Null); - }); + { + Id = new ObjectId { Value = p.ParentID }, + Value1 = p.Value1, + }; + Assert.That(r.ToArray(), Is.Not.Null); + }); } private void getData(ITestDataContext db, IEnumerable<int?> d, IEnumerable<int?> compareWith) @@ -267,15 +293,17 @@ private void getData(ITestDataContext db, IEnumerable<int?> d, IEnumerable<int?> } [Test] - public void TestForGroupBy() + public void TestForGroupBy([IdlProviders] string providerName) { - ForMySqlProvider(db => - { - /* no error in first call */ - getData(db, new List<int?> { 2 }, new List<int?> { 211, 212, 221, 222 }); + ForProvider( + providerName, + db => + { + /* no error in first call */ + getData(db, new List<int?> { 2 }, new List<int?> { 211, 212, 221, 222 }); - /* error in second and more calls */ - /* + /* error in second and more calls */ + /* * GROUP BY select clause is correct SELECT x.ChildID FROM GrandChild x WHERE x.ParentID IN (3) GROUP BY x.ChildID @@ -284,15 +312,15 @@ SELECT x.ChildID FROM GrandChild x WHERE x.ParentID IN (3) GROUP BY x.ChildID -- SET ?p1 = 31 SELECT x.GrandChildID FROM GrandChild x WHERE x.ParentID IN (2) AND x.ChildID = ?p1 */ - getData(db, new List<int?> { 3 }, new List<int?> { 311, 312, 313, 321, 333 }); - - }); + getData(db, new List<int?> { 3 }, new List<int?> { 311, 312, 313, 321, 333 }); + }); } [Test] - public void TestLinqMax() + public void TestLinqMax([IdlProviders] string providerName) { - ForMySqlProvider( + ForProvider( + providerName, db => { Assert.That(db.Patient.Where(x => x.PersonID < 0).Select(x => (int?)x.PersonID).Max(), Is.Null); @@ -305,28 +333,30 @@ public void TestLinqMax() } [Test] - public void TestConvertFunction() + public void TestConvertFunction([IdlProviders] string providerName) { - ForMySqlProvider( + ForProvider( + providerName, db => - { - var ds = new IdlPatientSource(db); - var r1 = ds.Patients().ToList(); - var r2 = ds.Persons().ToList(); + { + var ds = new IdlPatientSource(db); + var r1 = ds.Patients().ToList(); + var r2 = ds.Persons().ToList(); - Assert.That(r1, Is.Not.Empty); - Assert.That(r2, Is.Not.Empty); + Assert.That(r1, Is.Not.Empty); + Assert.That(r2, Is.Not.Empty); - var r3 = ds.Patients().ToIdlPatientEx(ds); - var r4 = r3.ToList(); - Assert.That(r4, Is.Not.Empty); - }); + var r3 = ds.Patients().ToIdlPatientEx(ds); + var r4 = r3.ToList(); + Assert.That(r4, Is.Not.Empty); + }); } [Test] - public void TestJoinOrder() + public void TestJoinOrder([IdlProviders] string providerName) { - ForMySqlProvider( + ForProvider( + providerName, db => { var source = new IdlPatientSource(db); @@ -338,7 +368,7 @@ join p3 in source.Persons() on p1.ChildID equals p3.Id select new { - p1.ChildID, + p1.ChildID, p1.ParentID, //Parent = p2, Child = p3, @@ -347,45 +377,57 @@ join p3 in source.Persons() on p1.ChildID equals p3.Id // Fail when use result from first JOIN var query2 = from p1 in source.GrandChilds() - join p2 in source.Persons() on p1.ParentID equals p2.Id - join p3 in source.Persons() on p1.ChildID equals p3.Id - select - new - { - p1.ChildID, - p1.ParentID, - Parent = p2, - //Child = p3, - }; + join p2 in source.Persons() on p1.ParentID equals p2.Id + join p3 in source.Persons() on p1.ChildID equals p3.Id + select + new + { + p1.ChildID, + p1.ParentID, + Parent = p2, + //Child = p3, + }; var data2 = query2.ToList(); }); } [Test] - public void TestDistinctWithGroupBy() + public void TestDistinctWithGroupBy([IdlProviders] string providerName) { - ForIdlProviders( + ForProvider( + providerName, db => { - var source = db.Parent.ToList(); - // Ensure that the data source has duplicate values. - Assert.That(source.GroupBy(x => x.Value1, (key, x) => x.Count()).Any(x => x > 1), Is.True); - // Success when query is executed in memory - TestDistinctWithGroupBy(source.AsQueryable()); - - // Failed when query is executed on sql server - TestDistinctWithGroupBy(db.Parent); + const int parentId = 10000; + db.Parent.Insert(() => new Parent { ParentID = parentId, Value1 = 1 }); + db.Parent.Insert(() => new Parent { ParentID = parentId, Value1 = 1 }); + + try + { + var source = db.Parent.ToList(); + + // Success when query is executed in memory + TestDistinctWithGroupBy(source.AsQueryable()); + + // Failed when query is executed on sql server + TestDistinctWithGroupBy(db.Parent); + } + finally + { + db.Parent.Delete(x => x.ParentID == parentId); + } }); } private static void TestDistinctWithGroupBy(IQueryable<Parent> source) { const int score = 4; - var q = source.Select(x => new {Key = x.Value1, MatchScore = score}) + var q = source.Select(x => new { Key = x.Value1, MatchScore = score }) .Distinct(); - var qq = q.GroupBy(x => x.Key, - (key, x) => new {Id = key, MatchScore = x.Sum(y => y.MatchScore)}) - .Select(x => new {x.Id, x.MatchScore}); + var qq = q.GroupBy( + x => x.Key, + (key, x) => new { Id = key, MatchScore = x.Sum(y => y.MatchScore) }) + .Select(x => new { x.Id, x.MatchScore }); var result = qq.ToList(); Assert.That(result.Select(x => x.MatchScore), Is.All.EqualTo(score)); @@ -396,89 +438,82 @@ private static IQueryable<T> GetById<T>(ITestDataContext db, int id) where T : c return db.GetTable<T>().Where(obj => obj.ID == id); } - private void ForMySqlProvider(Action<ITestDataContext> func) - { - ForEachProvider(Providers.Select(p => p.Name).Except(new[] { ProviderName.MySql }).ToArray(), func); - } - - private void ForIdlProviders(Action<ITestDataContext> func) - { - ForEachProvider(Providers.Select(p => p.Name) - .Except(new[] {ProviderName.SQLite, ProviderName.MySql}).ToArray(), func); - } - [Test] - public void ImplicitCastTest() + public void ImplicitCastTest([IdlProviders] string providerName) { - ForMySqlProvider(db => - { - var people = - from p in db.Person - select new IdlPerson + ForProvider( + providerName, + db => { - Id = new ObjectId { Value = p.ID }, - Name = p.FirstName - }; + var people = + from p in db.Person + select new IdlPerson + { + Id = new ObjectId { Value = p.ID }, + Name = p.FirstName + }; - var sql1 = (from p in people where p.Id == 1 select p).ToString(); - var sql2 = (from p in people where p.Id.Value == 1 select p).ToString(); + var sql1 = (from p in people where p.Id == 1 select p).ToString(); + var sql2 = (from p in people where p.Id.Value == 1 select p).ToString(); - Assert.That(sql1, Is.EqualTo(sql2)); - }); + Assert.That(sql1, Is.EqualTo(sql2)); + }); } [Test] - public void ListvsArrayTest() + public void ListvsArrayTest([IdlProviders] string providerName) { - ForMySqlProvider( + ForProvider( + providerName, db => - { - var st = "John"; + { + var st = "John"; - //SQL - x.FirstName IN ('John') - var queryList = from x in db.Person - where new List<string> { st }.Contains(x.FirstName) - select x.ID; + //SQL - x.FirstName IN ('John') + var queryList = from x in db.Person + where new List<string> { st }.Contains(x.FirstName) + select x.ID; - //SQL - x.FirstName IN ('J', 'o', 'h', 'n') - var queryArray = from x in db.Person - where new[] { st }.Contains(x.FirstName) - select x.ID; + //SQL - x.FirstName IN ('J', 'o', 'h', 'n') + var queryArray = from x in db.Person + where new[] { st }.Contains(x.FirstName) + select x.ID; - Assert.That(queryList.ToList(), Is.EqualTo(queryArray.ToList())); - }); + Assert.That(queryList.ToList(), Is.EqualTo(queryArray.ToList())); + }); } [Test] - public void ConcatJoinOrderByTest() + public void ConcatJoinOrderByTest([IdlProviders] string providerName) { - ForMySqlProvider( + ForProvider( + providerName, db => - { - - var query = from y in - ((from pat in db.Patient - where pat.Diagnosis == "a" - select pat) - .Concat - (from pat in db.Patient - where pat.Diagnosis == "b" - select pat)) - join person in db.Person on y.PersonID equals person.ID - orderby person.ID - select new { Id = person.ID, Id2 = y.PersonID }; - - Assert.That(query.ToList(), Is.Not.Null); - - }); + { + var query = from y in + ((from pat in db.Patient + where pat.Diagnosis == "a" + select pat) + .Concat + ( + from pat in db.Patient + where pat.Diagnosis == "b" + select pat)) + join person in db.Person on y.PersonID equals person.ID + orderby person.ID + select new { Id = person.ID, Id2 = y.PersonID }; + + Assert.That(query.ToList(), Is.Not.Null); + }); } [Test] - public void TestIsContainedInArrayOfEnumValues() + public void TestIsContainedInArrayOfEnumValues([IdlProviders] string providerName) { var types2 = new[] { TypeValue.Value2, TypeValue.Value3, TypeValue.Value4 }; - ForMySqlProvider( + ForProvider( + providerName, db => { var result = (from x in db.Parent4 where types2.Contains(x.Value1) select x) @@ -489,9 +524,10 @@ public void TestIsContainedInArrayOfEnumValues() } [Test] - public void TestQueryWithInterface() + public void TestQueryWithInterface([IdlProviders] string providerName) { - ForMySqlProvider( + ForProvider( + providerName, db => { var persons = @@ -516,25 +552,97 @@ from x in db.Person }); } - private IQueryable<T> FilterSourceByIdDefinedInBaseClass<T>(IQueryable<T> source, int id) where T : WithObjectIdBase + [Test] + public void TestBugCountWithOrderBy([IdlProviders] string providerName) + { + ForProvider( + providerName, + db => + { + var q1 = db.Person.OrderBy(x => x.ID); + + var q2 = from p in q1 + join p2 in db.Person on p.ID equals p2.ID + select p2; + + Assert.DoesNotThrow(() => q2.Max(x => x.ID)); + Assert.DoesNotThrow(() => q2.Count()); + }); + } + + [Test] + public void TestUpdateWithTargetByAssociationProperty([IdlProviders] string providerName) + { + TestUpdateByAssociationProperty(providerName, true); + } + + [Test] + public void TestSetUpdateWithoutTargetByAssociationProperty([IdlProviders] string providerName) + { + TestUpdateByAssociationProperty(providerName, false); + } + + private void TestUpdateByAssociationProperty(string providerName, bool useUpdateWithTarget) + { + ForProvider( + providerName, + db => + { + const int childId = 10000; + const int parentId = 20000; + + try + { + db.Parent.Insert(() => new Parent { ParentID = parentId }); + db.Child.Insert(() => new Child { ChildID = childId, ParentID = parentId }); + + var parents = from child in db.Child + where child.ChildID == childId + select child.Parent; + + if (useUpdateWithTarget) + { + // this failed for MySql and SQLite but works with MS SQL + Assert.DoesNotThrow(() => parents.Update(db.Parent, x => new Parent { Value1 = 5 })); + } + else + { + // this works with MySql but failed for SQLite and MS SQL + Assert.DoesNotThrow(() => parents.Set(x => x.Value1, 5).Update()); + } + } + finally + { + db.Child.Delete(x => x.ChildID == childId); + db.Parent.Delete(x => x.ParentID == parentId); + } + }); + } + + + private IQueryable<T> FilterSourceByIdDefinedInBaseClass<T>(IQueryable<T> source, int id) + where T : WithObjectIdBase { return from x in source where x.Id == id select x; } - private IQueryable<T> FilterSourceByIdDefinedInInterface1<T>(IQueryable<T> source, int id) where T : IHasObjectId1 + private IQueryable<T> FilterSourceByIdDefinedInInterface1<T>(IQueryable<T> source, int id) + where T : IHasObjectId1 { return from x in source where x.Id == id select x; } - private IQueryable<T> FilterSourceByIdDefinedInInterface2<T>(IQueryable<T> source, int id) where T : IHasObjectId2 + private IQueryable<T> FilterSourceByIdDefinedInInterface2<T>(IQueryable<T> source, int id) + where T : IHasObjectId2 { return from x in source where x.Id == id select x; } [Test] - public void TestComparePropertyOfEnumTypeToVaribleInSubquery() + public void TestComparePropertyOfEnumTypeToVaribleInSubquery([IdlProviders] string providerName) { - ForMySqlProvider( + ForProvider( + providerName, db => { var gender = Gender.Other; @@ -548,26 +656,106 @@ join y in db.Person.Where(x => x.Gender == gender) on x.PersonID equals y.ID } [Test] - public void ConcatOrderByTest() + public void ConcatOrderByTest([IdlProviders] string providerName) { - ForMySqlProvider( + ForProvider( + providerName, db => - { - var q = from p in db.Person - where p.ID < 0 - select new { Rank = 0, FirstName = (string)null, LastName = (string)null }; - var q2 = - q.Concat( - from p in db.Person - select new { Rank = p.ID, p.FirstName, p.LastName }); + { + var q = from p in db.Person + where p.ID < 0 + select new { Rank = 0, FirstName = (string)null, LastName = (string)null }; + var q2 = + q.Concat( + from p in db.Person + select new { Rank = p.ID, p.FirstName, p.LastName }); + + var resultquery = (from x in q2 orderby x.Rank, x.FirstName, x.LastName select x).ToString(); + + var rqr = resultquery.LastIndexOf( + "ORDER BY", System.StringComparison.InvariantCultureIgnoreCase); + var rqp = + (resultquery.Substring(rqr + "ORDER BY".Length).Split(',')).Select(p => p.Trim()).ToArray(); + + Assert.That(rqp.Count(), Is.EqualTo(3)); + }); + } + + [Test] + public void TestContainsForNullableDateTimeWithOnlyNullValue1([IdlProviders] string providerName) + { + ForProvider( + providerName, + db => + { + var dates = new DateTime?[] { null }; + + // Ensures that the query works properly in memory + // ReSharper disable RemoveToList.2 + var resultCount = db.Types2.ToList().Count(x => dates.Contains(x.DateTimeValue2)); + // ReSharper restore RemoveToList.2 + Assert.That(resultCount, Is.GreaterThan(0)); + + var result = db.Types2.Count(x => dates.Contains(x.DateTimeValue2)); + Assert.That(result, Is.EqualTo(resultCount)); + }); + } - var resultquery = (from x in q2 orderby x.Rank, x.FirstName, x.LastName select x).ToString(); - - var rqr = resultquery.LastIndexOf("ORDER BY", System.StringComparison.InvariantCultureIgnoreCase); - var rqp = (resultquery.Substring(rqr + "ORDER BY".Length).Split(',')).Select(p => p.Trim()).ToArray(); - - Assert.That(rqp.Count(), Is.EqualTo(3)); - }); + [Test] + public void TestContainsForNullableDateTimeWithOnlyNullValue2([IdlProviders] string providerName) + { + ForProvider( + providerName, + db => + { + // Ensures that the query works properly in memory + // ReSharper disable RemoveToList.2 + var resultCount = db.Types2.ToList().Count(x => new DateTime?[] { null }.Contains(x.DateTimeValue2)); + // ReSharper restore RemoveToList.2 + Assert.That(resultCount, Is.GreaterThan(0)); + + var result = db.Types2.Count(x => new DateTime?[] { null }.Contains(x.DateTimeValue2)); + Assert.That(result, Is.EqualTo(resultCount)); + }); + } + + [Test] + public void TestContainsForNullableDateTimeWithNullAndNotNullValues1([IdlProviders] string providerName) + { + ForProvider( + providerName, + db => + { + var date = new DateTime(2009, 9, 24, 9, 19, 29, 90); + var dates = new DateTime?[] { null, date }; + + // Ensures that the query works properly in memory + // ReSharper disable RemoveToList.2 + var resultCount = db.Types2.ToList().Count(x => dates.Contains(x.DateTimeValue2)); + // ReSharper restore RemoveToList.2 + Assert.That(resultCount, Is.GreaterThan(0)); + + var result = db.Types2.Count(x => dates.Contains(x.DateTimeValue2)); + Assert.That(result, Is.EqualTo(resultCount)); + }); + } + + [Test] + public void TestContainsForNullableDateTimeWithNullAndNotNullValues2([IdlProviders] string providerName) + { + ForProvider( + providerName, + db => + { + // Ensures that the query works properly in memory + // ReSharper disable RemoveToList.2 + var resultCount = db.Types2.ToList().Count(x => new DateTime?[] { null, new DateTime(2009, 9, 24, 9, 19, 29, 90) }.Contains(x.DateTimeValue2)); + // ReSharper restore RemoveToList.2 + Assert.That(resultCount, Is.GreaterThan(0)); + + var result = db.Types2.Count(x => new DateTime?[] { null, new DateTime(2009, 9, 24, 9, 19, 29, 90) }.Contains(x.DateTimeValue2)); + Assert.That(result, Is.EqualTo(resultCount)); + }); } #region GenericQuery classes @@ -605,26 +793,26 @@ protected IQueryable<IdlGrandChild> AllGrandChilds public class GenericConcatQuery : GenericQueryBase { - private System.String @p1; - private System.Int32 @p2; + private String @p1; + private Int32 @p2; public GenericConcatQuery(ITestDataContext ds, object[] args) : base(ds) { - @p1 = (System.String)args[0]; - @p2 = (System.Int32)args[1]; + @p1 = (String)args[0]; + @p2 = (Int32)args[1]; } public override IEnumerable<object> Query() { return (from y in AllPersons select y.Name) - .Concat( - from x in AllPersons - from z in AllPatients - where (x.Name == @p1 || z.Id == new ObjectId { Value = @p2 }) - select x.Name - ); + .Concat( + from x in AllPersons + from z in AllPatients + where (x.Name == @p1 || z.Id == new ObjectId { Value = @p2 }) + select x.Name + ); } } @@ -636,21 +824,21 @@ public class GenericConcatJoinOrderQuery : GenericQueryBase public GenericConcatJoinOrderQuery(ITestDataContext ds, object[] args) : base(ds) { - @p1 = (System.String)args[0]; - @p2 = (System.Int32)args[1]; + @p1 = (String)args[0]; + @p2 = (Int32)args[1]; } public override IEnumerable<object> Query() { return (from j in - (from y in AllPersons - select new { FirstName = y.Name }) - .Concat( - from x in AllPersons - from z in AllPatients - where (x.Name == @p1 || z.Id == new ObjectId { Value = @p2 }) - select new { FirstName = x.Name } - ) + (from y in AllPersons + select new { FirstName = y.Name }) + .Concat( + from x in AllPersons + from z in AllPatients + where (x.Name == @p1 || z.Id == new ObjectId { Value = @p2 }) + select new { FirstName = x.Name } + ) join g in AllGrandChilds on j.FirstName equals @p1 orderby g.ParentID.Value select new { FirstName = g.ParentID.Value.ToString() }); @@ -663,21 +851,21 @@ orderby g.ParentID.Value public void TestMono01() { ForMySqlProvider( - db => - { - var ds = new IdlPatientSource(db); - var t = "A"; - var query = - (from y in ds.Persons() - select y.Name) - .Concat( - from x in ds.Persons() - where x.Name == t - select x.Name - ); - - Assert.That(query.ToList(), Is.Not.Null); - }); + db => + { + var ds = new IdlPatientSource(db); + var t = "A"; + var query = + (from y in ds.Persons() + select y.Name) + .Concat( + from x in ds.Persons() + where x.Name == t + select x.Name + ); + + Assert.That(query.ToList(), Is.Not.Null); + }); } [Test] @@ -691,7 +879,9 @@ public void TestMono03() public void TestMono04() { ForMySqlProvider( - db => Assert.That(new GenericConcatJoinOrderQuery(db, new object[] { "A", 1 }).Query().ToList(), Is.Not.Null)); + db => + Assert.That( + new GenericConcatJoinOrderQuery(db, new object[] { "A", 1 }).Query().ToList(), Is.Not.Null)); } public static IQueryable<TSource> Concat2<TSource>(IQueryable<TSource> source1, IEnumerable<TSource> source2) @@ -699,51 +889,52 @@ public static IQueryable<TSource> Concat2<TSource>(IQueryable<TSource> source1, return source1.Provider.CreateQuery<TSource>( Expression.Call( null, - typeof(Queryable).GetMethod("Concat").MakeGenericMethod(typeof(TSource)), + typeof (Queryable).GetMethod("Concat").MakeGenericMethod(typeof (TSource)), new[] { source1.Expression, Expression.Constant(source2, typeof (IEnumerable<TSource>)) })); } [Test] public void TestMonoConcat() { - ForMySqlProvider(db => - { - var ds = new IdlPatientSource(db); - var t = "A"; - var query = Concat2( - from y in ds.Persons() select y.Name, - from x in ds.Persons() where x.Name == t select x.Name); + ForMySqlProvider( + db => + { + var ds = new IdlPatientSource(db); + var t = "A"; + var query = Concat2( + from y in ds.Persons() select y.Name, + from x in ds.Persons() where x.Name == t select x.Name); - Assert.That(query.ToList(), Is.Not.Null); - }); + Assert.That(query.ToList(), Is.Not.Null); + }); } [Test] public void TestMonoConcat2() { ForMySqlProvider( - db => - { - var ds = new IdlPatientSource(db); - var t = "A"; - var query1 = Concat2( - from y in ds.Persons() select y.Name, - from x in ds.Persons() where x.Name == t select x.Name); + db => + { + var ds = new IdlPatientSource(db); + var t = "A"; + var query1 = Concat2( + from y in ds.Persons() select y.Name, + from x in ds.Persons() where x.Name == t select x.Name); - Assert.That(query1.ToList(), Is.Not.Null); - }); + Assert.That(query1.ToList(), Is.Not.Null); + }); ForMySqlProvider( - db => - { - var ds = new IdlPatientSource(db); - var t = "A"; - var query2 = Concat2( - from y in ds.Persons() select y.Name, - from x in ds.Persons() where x.Name == t select x.Name); + db => + { + var ds = new IdlPatientSource(db); + var t = "A"; + var query2 = Concat2( + from y in ds.Persons() select y.Name, + from x in ds.Persons() where x.Name == t select x.Name); - Assert.That(query2.ToList(), Is.Not.Null); - }); + Assert.That(query2.ToList(), Is.Not.Null); + }); } } @@ -783,9 +974,10 @@ public IdlPatientSource(ITestDataContext dc) public IQueryable<IdlGrandChild> GrandChilds() { - return m_dc.GrandChild.Select(x => new IdlGrandChild + return m_dc.GrandChild.Select( + x => new IdlGrandChild { - ChildID = new IdlTest.ObjectId {Value = x.ChildID.Value}, + ChildID = new IdlTest.ObjectId { Value = x.ChildID.Value }, GrandChildID = new IdlTest.ObjectId { Value = x.GrandChildID.Value }, ParentID = new IdlTest.ObjectId { Value = x.ParentID.Value } }); @@ -806,17 +998,19 @@ public IQueryable<IdlPerson> Persons() public static class IdlPersonConverterExtensions { - public static IEnumerable<IdlPatientEx> ToIdlPatientEx(this IQueryable<IdlPatient> list, IdlPatientSource source) + public static IEnumerable<IdlPatientEx> ToIdlPatientEx( + this IQueryable<IdlPatient> list, IdlPatientSource source) { return from x in list join person in source.Persons() on x.Id.Value equals person.Id.Value select new IdlPatientEx { Id = x.Id, - Person = new IdlPerson { Id = new IdlTest.ObjectId { Value = person.Id }, Name = person.Name,}, + Person = + new IdlPerson { Id = new IdlTest.ObjectId { Value = person.Id }, Name = person.Name, }, }; } } #endregion -} \ No newline at end of file +} diff --git a/UnitTests/Linq/Inheritance.cs b/UnitTests/Linq/Inheritance.cs index b6e4df84e..8678131d4 100644 --- a/UnitTests/Linq/Inheritance.cs +++ b/UnitTests/Linq/Inheritance.cs @@ -130,7 +130,7 @@ join c in db.Child on p.ParentID equals c.ParentID } [Test] - public void TypeCastAsTest1() + public void TypeCastAsTest1([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) AreEqual( @@ -143,7 +143,7 @@ public void TypeCastAsTest1() } [Test] - public void TypeCastAsTest11() + public void TypeCastAsTest11([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) AreEqual( @@ -156,7 +156,7 @@ public void TypeCastAsTest11() } [Test] - public void TypeCastAsTest2() + public void TypeCastAsTest2([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) AreEqual( @@ -169,7 +169,7 @@ public void TypeCastAsTest2() } [Test] - public void FirstOrDefault() + public void FirstOrDefault([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) Assert.AreEqual( @@ -250,7 +250,7 @@ public void InheritanceMappingIssueTest() } [Test] - public void ReferenceNavigation() + public void ReferenceNavigation([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { @@ -276,7 +276,7 @@ from od in db.OrderDetail } [Test] - public void TypeCastIsChildConditional1() + public void TypeCastIsChildConditional1([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { @@ -293,7 +293,7 @@ public void TypeCastIsChildConditional1() } [Test] - public void TypeCastIsChildConditional2() + public void TypeCastIsChildConditional2([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { @@ -309,7 +309,7 @@ public void TypeCastIsChildConditional2() } [Test] - public void TypeCastIsChild() + public void TypeCastIsChild([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { @@ -355,7 +355,7 @@ public void Test14() } [Test] - public void Test15() + public void Test15([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { @@ -367,7 +367,7 @@ public void Test15() } [Test] - public void Test16() + public void Test16([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { @@ -454,37 +454,55 @@ public void QuerySyntaxSimpleTest() } [TableName("Person")] - [InheritanceMapping(Code = 1, Type = typeof(Test17John))] - [InheritanceMapping(Code = 2, Type = typeof(Test17Tester))] + //[InheritanceMapping(Code = 1, Type = typeof(Test17John))] + //[InheritanceMapping(Code = 2, Type = typeof(Test17Tester))] public class Test17Person { [MapField(IsInheritanceDiscriminator = true)] public int PersonID { get; set; } } - public class Test17John : Test17Person - { - public string FirstName { get; set; } - } - - public class Test17Tester : Test17Person - { - public string LastName { get; set; } - } - - [Test] - public void Test17() - { - ForEachProvider(context => - { - if (context is TestDbManager) - { - var db = (TestDbManager)context; - db.GetTable<Test17Person>().OfType<Test17John>().ToList(); - Assert.False(db.LastQuery.ToLowerInvariant().Contains("lastname"), "Why select LastName field??"); - } - }); - } + public class Test17Male : Test17Person + { + public string FirstName { get; set; } + } + + public class Test17Female : Test17Person + { + public string FirstName { get; set; } + public string LastName { get; set; } + } + + [Test] + public void Test17() + { + ForEachProvider(context => + { + if (context is TestDbManager) + { + var db = (TestDbManager)context; + db.GetTable<Test17Person>().OfType<Test17Male>().ToList(); + Assert.False(db.LastQuery.ToLowerInvariant().Contains("lastname"), "Why select LastName field??"); + } + }); + } + + [Test] + public void Test18ExceptFirebird() + { + ForEachProvider(Providers.Select(p => p.Name).Except(new[] { ProviderName.Firebird }).ToArray(), context => + { + var db = context as TestDbManager; + if (db == null) return; + var ids = Enumerable.Range(0, 10).ToList(); + var persons = + (from person1 in db.GetTable<Test17Person>() + where ids.Contains(person1.PersonID) + join person2 in db.GetTable<Test17Person>() on person1.PersonID equals person2.PersonID + select person1).Distinct(); + persons.OfType<Test17Female>().ToList(); + }); + } [TableName("Person")] [InheritanceMapping(Code = Gender.Male, Type = typeof(Test18Male))] diff --git a/UnitTests/Linq/DmlTest.cs b/UnitTests/Linq/InsertTest.cs similarity index 62% rename from UnitTests/Linq/DmlTest.cs rename to UnitTests/Linq/InsertTest.cs index 129980493..d37c921fe 100644 --- a/UnitTests/Linq/DmlTest.cs +++ b/UnitTests/Linq/InsertTest.cs @@ -20,370 +20,8 @@ namespace Update { [TestFixture] - public class DmlTest : TestBase + public class InsertTest : TestBase { - [Test] - public void Delete1() - { - ForEachProvider(db => - { - var parent = new Parent1 { ParentID = 1001, Value1 = 1001 }; - - db.Delete(parent); - db.Insert(parent); - - Assert.AreEqual(1, db.Parent.Count (p => p.ParentID == parent.ParentID)); - Assert.AreEqual(1, db.Parent.Delete(p => p.ParentID == parent.ParentID)); - Assert.AreEqual(0, db.Parent.Count (p => p.ParentID == parent.ParentID)); - }); - } - - [Test] - public void Delete2() - { - ForEachProvider(db => - { - var parent = new Parent1 { ParentID = 1001, Value1 = 1001 }; - - db.Delete(parent); - db.Insert(parent); - - Assert.AreEqual(1, db.Parent.Count(p => p.ParentID == parent.ParentID)); - Assert.AreEqual(1, db.Parent.Where(p => p.ParentID == parent.ParentID).Delete()); - Assert.AreEqual(0, db.Parent.Count(p => p.ParentID == parent.ParentID)); - }); - } - - [Test] - public void Delete3() - { - ForEachProvider(new[] { ProviderName.Informix }, db => - { - db.Child.Delete(c => new[] { 1001, 1002 }.Contains(c.ChildID)); - - db.Child.Insert(() => new Child { ParentID = 1, ChildID = 1001 }); - db.Child.Insert(() => new Child { ParentID = 1, ChildID = 1002 }); - - Assert.AreEqual(3, db.Child.Count(c => c.ParentID == 1)); - Assert.AreEqual(2, db.Child.Where(c => c.Parent.ParentID == 1 && new[] { 1001, 1002 }.Contains(c.ChildID)).Delete()); - Assert.AreEqual(1, db.Child.Count(c => c.ParentID == 1)); - }); - } - - [Test] - public void Delete4() - { - ForEachProvider(new[] { ProviderName.Informix }, db => - { - db.GrandChild1.Delete(gc => new[] { 1001, 1002 }.Contains(gc.GrandChildID.Value)); - - db.GrandChild.Insert(() => new GrandChild { ParentID = 1, ChildID = 1, GrandChildID = 1001 }); - db.GrandChild.Insert(() => new GrandChild { ParentID = 1, ChildID = 2, GrandChildID = 1002 }); - - Assert.AreEqual(3, db.GrandChild1.Count(gc => gc.ParentID == 1)); - Assert.AreEqual(2, db.GrandChild1.Where(gc => gc.Parent.ParentID == 1 && new[] { 1001, 1002 }.Contains(gc.GrandChildID.Value)).Delete()); - Assert.AreEqual(1, db.GrandChild1.Count(gc => gc.ParentID == 1)); - }); - } - - [Test] - public void Delete5() - { - ForEachProvider(db => - { - var values = new[] { 1001, 1002 }; - - db.Parent.Delete(_ => _.ParentID > 1000); - - db.Parent.Insert(() => new Parent { ParentID = values[0], Value1 = 1 }); - db.Parent.Insert(() => new Parent { ParentID = values[1], Value1 = 1 }); - - Assert.AreEqual(2, db.Parent.Count(_ => _.ParentID > 1000)); - Assert.AreEqual(2, db.Parent.Delete(_ => values.Contains(_.ParentID))); - Assert.AreEqual(0, db.Parent.Count(_ => _.ParentID > 1000)); - }); - } - - [Test] - public void Update1() - { - ForEachProvider(db => - { - try - { - var parent = new Parent1 { ParentID = 1001, Value1 = 1001 }; - - db.Parent.Delete(p => p.ParentID > 1000); - db.Insert(parent); - - Assert.AreEqual(1, db.Parent.Count (p => p.ParentID == parent.ParentID)); - Assert.AreEqual(1, db.Parent.Update(p => p.ParentID == parent.ParentID, p => new Parent { ParentID = p.ParentID + 1 })); - Assert.AreEqual(1, db.Parent.Count (p => p.ParentID == parent.ParentID + 1)); - } - finally - { - db.Child.Delete(c => c.ChildID > 1000); - } - }); - } - - [Test] - public void Update2() - { - ForEachProvider(db => - { - try - { - var parent = new Parent1 { ParentID = 1001, Value1 = 1001 }; - - db.Parent.Delete(p => p.ParentID > 1000); - db.Insert(parent); - - Assert.AreEqual(1, db.Parent.Count(p => p.ParentID == parent.ParentID)); - Assert.AreEqual(1, db.Parent.Where(p => p.ParentID == parent.ParentID).Update(p => new Parent { ParentID = p.ParentID + 1 })); - Assert.AreEqual(1, db.Parent.Count(p => p.ParentID == parent.ParentID + 1)); - } - finally - { - db.Child.Delete(c => c.ChildID > 1000); - } - }); - } - - [Test] - public void Update3() - { - ForEachProvider(new[] { ProviderName.Informix }, db => - { - try - { - var id = 1001; - - db.Child.Delete(c => c.ChildID > 1000); - db.Child.Insert(() => new Child { ParentID = 1, ChildID = id}); - - Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id)); - Assert.AreEqual(1, db.Child.Where(c => c.ChildID == id && c.Parent.Value1 == 1).Update(c => new Child { ChildID = c.ChildID + 1 })); - Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id + 1)); - } - finally - { - db.Child.Delete(c => c.ChildID > 1000); - } - }); - } - - [Test] - public void Update4() - { - ForEachProvider(new[] { ProviderName.Informix }, db => - { - try - { - var id = 1001; - - db.Child.Delete(c => c.ChildID > 1000); - db.Child.Insert(() => new Child { ParentID = 1, ChildID = id}); - - Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id)); - Assert.AreEqual(1, - db.Child - .Where(c => c.ChildID == id && c.Parent.Value1 == 1) - .Set(c => c.ChildID, c => c.ChildID + 1) - .Update()); - Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id + 1)); - } - finally - { - db.Child.Delete(c => c.ChildID > 1000); - } - }); - } - - [Test] - public void Update5() - { - ForEachProvider(new[] { ProviderName.Informix }, db => - { - try - { - var id = 1001; - - db.Child.Delete(c => c.ChildID > 1000); - db.Child.Insert(() => new Child { ParentID = 1, ChildID = id}); - - Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id)); - Assert.AreEqual(1, - db.Child - .Where(c => c.ChildID == id && c.Parent.Value1 == 1) - .Set(c => c.ChildID, () => id + 1) - .Update()); - Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id + 1)); - } - finally - { - db.Child.Delete(c => c.ChildID > 1000); - } - }); - } - - [Test] - public void Update6() - { - ForEachProvider(new[] { ProviderName.Informix }, db => - { - try - { - var id = 1001; - - db.Parent4.Delete(p => p.ParentID > 1000); - db.Insert(new Parent4 { ParentID = id, Value1 = TypeValue.Value1 }); - - Assert.AreEqual(1, db.Parent4.Count(p => p.ParentID == id && p.Value1 == TypeValue.Value1)); - Assert.AreEqual(1, - db.Parent4 - .Where(p => p.ParentID == id) - .Set(p => p.Value1, () => TypeValue.Value2) - .Update()); - Assert.AreEqual(1, db.Parent4.Count(p => p.ParentID == id && p.Value1 == TypeValue.Value2)); - } - finally - { - db.Parent4.Delete(p => p.ParentID > 1000); - } - }); - } - - [Test] - public void Update7() - { - ForEachProvider(new[] { ProviderName.Informix }, db => - { - try - { - var id = 1001; - - db.Parent4.Delete(p => p.ParentID > 1000); - db.Insert(new Parent4 { ParentID = id, Value1 = TypeValue.Value1 }); - - Assert.AreEqual(1, db.Parent4.Count(p => p.ParentID == id && p.Value1 == TypeValue.Value1)); - Assert.AreEqual(1, - db.Parent4 - .Where(p => p.ParentID == id) - .Set(p => p.Value1, TypeValue.Value2) - .Update()); - Assert.AreEqual(1, db.Parent4.Count(p => p.ParentID == id && p.Value1 == TypeValue.Value2)); - - Assert.AreEqual(1, - db.Parent4 - .Where(p => p.ParentID == id) - .Set(p => p.Value1, TypeValue.Value3) - .Update()); - Assert.AreEqual(1, db.Parent4.Count(p => p.ParentID == id && p.Value1 == TypeValue.Value3)); - } - finally - { - db.Parent4.Delete(p => p.ParentID > 1000); - } - }); - } - - [Test] - public void Update8() - { - ForEachProvider(db => - { - try - { - var parent = new Parent1 { ParentID = 1001, Value1 = 1001 }; - - db.Parent.Delete(p => p.ParentID > 1000); - db.Insert(parent); - - parent.Value1++; - - db.Update(parent); - - Assert.AreEqual(1002, db.Parent.Single(p => p.ParentID == parent.ParentID).Value1); - } - finally - { - db.Child.Delete(c => c.ChildID > 1000); - } - }); - } - - [Test] - public void Update9() - { - ForEachProvider(new[] { ProviderName.Informix, ProviderName.SqlCe, ProviderName.DB2, ProviderName.Firebird, "Oracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, db => - { - try - { - var id = 1001; - - db.Child.Delete(c => c.ChildID > 1000); - db.Child.Insert(() => new Child { ParentID = 1, ChildID = id}); - - var q = - from c in db.Child - join p in db.Parent on c.ParentID equals p.ParentID - where c.ChildID == id && c.Parent.Value1 == 1 - select new { c, p }; - - Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id)); - Assert.AreEqual(1, q.Update(db.Child, _ => new Child { ChildID = _.c.ChildID + 1, ParentID = _.p.ParentID })); - Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id + 1)); - } - finally - { - db.Child.Delete(c => c.ChildID > 1000); - } - }); - } - - [Test] - public void Update10() - { - ForEachProvider(new[] { ProviderName.Informix, ProviderName.SqlCe, ProviderName.DB2, ProviderName.Firebird, "Oracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, db => - { - try - { - var id = 1001; - - db.Child.Delete(c => c.ChildID > 1000); - db.Child.Insert(() => new Child { ParentID = 1, ChildID = id}); - - var q = - from p in db.Parent - join c in db.Child on p.ParentID equals c.ParentID - where c.ChildID == id && c.Parent.Value1 == 1 - select new { c, p }; - - Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id)); - Assert.AreEqual(1, q.Update(db.Child, _ => new Child { ChildID = _.c.ChildID + 1, ParentID = _.p.ParentID })); - Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id + 1)); - } - finally - { - db.Child.Delete(c => c.ChildID > 1000); - } - }); - } - - //[Test] - public void Update11() - { - ForEachProvider(db => - { - var q = db.GetTable<LinqDataTypes2>().Union(db.GetTable<LinqDataTypes2>()); - - //db.GetTable<LinqDataTypes2>().Update(_ => q.Contains(_), _ => new LinqDataTypes2 { GuidValue = _.GuidValue }); - - q.Update(_ => new LinqDataTypes2 { GuidValue = _.GuidValue }); - }); - } - [Test] public void DistinctInsert1() { @@ -605,6 +243,25 @@ public void Insert5() }); } + [Test] + public void Insert65() + { + ForEachProvider(db => + { + try + { + db.Person.Where(p => p.Gender == Gender.Male) + .Into(db.Doctor) + .Value(d => d.PersonID, p => p.ID + 10) + .Value(d => d.Taxonomy, "VALERIU") + .Insert(); + } + finally + { + } + }); + } + [Test] public void Insert6() { @@ -781,10 +438,10 @@ public void InsertUnion1() ForEachProvider( db => { + db.Parent.Delete(p => p.ParentID > 1000); + try { - db.Parent.Delete(p => p.ParentID > 1000); - var q = db.Child. Select(c => new Parent { ParentID = c.ParentID, Value1 = (int) Math.Floor(c.ChildID / 10.0) }).Union( db.GrandChild.Select(c => new Parent { ParentID = c.ParentID ?? 0, Value1 = (int?)Math.Floor((c.GrandChildID ?? 0) / 100.0) })); @@ -1202,22 +859,6 @@ public void InsertOrUpdate3() }); } - static readonly Func<TestDbManager,int,string,int> _updateQuery = - CompiledQuery.Compile <TestDbManager,int,string,int>((ctx,key,value) => - ctx.Person - .Where(_ => _.ID == key) - .Set(_ => _.FirstName, value) - .Update()); - - [Test] - public void CompiledUpdate() - { - using (var ctx = new TestDbManager()) - { - _updateQuery(ctx, 12345, "54321"); - } - } - [Test] public void InsertBatch1() { @@ -1239,9 +880,9 @@ public void InsertBatch1() } [Test] - public void InsertBatch2() + public void InsertBatch2([IncludeDataContexts("Sql2008", "Sql2012")] string context) { - using (var db = new TestDbManager("Sql2008")) + using (var db = new TestDbManager(context)) { db.Types2.Delete(_ => _.ID > 1000); @@ -1340,7 +981,7 @@ public void Insert13() public void Insert14() { ForEachProvider( - new [] { ProviderName.SqlCe, ProviderName.Access, "Sql2005", ProviderName.Sybase }, + new [] { ProviderName.SqlCe, ProviderName.Access, "Sql2000", "Sql2005", ProviderName.Sybase }, db => { try diff --git a/UnitTests/Linq/JoinTest.cs b/UnitTests/Linq/JoinTest.cs index 212ce18ed..316796a67 100644 --- a/UnitTests/Linq/JoinTest.cs +++ b/UnitTests/Linq/JoinTest.cs @@ -1,10 +1,11 @@ -using System.Linq; +using System; +using System.Linq; using BLToolkit.Data.DataProvider; using BLToolkit.Data.Linq; using BLToolkit.DataAccess; using BLToolkit.Mapping; -using BLToolkit.Validation; + using NUnit.Framework; namespace Data.Linq @@ -752,9 +753,9 @@ join p3 in db.Person on p2.PersonID equals p3.ID } [Test] - public void StackOverflow() + public void StackOverflow([IncludeDataContexts("Sql2008", "Sql2012")] string context) { - using (var db = new TestDbManager()) + using (var db = new TestDbManager(context)) { var q = from c in db.Child @@ -772,5 +773,42 @@ join p in db.Parent on c.p.ParentID equals p.ParentID var list = q.ToList(); } } + + [Test] + public void ApplyJoin([IncludeDataContexts("Sql2008")] string context) + { + using (var db = new TestDbManager(context)) + { + var q = + from ch in db.Child + from p in new Model.Functions(db).GetParentByID(ch.Parent.ParentID) + select p; + + q.ToList(); + } + } + + [Test] + public void Issue257([DataContexts] string context) + { + using (var db = GetDataContext(context)) + { + var q = + from m in db.Types + join p in db.Parent on m.ID equals p.ParentID + group m by new + { + m.DateTimeValue.Date + } + into b + select new + { + QualiStatusByDate = b.Key, + Count = b.Count() + }; + + q.ToList(); + } + } } } diff --git a/UnitTests/Linq/L2SAttributes.cs b/UnitTests/Linq/L2SAttributes.cs index b69b3c629..75da3101b 100644 --- a/UnitTests/Linq/L2SAttributes.cs +++ b/UnitTests/Linq/L2SAttributes.cs @@ -36,9 +36,9 @@ public int PersonID public class L2SAttributes : TestBase { [Test] - public void IsDbGeneratedTest() + public void IsDbGeneratedTest([IncludeDataContexts("Sql2008", "Sql2012")] string context) { - using (var db = new TestDbManager("Sql2008")) + using (var db = new TestDbManager(context)) { db.BeginTransaction(); diff --git a/UnitTests/Linq/Mapping.cs b/UnitTests/Linq/Mapping.cs index 0c0f33d8b..1824fe10d 100644 --- a/UnitTests/Linq/Mapping.cs +++ b/UnitTests/Linq/Mapping.cs @@ -3,8 +3,9 @@ using BLToolkit.Data.Linq; using BLToolkit.DataAccess; +using BLToolkit.EditableObjects; using BLToolkit.Mapping; - +using BLToolkit.Reflection; using NUnit.Framework; using Convert = System.Convert; @@ -347,5 +348,99 @@ public void MapIgnore3() Parent .Select(p => new { p.ParentID, Value = 2 }), db.GetTable<MyParent1>().Select(p => new { p.ParentID, Value = p.GetValue() }))); } + + [TableName("Parent")] + public abstract class AbsParent : EditableObject + { + public abstract int ParentID { get; set; } + public abstract int? Value1 { get; set; } + } + + [TableName("Child")] + public abstract class AbsChild : EditableObject + { + public abstract int ParentID { get; set; } + public abstract int ChildID { get; set; } + + [Association(ThisKey = "ParentID", OtherKey = "ParentID", CanBeNull = false)] + public AbsParent Parent; + } + + [Test] + public void MapAbstract() + { + using (var db = new TestDbManager()) + { + var q = from a in db.GetTable<AbsChild>() + select new { a.ChildID, a.Parent.Value1 }; + + var ql = q.ToList(); + } + } + + public class Entity { public int Id { get; set; } } + public interface IDocument { int Id { get; set; } } + public class Document : Entity, IDocument { } + + [Test] + public void TestMethod() + { + using (var db = new TestDbManager()) + { + IQueryable<IDocument> query = db.GetTable<Document>(); + var idsQuery = query.Select(s => s.Id); + var str = idsQuery.ToString(); // Exception + Assert.IsNotNull(str); + } + } + + [TableName("Parent")] + public abstract class ParentX + { + [MapField("ParentID")] + public abstract int ParentID { get; set; } + [MapField("Value1")] + public abstract int? Value1 { get; set; } + } + + [TableName("Child")] + [MapField("ParentID", "Parent.ParentID")] + public abstract class ChildX + { + [MapField("ChildID")] + public abstract int ChildID { get; set; } + public abstract ParentX Parent { get; set; } + } + + [Test] + public void Test4([DataContexts] string contexts) + { + using (var db = GetDataContext(contexts)) + { + db.Child. Delete(p => p.ParentID == 1001); + db.Parent.Delete(p => p.ParentID == 1001); + + try + { + var child = TypeAccessor.CreateInstance<ChildX>(); + var parent = TypeAccessor.CreateInstance<ParentX>(); + + parent.ParentID = 1001; + parent.Value1 = 1; + + db.Insert(parent); + + child.ChildID = 1001; + child.Parent = parent; + + db.Insert(child); + } + finally + { + db.Child. Delete(p => p.ParentID == 1001); + db.Parent.Delete(p => p.ParentID == 1001); + } + } + } } } diff --git a/UnitTests/Linq/MathFunctions.cs b/UnitTests/Linq/MathFunctions.cs index b388feec9..52f57531b 100644 --- a/UnitTests/Linq/MathFunctions.cs +++ b/UnitTests/Linq/MathFunctions.cs @@ -18,7 +18,7 @@ from t in from p in Types select Math.Abs(p.MoneyValue) where t > 0 select t, from t in from p in db.Types select Math.Abs(p.MoneyValue) where t > 0 select t)); } - [Test] + [Test] public void Acos() { ForEachProvider(new[] { ProviderName.Access }, db => AreEqual( @@ -26,7 +26,7 @@ from t in from p in Types select Math.Floor(Math.Acos((double)p.MoneyValue / from t in from p in db.Types select Math.Floor(Math.Acos((double)p.MoneyValue / 15) * 15) where t != 0.1 select t)); } - [Test] + [Test] public void Asin() { ForEachProvider(new[] { ProviderName.Access }, db => AreEqual( @@ -42,7 +42,7 @@ from t in from p in Types select Math.Floor(Math.Atan((double)p.MoneyValue / from t in from p in db.Types select Math.Floor(Math.Atan((double)p.MoneyValue / 15) * 15) where t != 0.1 select t)); } - [Test] + [Test] public void Atan2() { ForEachProvider(new[] { ProviderName.Access }, db => AreEqual( @@ -198,8 +198,8 @@ from t in from p in Types select Math.Round((double)p.MoneyValue) where t != public void Round3() { ForEachProvider(db => AreEqual( - from t in from p in Types select Math.Round(p.MoneyValue, 1) where t != 0 select t, - from t in from p in db.Types select Math.Round(p.MoneyValue, 1) where t != 0 select t)); + from t in from p in Types select Math.Round(p.MoneyValue, 1) where t != 0 && t != 7 select t, + from t in from p in db.Types select Math.Round(p.MoneyValue, 1) where t != 0 && t != 7 select t)); } [Test] @@ -254,8 +254,8 @@ from t in from p in Types select Math.Round(p.MoneyValue, 1, MidpointRounding public void Round10() { ForEachProvider(db => AreEqual( - from t in from p in Types select Math.Round(p.MoneyValue, 1, MidpointRounding.ToEven) where t != 0 select t, - from t in from p in db.Types select Math.Round(p.MoneyValue, 1, MidpointRounding.ToEven) where t != 0 select t)); + from t in from p in Types select Math.Round(p.MoneyValue, 1, MidpointRounding.ToEven) where t != 0 && t != 7 select t, + from t in from p in db.Types select Math.Round(p.MoneyValue, 1, MidpointRounding.ToEven) where t != 0 && t != 7 select t)); } [Test] @@ -272,8 +272,8 @@ public void Round12() var mp = MidpointRounding.AwayFromZero; ForEachProvider(new[] { ProviderName.SQLite }, db => AreEqual( - from t in from p in Types select Math.Round(p.MoneyValue, 1, mp) where t != 0 select t, - from t in from p in db.Types select Math.Round(p.MoneyValue, 1, mp) where t != 0 select t)); + from t in from p in Types select Math.Round(p.MoneyValue, 1, mp) where t != 0 && t != 7 select t, + from t in from p in db.Types select Math.Round(p.MoneyValue, 1, mp) where t != 0 && t != 7 select t)); } [Test] diff --git a/UnitTests/Linq/Model/ParentChild.cs b/UnitTests/Linq/Model/ParentChild.cs index a0ac74344..6990b305d 100644 --- a/UnitTests/Linq/Model/ParentChild.cs +++ b/UnitTests/Linq/Model/ParentChild.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Reflection; + using BLToolkit.Data.Linq; using BLToolkit.DataAccess; using BLToolkit.Mapping; diff --git a/UnitTests/Linq/Model/Person.cs b/UnitTests/Linq/Model/Person.cs index 6e1556b2e..e497cbb99 100644 --- a/UnitTests/Linq/Model/Person.cs +++ b/UnitTests/Linq/Model/Person.cs @@ -37,6 +37,9 @@ public Person(int id, string firstName) [Association(ThisKey = "ID", OtherKey = "PersonID", CanBeNull = true)] public Patient Patient; + //[Association(ThisKey = "ID", OtherKey = "PersonID", CanBeNull = true)] + //public Doctor Doctor; + public override bool Equals(object obj) { return Equals(obj as Person); diff --git a/UnitTests/Linq/Model/TestIdentity.cs b/UnitTests/Linq/Model/TestIdentity.cs index 5ea30dc8b..9daff3895 100644 --- a/UnitTests/Linq/Model/TestIdentity.cs +++ b/UnitTests/Linq/Model/TestIdentity.cs @@ -1,15 +1,15 @@ -using System; - -using BLToolkit.DataAccess; - -namespace Data.Linq.Model -{ - public class TestIdentity - { - [Identity, PrimaryKey] - //[SequenceName(ProviderName.PostgreSQL, "Seq")] - //[SequenceName(ProviderName.Firebird, "PersonID")] - //[SequenceName("ID")] - public int ID; - } -} +using System; + +using BLToolkit.DataAccess; + +namespace Data.Linq.Model +{ + public class TestIdentity + { + [Identity, PrimaryKey] + //[SequenceName(ProviderName.PostgreSQL, "Seq")] + //[SequenceName(ProviderName.Firebird, "PersonID")] + //[SequenceName("ID")] + public int ID; + } +} diff --git a/UnitTests/Linq/OrderByTest.cs b/UnitTests/Linq/OrderByTest.cs index 5eaf38661..8f8b9f546 100644 --- a/UnitTests/Linq/OrderByTest.cs +++ b/UnitTests/Linq/OrderByTest.cs @@ -5,6 +5,8 @@ using BLToolkit.Data.DataProvider; +// ReSharper disable ReturnValueOfPureMethodIsNotUsed + namespace Data.Linq { [TestFixture] @@ -117,6 +119,28 @@ from ch in db.Child }); } + [Test] + public void OrderBy6([DataContexts(ExcludeLinqService = true)] string context) + { + using (var dataContext = GetDataContext(context)) + { + if (!(dataContext is TestDbManager)) return; + var db = (TestDbManager)dataContext; + + var q = + from person in db.Person + join patient in db.Patient on person.ID equals patient.PersonID into g + from patient in g.DefaultIfEmpty() + orderby person.MiddleName // if comment this line then "Diagnosis" is not selected. + select new { person.ID, PatientID = patient != null ? (int?)patient.PersonID : null }; + + q.ToList(); + + Assert.IsFalse(db.LastQuery.Contains("Diagnosis"), "Why do we select Patient.Diagnosis??"); + + }; + } + [Test] public void ConditionOrderBy() { @@ -303,5 +327,6 @@ join g in db.GrandChild on c.ChildID equals g.ChildID Assert.AreEqual(3, q.AsEnumerable().Count()); }); } + } } diff --git a/UnitTests/Linq/ParserTest.cs b/UnitTests/Linq/ParserTest.cs index 2c88b47da..e683655b9 100644 --- a/UnitTests/Linq/ParserTest.cs +++ b/UnitTests/Linq/ParserTest.cs @@ -866,9 +866,9 @@ join g in db.GrandChild on p.ParentID equals g.ParentID } [Test] - public void Join6() + public void Join6([IncludeDataContexts("Sql2008", "Sql2012")] string context) { - using (var db = new TestDbManager()) + using (var db = new TestDbManager(context)) { var q = from g in db.GrandChild diff --git a/UnitTests/Linq/Properties/AssemblyInfo.cs b/UnitTests/Linq/Properties/AssemblyInfo.cs index 2e39bbe3a..7d9962b9c 100644 --- a/UnitTests/Linq/Properties/AssemblyInfo.cs +++ b/UnitTests/Linq/Properties/AssemblyInfo.cs @@ -30,5 +30,3 @@ // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] - -[assembly: CLSCompliant(true)] diff --git a/UnitTests/Linq/ProviderSpecific/Firebird.cs b/UnitTests/Linq/ProviderSpecific/Firebird.cs index 47768c220..d13b6700b 100644 --- a/UnitTests/Linq/ProviderSpecific/Firebird.cs +++ b/UnitTests/Linq/ProviderSpecific/Firebird.cs @@ -1,6 +1,7 @@ using System; using System.Linq; +using BLToolkit.Data.DataProvider; using BLToolkit.Data.Linq; using NUnit.Framework; @@ -9,13 +10,13 @@ namespace Data.Linq.ProviderSpecific { - [TestFixture] + [TestFixture, Category("Firebird")] public class Firebird : TestBase { [Test] - public void SequenceInsert() + public void SequenceInsert([IncludeDataContexts(ProviderName.Firebird)] string context) { - using (var db = new TestDbManager("Fdp")) + using (var db = new TestDbManager(context)) { db.GetTable<FirebirdSpecific.SequenceTest>().Where(_ => _.Value == "SeqValue").Delete(); db.Insert(new FirebirdSpecific.SequenceTest { Value = "SeqValue" }); @@ -29,9 +30,9 @@ public void SequenceInsert() } [Test] - public void SequenceInsertWithIdentity() + public void SequenceInsertWithIdentity([IncludeDataContexts(ProviderName.Firebird)] string context) { - using (var db = new TestDbManager("Fdp")) + using (var db = new TestDbManager(context)) { db.GetTable<FirebirdSpecific.SequenceTest>().Where(_ => _.Value == "SeqValue").Delete(); diff --git a/UnitTests/Linq/ProviderSpecific/MsSql2008s.cs b/UnitTests/Linq/ProviderSpecific/MsSql2008s.cs index b5d618c05..3d3c16993 100644 --- a/UnitTests/Linq/ProviderSpecific/MsSql2008s.cs +++ b/UnitTests/Linq/ProviderSpecific/MsSql2008s.cs @@ -1,5 +1,6 @@ using System; - +using System.Linq; +using BLToolkit.Data.Linq; using NUnit.Framework; namespace Data.Linq.ProviderSpecific @@ -8,9 +9,9 @@ namespace Data.Linq.ProviderSpecific public class MsSql2008 : TestBase { [Test] - public void SqlTest() + public void SqlTest([IncludeDataContexts("Sql2008", "Sql2012")] string context) { - using (var db = new TestDbManager("Sql2008")) + using (var db = new TestDbManager(context)) using (var rd = db.SetCommand(@" SELECT DateAdd(Hour, 1, [t].[DateTimeValue]) - [t].[DateTimeValue] @@ -26,10 +27,19 @@ public void SqlTest() } [Test] - public void SqlTypeTest() + public void SqlTypeTest([IncludeDataContexts("Sql2008", "Sql2012")] string context) { - using (var db = new TestDbManager("Sql2008")) + using (var db = new TestDbManager(context)) { + var q = + from p in db.Parent + join c in db.Child on p.ParentID equals c.ParentID into g + from c in g.DefaultIfEmpty() + select new {p, b = Sql.AsSql((int?)c.ParentID) }; + + var list = q.ToList(); + + var value = db.SetCommand(@"SELECT SmallIntValue FROM LinqDataTypes WHERE ID = 1").ExecuteScalar<short>(); db.SetCommand(@"UPDATE LinqDataTypes SET SmallIntValue = @value WHERE ID = 1", db.Parameter("value", (ushort)value)).ExecuteNonQuery(); diff --git a/UnitTests/Linq/ProviderSpecific/MySqlSprocParameterPrefixTests.cs b/UnitTests/Linq/ProviderSpecific/MySqlSprocParameterPrefixTests.cs index 4592f454f..74fc157a0 100644 --- a/UnitTests/Linq/ProviderSpecific/MySqlSprocParameterPrefixTests.cs +++ b/UnitTests/Linq/ProviderSpecific/MySqlSprocParameterPrefixTests.cs @@ -14,14 +14,14 @@ namespace Data.Linq.ProviderSpecific public class MySqlSprocParameterPrefixTests : TestBase { [Test] - public void ParameterPrefixTest() + public void ParameterPrefixTest([IncludeDataContexts(ProviderName.MySql)] string context) { var oldPrefix = MySqlDataProvider.SprocParameterPrefix; MySqlDataProvider.SprocParameterPrefix = "_"; try { - using (var db = new TestDbManager(ProviderName.MySql)) + using (var db = new TestDbManager(context)) { var person = db.SetSpCommand("GetPersonById", db.Parameter("?ID", 1)).ExecuteObject<Person>(); Assert.IsNotNull(person); @@ -39,14 +39,14 @@ public void ParameterPrefixTest() } [Test] - public void SetCommandWorksCorrectlyWithSprocParameterPrefixSet() + public void SetCommandWorksCorrectlyWithSprocParameterPrefixSet([IncludeDataContexts(ProviderName.MySql)] string context) { var oldPrefix = MySqlDataProvider.SprocParameterPrefix; MySqlDataProvider.SprocParameterPrefix = "_"; try { - using (var db = new DbManager(ProviderName.MySql)) + using (var db = new DbManager(context)) { var person = db.SetCommand( "SELECT * FROM Person WHERE PersonID = ?PersonID", @@ -72,9 +72,9 @@ public void SetCommandWorksCorrectlyWithSprocParameterPrefixSet() } [Test] - public void SprocParameterPrefixShouldBeSpecifiedManuallyWhenItIsNotSet() + public void SprocParameterPrefixShouldBeSpecifiedManuallyWhenItIsNotSet([IncludeDataContexts(ProviderName.MySql)] string context) { - using (var db = new DbManager(ProviderName.MySql)) + using (var db = new DbManager(context)) { var person = db.SetSpCommand("GetPersonById", db.Parameter("?_ID", 1)).ExecuteObject<Person>(); Assert.IsNotNull(person); @@ -89,13 +89,13 @@ public void SprocParameterPrefixShouldBeSpecifiedManuallyWhenItIsNotSet() } [Test] - public void ParameterSymbolMayBeOmitedForSpCommand() + public void ParameterSymbolMayBeOmitedForSpCommand([IncludeDataContexts(ProviderName.MySql)] string context) { // I am not sure this is a good thing though // Maybe we need to be more strict on syntax and on the library users // and do not allow different syntax (omiting parameter symbol)? - using (var db = new DbManager(ProviderName.MySql)) + using (var db = new DbManager(context)) { var person = db.SetSpCommand("GetPersonById", db.Parameter("_ID", 1)).ExecuteObject<Person>(); Assert.IsNotNull(person); @@ -124,14 +124,14 @@ public void ParameterSymbolMayBeOmitedForSpCommand() } [Test] - public void SpecifyingParameterPrefixManuallyIsAlsoOk() + public void SpecifyingParameterPrefixManuallyIsAlsoOk([IncludeDataContexts(ProviderName.MySql)] string context) { var oldPrefix = MySqlDataProvider.SprocParameterPrefix; MySqlDataProvider.SprocParameterPrefix = "_"; try { - using (var db = new DbManager(ProviderName.MySql)) + using (var db = new DbManager(context)) { // we specify parameter name with a prefix, though SprocParameterPrefix is specified // in this case additional parameter prefix will not be added, so everything will be ok @@ -146,14 +146,14 @@ public void SpecifyingParameterPrefixManuallyIsAlsoOk() } [Test] - public void PrefixIsAddedWhenRetrievingParameterFromDbManager() + public void PrefixIsAddedWhenRetrievingParameterFromDbManager([IncludeDataContexts(ProviderName.MySql)] string context) { var oldPrefix = MySqlDataProvider.SprocParameterPrefix; MySqlDataProvider.SprocParameterPrefix = "_"; try { - using (var db = new DbManager(ProviderName.MySql)) + using (var db = new DbManager(context)) { db.SetSpCommand("GetPersonById", db.Parameter("?ID", 1)).Prepare(); diff --git a/UnitTests/Linq/ProviderSpecific/Oracle.cs b/UnitTests/Linq/ProviderSpecific/Oracle.cs index 2451c10fa..e1fe60bd9 100644 --- a/UnitTests/Linq/ProviderSpecific/Oracle.cs +++ b/UnitTests/Linq/ProviderSpecific/Oracle.cs @@ -16,15 +16,15 @@ namespace Data.Linq.ProviderSpecific { using Model; - [TestFixture] + [TestFixture, Category("Oracle")] public class Oracle : TestBase { #region Sequence [Test] - public void SequenceInsert() + public void SequenceInsert([IncludeDataContexts("Oracle")] string context) { - using (var db = new TestDbManager("Oracle")) + using (var db = new TestDbManager(context)) { db.GetTable<OracleSpecific.SequenceTest>().Where(_ => _.Value == "SeqValue").Delete(); db.Insert(new OracleSpecific.SequenceTest { Value = "SeqValue" }); @@ -38,9 +38,9 @@ public void SequenceInsert() } [Test] - public void SequenceInsertWithIdentity() + public void SequenceInsertWithIdentity([IncludeDataContexts("Oracle")] string context) { - using (var db = new TestDbManager("Oracle")) + using (var db = new TestDbManager(context)) { db.GetTable<OracleSpecific.SequenceTest>().Where(_ => _.Value == "SeqValue").Delete(); @@ -72,7 +72,7 @@ public class Trade } [Test] - public void InsertBatch1() + public void InsertBatch1([IncludeDataContexts("Oracle")] string context) { var data = new[] { @@ -86,16 +86,16 @@ public void InsertBatch1() new Trade { ID = 973, Version = 1, TypeID = 20160, TypeName = "EU Allowances", }, }; - using (var db = new TestDbManager("Oracle")) + using (var db = new TestDbManager(context)) { db.InsertBatch(5, data); } } [Test] - public void InsertBatch2() + public void InsertBatch2([IncludeDataContexts("Oracle")] string context) { - using (var db = new TestDbManager("Oracle")) + using (var db = new TestDbManager(context)) { db.Types2.Delete(_ => _.ID > 1000); @@ -137,9 +137,9 @@ public abstract class ProductEntityAccesor : DataAccessor<Product> } //[Test] - public void CanInsertProductWithAccessorTest() + public void CanInsertProductWithAccessorTest([IncludeDataContexts("Oracle")] string context) { - using (var dbManager = new TestDbManager("Oracle")) + using (var dbManager = new TestDbManager(context)) { var productEntityAccesor = DataAccessor.CreateInstance<ProductEntityAccesor>(dbManager); diff --git a/UnitTests/Linq/ProviderSpecific/PostgreSQL.cs b/UnitTests/Linq/ProviderSpecific/PostgreSQL.cs index 1c7bc877a..f95957100 100644 --- a/UnitTests/Linq/ProviderSpecific/PostgreSQL.cs +++ b/UnitTests/Linq/ProviderSpecific/PostgreSQL.cs @@ -12,7 +12,7 @@ namespace Data.Linq.ProviderSpecific { - [TestFixture] + [TestFixture, Category("PostgreSQL")] public class PostgreSQL : TestBase { [TableName(Owner="public", Name="entity")] @@ -22,9 +22,9 @@ public class Entity } [Test] - public void SqlTest1() + public void SqlTest1([IncludeDataContexts(ProviderName.PostgreSQL)] string context) { - using (var db = new TestDbManager(ProviderName.PostgreSQL)) + using (var db = new TestDbManager(context)) { db.BeginTransaction(); @@ -37,9 +37,9 @@ public void SqlTest1() } [Test] - public void SequenceInsert1() + public void SequenceInsert1([IncludeDataContexts(ProviderName.PostgreSQL)] string context) { - using (var db = new TestDbManager(ProviderName.PostgreSQL)) + using (var db = new TestDbManager(context)) { db.GetTable<PostgreSQLSpecific.SequenceTest1>().Where(_ => _.Value == "SeqValue").Delete(); db.Insert(new PostgreSQLSpecific.SequenceTest1 { Value = "SeqValue" }); @@ -53,9 +53,9 @@ public void SequenceInsert1() } [Test] - public void SequenceInsert2() + public void SequenceInsert2([IncludeDataContexts(ProviderName.PostgreSQL)] string context) { - using (var db = new TestDbManager(ProviderName.PostgreSQL)) + using (var db = new TestDbManager(context)) { db.GetTable<PostgreSQLSpecific.SequenceTest2>().Where(_ => _.Value == "SeqValue").Delete(); db.Insert(new PostgreSQLSpecific.SequenceTest2 { Value = "SeqValue" }); @@ -69,9 +69,9 @@ public void SequenceInsert2() } [Test] - public void SequenceInsert3() + public void SequenceInsert3([IncludeDataContexts(ProviderName.PostgreSQL)] string context) { - using (var db = new TestDbManager(ProviderName.PostgreSQL)) + using (var db = new TestDbManager(context)) { db.GetTable<PostgreSQLSpecific.SequenceTest3>().Where(_ => _.Value == "SeqValue").Delete(); db.Insert(new PostgreSQLSpecific.SequenceTest3 { Value = "SeqValue" }); @@ -85,9 +85,9 @@ public void SequenceInsert3() } [Test] - public void SequenceInsertWithIdentity1() + public void SequenceInsertWithIdentity1([IncludeDataContexts(ProviderName.PostgreSQL)] string context) { - using (var db = new TestDbManager(ProviderName.PostgreSQL)) + using (var db = new TestDbManager(context)) { db.GetTable<PostgreSQLSpecific.SequenceTest1>().Where(_ => _.Value == "SeqValue").Delete(); @@ -103,9 +103,9 @@ public void SequenceInsertWithIdentity1() } [Test] - public void SequenceInsertWithIdentity2() + public void SequenceInsertWithIdentity2([IncludeDataContexts(ProviderName.PostgreSQL)] string context) { - using (var db = new TestDbManager(ProviderName.PostgreSQL)) + using (var db = new TestDbManager(context)) { db.GetTable<PostgreSQLSpecific.SequenceTest2>().Where(_ => _.Value == "SeqValue").Delete(); @@ -121,9 +121,9 @@ public void SequenceInsertWithIdentity2() } [Test] - public void SequenceInsertWithIdentity3() + public void SequenceInsertWithIdentity3([IncludeDataContexts(ProviderName.PostgreSQL)] string context) { - using (var db = new TestDbManager(ProviderName.PostgreSQL)) + using (var db = new TestDbManager(context)) { db.GetTable<PostgreSQLSpecific.SequenceTest3>().Where(_ => _.Value == "SeqValue").Delete(); diff --git a/UnitTests/Linq/ProviderSpecific/SqlCe.cs b/UnitTests/Linq/ProviderSpecific/SqlCe.cs index 1e571ead7..4be076f63 100644 --- a/UnitTests/Linq/ProviderSpecific/SqlCe.cs +++ b/UnitTests/Linq/ProviderSpecific/SqlCe.cs @@ -1,5 +1,9 @@ using System; -using System.Transactions; +using System.Data; + +using BLToolkit.Data.Linq; +using BLToolkit.DataAccess; +using BLToolkit.Mapping; using NUnit.Framework; @@ -7,44 +11,29 @@ namespace Data.Linq.ProviderSpecific { - //[TestFixture] + [TestFixture] public class SqlCe : TestBase { - //[Test] - public void SqlTest() + [TableName("LinqDataTypes")] + class Test + { + public int ID; + [MapField("DateTimeValue"), DbType(DbType.DateTime2)] + public DateTime? Data; + } + + [Test] + public void DateTime2Test([IncludeDataContexts(ProviderName.SqlCe)] string context) { - using (new TransactionScope()) + using (var db = new TestDbManager(context)) { - using (var db = new TestDbManager(ProviderName.SqlCe)) + try { - var list = db - .SetCommand(@" - -UPDATE - [Parent] -SET - [Value1] = 1 -WHERE - [Parent].[ParentID] = 100; - -INSERT INTO [Parent] -( - [ParentID], - [Value1] -) -VALUES -( - 100, - NULL -) - - -") - .ExecuteScalar(); - - list = db - .SetCommand(@"SELECT @@IDENTITY") - .ExecuteScalar(); + new SqlQuery<Test>().Insert(db, new Test { ID = 100001, Data = DateTime.Now }); + } + finally + { + db.GetTable<Test>().Delete(t => t.ID > 10000); } } } diff --git a/UnitTests/Linq/SelectManyTest.cs b/UnitTests/Linq/SelectManyTest.cs index 4acfb26cd..0b270c517 100644 --- a/UnitTests/Linq/SelectManyTest.cs +++ b/UnitTests/Linq/SelectManyTest.cs @@ -54,7 +54,7 @@ public void Basic4() db.Parent.SelectMany(p => db.Child.Select(_ => _.ParentID + 1).Where(_ => p.ParentID == _)))); } - [Test] + [Test] public void Basic5() { ForEachProvider(new[] { ProviderName.Access }, db => AreEqual( @@ -78,7 +78,7 @@ public void Basic61() db.Parent.SelectMany(p => p.Children.Select(_ => _.ParentID + 1).Where(_ => _ > 1 || _ > 2)).Where(_ => _ > 0 || _ > 3))); } - [Test] + [Test] public void Basic62() { ForEachProvider(new[] { ProviderName.Access }, @@ -111,7 +111,7 @@ public void Basic9() db.Parent.SelectMany(p => p.Children.SelectMany(t => p.GrandChildren)))); } - [Test] + [Test] public void Basic10() { ForEachProvider(new[] { ProviderName.Access }, db => AreEqual( @@ -119,7 +119,7 @@ public void Basic10() db.Child.GroupBy(o => o.ParentID2).SelectMany(g => g.Select(o => o.Parent)))); } - [Test] + [Test] public void Basic11() { ForEachProvider(new[] { ProviderName.Access }, db => AreEqual( @@ -296,7 +296,7 @@ public void OneParam2() db.Parent.SelectMany(p => p.Children).Where(t => t.ParentID == 1).Select(t => t))); } - [Test] + [Test] public void OneParam3() { ForEachProvider(new[] { ProviderName.Access }, db => AreEqual( @@ -339,7 +339,7 @@ from ch in (from c in db.Child where p.ParentID == c.ParentID select c).DefaultI select ch)); } - [Test] + [Test] public void SelectManyLeftJoin3() { ForEachProvider(new[] { ProviderName.Access }, db => AreEqual( @@ -401,7 +401,7 @@ join t in db.Person on p.ParentID equals t.ID select p)); } - [Test] + [Test] public void Test3() { ForEachProvider(new[] { ProviderName.Access }, db => Assert.AreEqual( @@ -433,7 +433,7 @@ join t in db.Types on c.ParentID equals t.ID select c).Count())); } - [Test] + [Test] public void Test5() { ForEachProvider(new[] { ProviderName.Access }, db => @@ -448,7 +448,7 @@ from c in db.Parent2 }); } - [Test] + [Test] public void Test6() { ForEachProvider(new[] { ProviderName.Access }, db => @@ -464,7 +464,7 @@ from c in db.Parent2 }); } - [Test] + [Test] public void Test7() { ForEachProvider(new[] { ProviderName.Access }, db => AreEqual( @@ -482,7 +482,7 @@ from c in db.Parent2 select r)); } - [Test] + [Test] public void Test8() { ForEachProvider(new[] { ProviderName.Access }, db => @@ -524,7 +524,7 @@ from g in p.GrandChildren }); } - [Test] + [Test] public void Test9() { ForEachProvider(new[] { ProviderName.Access }, db => @@ -555,7 +555,7 @@ from c in db.Parent2 }); } - [Test] + [Test] public void Test91() { ForEachProvider(new[] { ProviderName.Access }, db => diff --git a/UnitTests/Linq/SelectTest.cs b/UnitTests/Linq/SelectTest.cs index 3001ed4fc..5c2b013ac 100644 --- a/UnitTests/Linq/SelectTest.cs +++ b/UnitTests/Linq/SelectTest.cs @@ -190,11 +190,11 @@ public void MultipleSelect10() } [Test] - public void MultipleSelect11() + public void MultipleSelect11([IncludeDataContexts("Sql2008", "Sql2012")] string context) { var dt = DateTime.Now; - using (var db = new TestDbManager()) + using (var db = new TestDbManager(context)) { var q = from p in db.Parent @@ -271,6 +271,23 @@ from g20 in p.GrandChildren.DefaultIfEmpty() Assert.IsTrue((DateTime.Now - dt).TotalSeconds < 30); } + [Test] + public void MutiplySelect12([DataContexts(ExcludeLinqService = true)] string context) + { + using (var db = (TestDbManager)GetDataContext(context)) + { + var q = + from grandChild in db.GrandChild + from child in db.Child + where grandChild.ChildID.HasValue + select grandChild; + q.ToList(); + + var selectCount = db.LastQuery.Split(' ', '\t', '\n', '\r').Count(s => s.Equals("select", StringComparison.InvariantCultureIgnoreCase)); + Assert.AreEqual(1, selectCount, "Why do we need \"select from select\"??"); + } + } + [Test] public void Coalesce() { @@ -439,6 +456,18 @@ public void Index() ConvertString(m.Parent.ParentID.ToString(), m.ChildID, i % 2 == 0, i)).ToArray(); Assert.AreEqual("7.77.True.0", lines[0]); + + q = + db.Child + .OrderByDescending(m => m.ChildID) + .Where(m => m.Parent != null && m.ParentID > 0); + + lines = + q.Select( + (m, i) => + ConvertString(m.Parent.ParentID.ToString(), m.ChildID, i % 2 == 0, i)).ToArray(); + + Assert.AreEqual("7.77.True.0", lines[0]); }); } diff --git a/UnitTests/Linq/SetTest.cs b/UnitTests/Linq/SetTest.cs index 7ae11b492..d99b310ba 100644 --- a/UnitTests/Linq/SetTest.cs +++ b/UnitTests/Linq/SetTest.cs @@ -115,6 +115,15 @@ public void Any6() db.Child.Any(c => c.ParentID > 3))); } + [Test] + public void Any61([DataContexts] string context) + { + using (var db = GetDataContext(context)) + Assert.AreEqual( + Child. Any(c => c.ParentID > 3), + db.GetTable<Child>().Any(c => c.ParentID > 3)); + } + [Test] public void Any7() { @@ -254,7 +263,7 @@ where db.Child.Where(o => o.Parent == c).All(o => db.Child.Where(e => o == e).An } [Test] - public void AllNestedTest() + public void AllNestedTest([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) AreEqual( @@ -267,7 +276,7 @@ where db.Order.Where(o => o.Customer == c).All(o => db.Employee.Where(e => o.Emp } [Test] - public void ComplexAllTest() + public void ComplexAllTest([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) AreEqual( @@ -442,7 +451,7 @@ from p in Parent1 where arr.Contains(p) select p, } [Test] - public void Contains10() + public void Contains10([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { @@ -468,7 +477,7 @@ where arr.Contains(o) } [Test] - public void Contains11() + public void Contains11([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { @@ -487,7 +496,7 @@ where g.Key.EmployeeTerritories.Count() > 1 } [Test] - public void Contains12() + public void Contains12([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { @@ -506,7 +515,7 @@ where g.Key.EmployeeTerritories.Count() > 1 && g.Count() > 2 } [Test] - public void Contains13() + public void Contains13([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { diff --git a/UnitTests/Linq/StringFunctions.cs b/UnitTests/Linq/StringFunctions.cs index 53269493c..66321ecad 100644 --- a/UnitTests/Linq/StringFunctions.cs +++ b/UnitTests/Linq/StringFunctions.cs @@ -45,6 +45,18 @@ public void ContainsConstant2() }); } + [Test] + public void ContainsConstant3([DataContexts] string context) + { + using (var db = GetDataContext(context)) + { + var arr = new[] { "oh", "oh'", "oh\\" }; + + var q = from p in db.Person where arr.Contains(p.FirstName) select p; + Assert.AreEqual(0, q.Count()); + } + } + [Test] public void ContainsParameter1() { @@ -259,16 +271,18 @@ public void IndexOf2() } [Test] - public void IndexOf3() + public void IndexOf3([DataContexts( + ProviderName.DB2, ProviderName.Firebird, ProviderName.Informix, ProviderName.SqlCe, ProviderName.Sybase, ProviderName.Access)] string context) { var s = "e"; var n1 = 2; var n2 = 5; - ForEachProvider(new[] { ProviderName.DB2, ProviderName.Firebird, ProviderName.Informix, ProviderName.SqlCe, ProviderName.Sybase, ProviderName.Access }, db => + + using (var db = GetDataContext(context)) { var q = from p in db.Person where p.LastName.IndexOf(s, n1, n2) == 1 && p.ID == 2 select p; Assert.AreEqual(2, q.ToList().First().ID); - }); + } } static readonly string[] _lastIndexExcludeList = new[] @@ -488,7 +502,7 @@ public void PadLeft2() }); } - [Test] + [Test] public void Replace() { ForEachProvider(new[] { ProviderName.Access }, db => diff --git a/UnitTests/Linq/SubQuery.cs b/UnitTests/Linq/SubQuery.cs index ecfa8c333..17726002a 100644 --- a/UnitTests/Linq/SubQuery.cs +++ b/UnitTests/Linq/SubQuery.cs @@ -181,7 +181,7 @@ where parent.Contains(c.ParentID) }); } - [Test] + [Test] public void ObjectCompare() { ForEachProvider(new[] { ProviderName.Access }, db => AreEqual( @@ -271,7 +271,7 @@ select c public void SubSub2() { ForEachProvider( - new[] { ProviderName.Access, ProviderName.DB2, "Oracle", ProviderName.MySql, ProviderName.Sybase, ProviderName.Informix }, + new[] { ProviderName.Access, ProviderName.DB2, "Oracle", "DevartOracle", "Sql2000", ProviderName.MySql, ProviderName.Sybase, ProviderName.Informix }, db => AreEqual( from p1 in from p2 in Parent diff --git a/UnitTests/Linq/TableFunctionTest.cs b/UnitTests/Linq/TableFunctionTest.cs index dbd34316d..7cb265a17 100644 --- a/UnitTests/Linq/TableFunctionTest.cs +++ b/UnitTests/Linq/TableFunctionTest.cs @@ -14,9 +14,9 @@ namespace Data.Linq public class TableFunctionTest : TestBase { [Test] - public void Func1() + public void Func1([IncludeDataContexts("Sql2008", "Sql2012")] string context) { - using (var db = new TestDbManager()) + using (var db = new TestDbManager(context)) { var q = from p in new Model.Functions(db).GetParentByID(1) @@ -27,9 +27,9 @@ public void Func1() } [Test] - public void Func2() + public void Func2([IncludeDataContexts("Sql2008", "Sql2012")] string context) { - using (var db = new TestDbManager()) + using (var db = new TestDbManager(context)) { var q = from c in db.Child @@ -41,9 +41,9 @@ from p in db.GetParentByID(2) } [Test] - public void Func3() + public void Func3([IncludeDataContexts("Sql2008", "Sql2012")] string context) { - using (var db = new TestDbManager()) + using (var db = new TestDbManager(context)) { var q = from c in db.Child @@ -58,9 +58,9 @@ from p in db.GetParentByID(c.ParentID) (DbManager db, int id) => from p in new Model.Functions(db).GetParentByID(id) select p); [Test] - public void CompiledFunc1() + public void CompiledFunc1([IncludeDataContexts("Sql2008", "Sql2012")] string context) { - using (var db = new TestDbManager()) + using (var db = new TestDbManager(context)) { var q = _f1(db, 1); q.ToList(); @@ -71,9 +71,9 @@ public void CompiledFunc1() (TestDbManager db, int id) => from c in db.Child from p in db.GetParentByID(id) select p); [Test] - public void CompiledFunc2() + public void CompiledFunc2([IncludeDataContexts("Sql2008", "Sql2012")] string context) { - using (var db = new TestDbManager()) + using (var db = new TestDbManager(context)) { var q = _f2(db, 1); q.ToList(); @@ -81,9 +81,9 @@ public void CompiledFunc2() } [Test] - public void WithTabLock() + public void WithTabLock([IncludeDataContexts("Sql2008", "Sql2012")] string context) { - using (var db = new TestDbManager()) + using (var db = new TestDbManager(context)) { var q = from p in new Model.Functions(db).WithTabLock<Parent>() @@ -93,8 +93,8 @@ public void WithTabLock() } } - [Test] - public void FreeText1() + [Test, Category("FULLTEXT")] + public void FreeText1([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { @@ -108,8 +108,8 @@ on c.CategoryID equals t.Key } } - [Test] - public void FreeText2() + [Test, Category("FULLTEXT")] + public void FreeText2([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { @@ -123,8 +123,8 @@ on c.CategoryID equals t.Key } } - [Test] - public void FreeText3() + [Test, Category("FULLTEXT")] + public void FreeText3([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { diff --git a/UnitTests/Linq/TakeSkipTest.cs b/UnitTests/Linq/TakeSkipTest.cs index 60d111617..9822091ce 100644 --- a/UnitTests/Linq/TakeSkipTest.cs +++ b/UnitTests/Linq/TakeSkipTest.cs @@ -142,7 +142,7 @@ public void Skip7() [Test] public void SkipCount() { - ForEachProvider(new[] { ProviderName.Sybase, ProviderName.SQLite, ProviderName.Access }, db => Assert.AreEqual( + ForEachProvider(new[] { "Sql2000", ProviderName.Sybase, ProviderName.SQLite, ProviderName.Access }, db => Assert.AreEqual( Child.Skip(2).Count(), db.Child.Skip(2).Count())); } @@ -184,7 +184,7 @@ public void SkipTake3() public void SkipTake4() { var expected = Child.OrderByDescending(c => c.ChildID).Skip(1).Take(7).OrderBy(c => c.ChildID).Skip(2); - ForEachProvider(new[] { ProviderName.SQLite, ProviderName.Sybase, ProviderName.Access }, db => + ForEachProvider(new[] { "Sql2000", ProviderName.SQLite, ProviderName.Sybase, ProviderName.Access }, db => { var result = db.Child.OrderByDescending(c => c.ChildID).Skip(1).Take(7).OrderBy(c => c.ChildID).Skip(2); Assert.IsTrue(result.ToList().SequenceEqual(expected)); @@ -234,7 +234,7 @@ from p in q3 public void SkipTake6() { ForEachProvider( - new[] { ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Access, ProviderName.Sybase }, + new[] { "Sql2000", ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Access, ProviderName.Sybase }, db => { SkipTake6(db, false); @@ -245,7 +245,7 @@ public void SkipTake6() [Test] public void SkipTakeCount() { - ForEachProvider(new[] { ProviderName.SqlCe, ProviderName.Sybase, ProviderName.SQLite, ProviderName.Access }, db => Assert.AreEqual( + ForEachProvider(new[] { "Sql2000", ProviderName.SqlCe, ProviderName.Sybase, ProviderName.SQLite, ProviderName.Access }, db => Assert.AreEqual( Child.Skip(2).Take(5).Count(), db.Child.Skip(2).Take(5).Count())); } @@ -266,11 +266,12 @@ public void SkipFirst() } [Test] - public void ElementAt1() + public void ElementAt1([DataContexts] string context) { - ForEachProvider(db => Assert.AreEqual( - (from p in Parent where p.ParentID > 1 select p).ElementAt(3), - (from p in db.Parent where p.ParentID > 1 select p).ElementAt(3))); + using (var db = GetDataContext(context)) + Assert.AreEqual( + (from p in Parent where p.ParentID > 1 select p).ElementAt(3), + (from p in db.Parent where p.ParentID > 1 select p).ElementAt(3)); } [Test] diff --git a/UnitTests/Linq/TestAK107.cs b/UnitTests/Linq/TestAK107.cs index 663cc3102..79ef39e39 100644 --- a/UnitTests/Linq/TestAK107.cs +++ b/UnitTests/Linq/TestAK107.cs @@ -9,7 +9,7 @@ namespace Data.Linq { - [TestFixture] + [TestFixture, Category("Oracle")] public class TestAK107 : TestBase { [TableName(Name = "t_test_user")] @@ -50,9 +50,9 @@ public sealed class Contract } [Test] - public void UserInsert() + public void UserInsert([IncludeDataContexts("Oracle")] string context) { - using (var db = new TestDbManager("Oracle")) + using (var db = new TestDbManager(context)) { db.BeginTransaction(); db.Insert(new User { Name = "user" }); @@ -60,9 +60,9 @@ public void UserInsert() } [Test] - public void UserInsertWithIdentity() + public void UserInsertWithIdentity([IncludeDataContexts("Oracle")] string context) { - using (var db = new TestDbManager("Oracle")) + using (var db = new TestDbManager(context)) { db.BeginTransaction(); db.InsertWithIdentity(new User { Name = "user" }); @@ -70,9 +70,9 @@ public void UserInsertWithIdentity() } [Test] - public void UserLinqInsert() + public void UserLinqInsert([IncludeDataContexts("Oracle")] string context) { - using (var db = new TestDbManager("Oracle")) + using (var db = new TestDbManager(context)) { db.BeginTransaction(); db.GetTable<User>().Insert(() => new User { Name = "user" }); @@ -80,9 +80,9 @@ public void UserLinqInsert() } [Test] - public void UserLinqInsertWithIdentity() + public void UserLinqInsertWithIdentity([IncludeDataContexts("Oracle")] string context) { - using (var db = new TestDbManager("Oracle")) + using (var db = new TestDbManager(context)) { db.BeginTransaction(); db.GetTable<User>().InsertWithIdentity(() => new User { Name = "user" }); @@ -90,9 +90,9 @@ public void UserLinqInsertWithIdentity() } [Test] - public void ContractInsert() + public void ContractInsert([IncludeDataContexts("Oracle")] string context) { - using (var db = new TestDbManager("Oracle")) + using (var db = new TestDbManager(context)) { db.BeginTransaction(); @@ -104,9 +104,9 @@ public void ContractInsert() } [Test] - public void ContractInsertWithIdentity() + public void ContractInsertWithIdentity([IncludeDataContexts("Oracle")] string context) { - using (var db = new TestDbManager("Oracle")) + using (var db = new TestDbManager(context)) { db.BeginTransaction(); @@ -121,9 +121,9 @@ public void ContractInsertWithIdentity() static long ContractSequence { get; set; } [Test] - public void ContractLinqInsert() + public void ContractLinqInsert([IncludeDataContexts("Oracle")] string context) { - using (var db = new TestDbManager("Oracle")) + using (var db = new TestDbManager(context)) { db.BeginTransaction(); @@ -141,9 +141,9 @@ public void ContractLinqInsert() } [Test] - public void ContractLinqInsertWithIdentity() + public void ContractLinqInsertWithIdentity([IncludeDataContexts("Oracle")] string context) { - using (var db = new TestDbManager("Oracle")) + using (var db = new TestDbManager(context)) { db.BeginTransaction(); @@ -155,9 +155,9 @@ public void ContractLinqInsertWithIdentity() } [Test] - public void ContractLinqManyInsert() + public void ContractLinqManyInsert([IncludeDataContexts("Oracle")] string context) { - using (var db = new TestDbManager("Oracle")) + using (var db = new TestDbManager(context)) { db.BeginTransaction(); @@ -169,9 +169,9 @@ public void ContractLinqManyInsert() } //[Test] - public void ContractLinqManyInsertWithIdentity() + public void ContractLinqManyInsertWithIdentity([IncludeDataContexts("Oracle")] string context) { - using (var db = new TestDbManager("Oracle")) + using (var db = new TestDbManager(context)) { db.BeginTransaction(); diff --git a/UnitTests/Linq/TestBase.cs b/UnitTests/Linq/TestBase.cs index 5e30c72a3..92c41d3f1 100644 --- a/UnitTests/Linq/TestBase.cs +++ b/UnitTests/Linq/TestBase.cs @@ -14,7 +14,6 @@ using BLToolkit.Data.Linq; using BLToolkit.Data.Sql.SqlProvider; using BLToolkit.Mapping; -using BLToolkit.Reflection; using BLToolkit.ServiceModel; using NUnit.Framework; @@ -23,10 +22,28 @@ namespace Data.Linq { using Model; - public class TestBase - { - static TestBase() + // fix for failing tests due to use of "," vs "." in numbers parsing for some cultures + [SetCulture("")] + public class TestBase + { + private static TestDbManager GetDbManager() + { + SQLiteDataProvider dataProvider = new SQLiteDataProvider(); + return new TestDbManager(dataProvider, DbManager.GetConnectionString("SQLite")); + } + + static TestBase() { + var providerListFile = + File.Exists(@"..\..\UserDataProviders.txt") ? + @"..\..\UserDataProviders.txt" : + @"..\..\DefaultDataProviders.txt"; + + UserProviders.AddRange( + File.ReadAllLines(providerListFile) + .Select(s => s.Trim()) + .Where (s => s.Length > 0 && !s.StartsWith("--"))); + AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => { string assembly; @@ -92,11 +109,12 @@ static TestBase() { switch (str) { - case "Data.Linq.Model.Gender" : return typeof(Gender); - case "Data.Linq.Model.Person" : return typeof(Person); + //case "Data.Linq.Model.Gender" : return typeof(Gender); + case "Data.Linq.Model.Person": return typeof(Person); default : return null; } }; + } const int StartIP = 12345; @@ -151,32 +169,35 @@ public ProviderInfo(string name, string assembly, string type) public readonly string Type; public bool Loaded; public int IP; + public bool Skip; } - [CLSCompliant(false)] + public static readonly List<string> UserProviders = new List<string>(); public static readonly List<ProviderInfo> Providers = new List<ProviderInfo> { - new ProviderInfo("Sql2008", null, "BLToolkit.Data.DataProvider.Sql2008DataProvider"), - new ProviderInfo(ProviderName.SqlCe, "BLToolkit.Data.DataProvider.SqlCe", "BLToolkit.Data.DataProvider.SqlCeDataProvider"), - new ProviderInfo(ProviderName.SQLite, "BLToolkit.Data.DataProvider.SQLite", "BLToolkit.Data.DataProvider.SQLiteDataProvider"), - new ProviderInfo(ProviderName.Access, null, "BLToolkit.Data.DataProvider.AccessDataProvider"), - -#if !MOBILE - new ProviderInfo("Sql2005", null, "BLToolkit.Data.DataProvider.SqlDataProvider"), - new ProviderInfo(ProviderName.DB2, "BLToolkit.Data.DataProvider.DB2", "BLToolkit.Data.DataProvider.DB2DataProvider"), - new ProviderInfo(ProviderName.Informix, "BLToolkit.Data.DataProvider.Informix", "BLToolkit.Data.DataProvider.InformixDataProvider"), - new ProviderInfo(ProviderName.Firebird, "BLToolkit.Data.DataProvider.Firebird", "BLToolkit.Data.DataProvider.FdpDataProvider"), - new ProviderInfo("Oracle", "BLToolkit.Data.DataProvider.Oracle", "BLToolkit.Data.DataProvider.OdpDataProvider"), - //new ProviderInfo("Oracle", "BLToolkit.Data.DataProvider.OracleManaged", "BLToolkit.Data.DataProvider.OdpManagedDataProvider"), - new ProviderInfo(ProviderName.PostgreSQL, "BLToolkit.Data.DataProvider.PostgreSQL", "BLToolkit.Data.DataProvider.PostgreSQLDataProvider"), - new ProviderInfo(ProviderName.MySql, "BLToolkit.Data.DataProvider.MySql", "BLToolkit.Data.DataProvider.MySqlDataProvider"), - new ProviderInfo(ProviderName.Sybase, "BLToolkit.Data.DataProvider.Sybase", "BLToolkit.Data.DataProvider.SybaseDataProvider"), -#endif + new ProviderInfo("Sql2008", null, "BLToolkit.Data.DataProvider.Sql2008DataProvider"), + new ProviderInfo("Sql2012", null, "BLToolkit.Data.DataProvider.Sql2012DataProvider"), + new ProviderInfo(ProviderName.SqlCe, "BLToolkit.Data.DataProvider.SqlCe", "BLToolkit.Data.DataProvider.SqlCeDataProvider"), + new ProviderInfo(ProviderName.SQLite, "BLToolkit.Data.DataProvider.SQLite", "BLToolkit.Data.DataProvider.SQLiteDataProvider"), + new ProviderInfo(ProviderName.Access, null, "BLToolkit.Data.DataProvider.AccessDataProvider"), + new ProviderInfo("Sql2000", null, "BLToolkit.Data.DataProvider.Sql2000DataProvider"), + new ProviderInfo("Sql2005", null, "BLToolkit.Data.DataProvider.SqlDataProvider"), + new ProviderInfo(ProviderName.DB2, "BLToolkit.Data.DataProvider.DB2", "BLToolkit.Data.DataProvider.DB2DataProvider"), + new ProviderInfo(ProviderName.Informix, "BLToolkit.Data.DataProvider.Informix", "BLToolkit.Data.DataProvider.InformixDataProvider"), + new ProviderInfo(ProviderName.Firebird, "BLToolkit.Data.DataProvider.Firebird", "BLToolkit.Data.DataProvider.FdpDataProvider"), + new ProviderInfo("Oracle", "BLToolkit.Data.DataProvider.Oracle", "BLToolkit.Data.DataProvider.OdpDataProvider"), + new ProviderInfo("DevartOracle", "BLToolkit.Data.DataProvider.DevartOracle", "BLToolkit.Data.DataProvider.DevartOracleDataProvider"), + //new ProviderInfo("Oracle", "BLToolkit.Data.DataProvider.OracleManaged", "BLToolkit.Data.DataProvider.OdpManagedDataProvider"), + new ProviderInfo(ProviderName.PostgreSQL, "BLToolkit.Data.DataProvider.PostgreSQL", "BLToolkit.Data.DataProvider.PostgreSQLDataProvider"), + new ProviderInfo(ProviderName.MySql, "BLToolkit.Data.DataProvider.MySql", "BLToolkit.Data.DataProvider.MySqlDataProvider"), + new ProviderInfo(ProviderName.Sybase, "BLToolkit.Data.DataProvider.Sybase", "BLToolkit.Data.DataProvider.SybaseDataProvider"), }; static IEnumerable<ITestDataContext> GetProviders(IEnumerable<string> exceptList) { - foreach (var info in Providers) + var list = UserProviders.Concat(UserProviders.Select(p => p + ".LinqService")); + + foreach (var info in Providers.Where(p => list.Contains(p.Name))) { if (exceptList.Contains(info.Name)) continue; @@ -186,6 +207,8 @@ static IEnumerable<ITestDataContext> GetProviders(IEnumerable<string> exceptList if (!info.Loaded) continue; + //SQLiteDataProvider dataProvider = new SQLiteDataProvider(); + //yield return new TestDbManager(dataProvider, DbManager.GetConnectionString(info.Name)); yield return new TestDbManager(info.Name); var ip = GetIP(info.Name); @@ -197,6 +220,66 @@ static IEnumerable<ITestDataContext> GetProviders(IEnumerable<string> exceptList } } + [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)] + public class DataContextsAttribute : ValuesAttribute + { + public DataContextsAttribute(params string[] except) + { + Except = except; + } + + const bool IncludeLinqService = true; + + public string[] Except { get; set; } + public string[] Include { get; set; } + public bool ExcludeLinqService { get; set; } + + public override IEnumerable GetData(ParameterInfo parameter) + { + if (Include != null) + { + var list = Include.Intersect( + IncludeLinqService ? + UserProviders.Concat(UserProviders.Select(p => p + ".LinqService")) : + UserProviders). + ToArray(); + + return list; + } + + var providers = new List<string>(); + + foreach (var info in Providers) + { + if (info.Skip && Include == null) + continue; + + if (Except != null && Except.Contains(info.Name)) + continue; + + if (!UserProviders.Contains(info.Name)) + continue; + + providers.Add(info.Name); + + if (IncludeLinqService && !ExcludeLinqService) + { + providers.Add(info.Name + ".LinqService"); + } + } + + return providers.ToArray(); + } + } + + public class IncludeDataContextsAttribute : DataContextsAttribute + { + public IncludeDataContextsAttribute(params string[] include) + { + Include = include; + } + } + static readonly Dictionary<string,int> _ips = new Dictionary<string,int>(); protected ITestDataContext GetDataContext(string configuration) @@ -221,8 +304,6 @@ protected void ForEachProvider(Type expectedException, string[] exceptList, Acti { Exception ex = null; - var executedForAtLeastOneProvider = false; - foreach (var db in GetProviders(exceptList)) { try @@ -231,7 +312,6 @@ protected void ForEachProvider(Type expectedException, string[] exceptList, Acti ((DbManager)db).BeginTransaction(); func(db); - executedForAtLeastOneProvider = true; } catch (Exception e) { @@ -248,9 +328,6 @@ protected void ForEachProvider(Type expectedException, string[] exceptList, Acti if (ex != null) throw ex; - - if(!executedForAtLeastOneProvider) - throw new ApplicationException("Delegate function has not been executed."); } protected void ForEachProvider(string[] exceptList, Action<ITestDataContext> func) @@ -324,8 +401,8 @@ protected IEnumerable<LinqDataTypes> Types { get { - if (_types == null) - using (var db = new TestDbManager("Sql2008")) + if (_types == null) + using (var db = GetDbManager()) _types = db.Types.ToList(); foreach (var type in _types) @@ -338,8 +415,8 @@ protected List<LinqDataTypes2> Types2 { get { - if (_types2 == null) - using (var db = new TestDbManager("Sql2008")) + if (_types2 == null) + using (var db = GetDbManager()) _types2 = db.Types2.ToList(); return _types2; } @@ -352,7 +429,7 @@ protected IEnumerable<Person> Person { if (_person == null) { - using (var db = new TestDbManager("Sql2008")) + using (var db = GetDbManager()) _person = db.Person.ToList(); foreach (var p in _person) @@ -370,8 +447,8 @@ protected List<Patient> Patient get { if (_patient == null) - { - using (var db = new TestDbManager("Sql2008")) + { + using (var db = GetDbManager()) _patient = db.Patient.ToList(); foreach (var p in _patient) @@ -382,6 +459,21 @@ protected List<Patient> Patient } } + private List<Doctor> _doctor; + protected List<Doctor> Doctor + { + get + { + if (_doctor == null) + { + using (var db = GetDbManager()) + _doctor = db.Doctor.ToList(); + } + + return _doctor; + } + } + #region Parent/Child Model private List<Parent> _parent; @@ -389,9 +481,10 @@ protected IEnumerable<Parent> Parent { get { - if (_parent == null) - using (var db = new TestDbManager("Sql2008")) + if (_parent == null) + using (var db = GetDbManager()) { + db.Parent.Delete(c => c.ParentID >= 1000); _parent = db.Parent.ToList(); db.Close(); @@ -399,7 +492,7 @@ protected IEnumerable<Parent> Parent { p.Children = Child. Where(c => c.ParentID == p.ParentID).ToList(); p.GrandChildren = GrandChild.Where(c => c.ParentID == p.ParentID).ToList(); - p.Types = Types.FirstOrDefault(t => t.ID == p.ParentID); + p.Types = Types.First(t => t.ID == p.ParentID); } } @@ -503,9 +596,10 @@ protected IEnumerable<Child> Child { get { - if (_child == null) - using (var db = new TestDbManager("Sql2008")) + if (_child == null) + using (var db = GetDbManager()) { + db.Child.Delete(c => c.ParentID >= 1000); _child = db.Child.ToList(); db.Clone(); @@ -528,8 +622,8 @@ protected IEnumerable<GrandChild> GrandChild { get { - if (_grandChild == null) - using (var db = new TestDbManager("Sql2008")) + if (_grandChild == null) + using (var db = GetDbManager()) { _grandChild = db.GrandChild.ToList(); db.Close(); @@ -548,8 +642,8 @@ protected IEnumerable<GrandChild1> GrandChild1 { get { - if (_grandChild1 == null) - using (var db = new TestDbManager("Sql2008")) + if (_grandChild1 == null) + using (var db = GetDbManager()) { _grandChild1 = db.GrandChild1.ToList(); @@ -758,7 +852,7 @@ protected void AreEqual<T>(IEnumerable<T> expected, IEnumerable<T> result) if (exceptResult != 0 || exceptExpected != 0) for (var i = 0; i < resultList.Count; i++) - Debug.WriteLine(string.Format("{0} {1} --- {2}", Equals(expectedList[i], resultList[i]) ? " " : "-", expectedList[i], resultList[i])); + Debug.WriteLine("{0} {1} --- {2}", Equals(expectedList[i], resultList[i]) ? " " : "-", expectedList[i], resultList[i]); Assert.AreEqual(0, exceptExpected); Assert.AreEqual(0, exceptResult); diff --git a/UnitTests/Linq/TestDbManager.cs b/UnitTests/Linq/TestDbManager.cs index a50cc1235..c62b1cef7 100644 --- a/UnitTests/Linq/TestDbManager.cs +++ b/UnitTests/Linq/TestDbManager.cs @@ -5,6 +5,7 @@ using System.Text; using BLToolkit.Data; +using BLToolkit.Data.DataProvider; using BLToolkit.Data.Linq; using BLToolkit.Data.Sql; @@ -14,13 +15,18 @@ namespace Data.Linq public class TestDbManager : DbManager, ITestDataContext { + public TestDbManager(DataProviderBase dataProviderBase, string configString) + : base(dataProviderBase, configString) + { + } + public TestDbManager(string configString) : base(configString) { } public TestDbManager() - : base("Sql2008") + : base(ProviderName.Access) { } diff --git a/UnitTests/Linq/Types.cs b/UnitTests/Linq/Types.cs index 074a18803..1d87bc7b6 100644 --- a/UnitTests/Linq/Types.cs +++ b/UnitTests/Linq/Types.cs @@ -208,7 +208,7 @@ public void NewGuid() }); } - [Test] + [Test] public void BinaryLength() { ForEachProvider( @@ -303,23 +303,21 @@ public void DateTime1() } [Test] - public void DateTime21() + public void DateTime21([DataContexts(ProviderName.SQLite)] string context) { - ForEachProvider( - new[] { ProviderName.SQLite }, - db => - { - var pdt = db.Types2.First(t => t.ID == 1).DateTimeValue; - var dt = DateTime.Parse("2010-12-14T05:00:07.4250141Z"); + using (var db = GetDataContext(context)) + { + var pdt = db.Types2.First(t => t.ID == 1).DateTimeValue; + var dt = DateTime.Parse("2010-12-14T05:00:07.4250141Z"); - db.Types2.Update(t => t.ID == 1, t => new LinqDataTypes2 { DateTimeValue = dt }); + db.Types2.Update(t => t.ID == 1, t => new LinqDataTypes2 { DateTimeValue = dt }); - var dt2 = db.Types2.First(t => t.ID == 1).DateTimeValue; + var dt2 = db.Types2.First(t => t.ID == 1).DateTimeValue; - db.Types2.Update(t => t.ID == 1, t => new LinqDataTypes2 { DateTimeValue = pdt }); + db.Types2.Update(t => t.ID == 1, t => new LinqDataTypes2 { DateTimeValue = pdt }); - Assert.AreNotEqual(dt.Ticks, dt2.Value.Ticks); - }); + Assert.AreNotEqual(dt.Ticks, dt2.Value.Ticks); + } } [Test] @@ -328,8 +326,8 @@ public void DateTime22() ForEachProvider( new[] { - ProviderName.SqlCe, ProviderName.Access, "Sql2005", ProviderName.DB2, ProviderName.Informix, - ProviderName.Firebird, "Oracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.Sybase + ProviderName.SqlCe, ProviderName.Access, "Sql2000", "Sql2005", ProviderName.DB2, ProviderName.Informix, + ProviderName.Firebird, "Oracle", "DevartOracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.Sybase }, db => { @@ -352,8 +350,8 @@ public void DateTime23() ForEachProvider( new[] { - ProviderName.SqlCe, ProviderName.Access, "Sql2005", ProviderName.DB2, ProviderName.Informix, - ProviderName.Firebird, "Oracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.Sybase + ProviderName.SqlCe, ProviderName.Access, "Sql2000", "Sql2005", ProviderName.DB2, ProviderName.Informix, + ProviderName.Firebird, "Oracle", "DevartOracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.Sybase }, db => { @@ -379,8 +377,8 @@ public void DateTime24() ForEachProvider( new[] { - ProviderName.SqlCe, ProviderName.Access, "Sql2005", ProviderName.DB2, ProviderName.Informix, - ProviderName.Firebird, "Oracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.Sybase + ProviderName.SqlCe, ProviderName.Access, "Sql2000", "Sql2005", ProviderName.DB2, ProviderName.Informix, + ProviderName.Firebird, "Oracle", "DevartOracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.Sybase }, db => { @@ -407,9 +405,9 @@ public void DateTimeArray1() AreEqual( from t in Types2 where new DateTime?[] { new DateTime(2001, 1, 11, 1, 11, 21, 100) }.Contains(t.DateTimeValue) select t, from t in db.Types2 where new DateTime?[] { new DateTime(2001, 1, 11, 1, 11, 21, 100) }.Contains(t.DateTimeValue) select t)); - } - - [Test] + } + + [Test] public void DateTimeArray2() { var arr = new DateTime?[] { new DateTime(2001, 1, 11, 1, 11, 21, 100), new DateTime(2012, 11, 7, 19, 19, 29, 90) }; @@ -420,9 +418,9 @@ public void DateTimeArray2() AreEqual( from t in Types2 where arr.Contains(t.DateTimeValue) select t, from t in db.Types2 where arr.Contains(t.DateTimeValue) select t)); - } - - [Test] + } + + [Test] public void DateTimeArray3() { var arr = new List<DateTime?> { new DateTime(2001, 1, 11, 1, 11, 21, 100) }; @@ -480,7 +478,7 @@ public void Nullable() [Test] public void Unicode() { - ForEachProvider(new[] { ProviderName.Informix, ProviderName.Firebird, ProviderName.Sybase }, db => + ForEachProvider(new[] { "DevartOracle", ProviderName.Informix, ProviderName.Firebird, ProviderName.Sybase }, db => { try { @@ -512,15 +510,16 @@ public void Unicode() } [Test] - public void TestCultureInfo() + public void TestCultureInfo([DataContexts] string context) { var current = Thread.CurrentThread.CurrentCulture; Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU"); - ForEachProvider(db => AreEqual( - from t in Types where t.MoneyValue > 0.5m select t, - from t in db.Types where t.MoneyValue > 0.5m select t)); + using (var db = GetDataContext(context)) + AreEqual( + from t in Types where t.MoneyValue > 0.5m select t, + from t in db.Types where t.MoneyValue > 0.5m select t); Thread.CurrentThread.CurrentCulture = current; } diff --git a/UnitTests/Linq/UnitTests.Linq.Interface.csproj b/UnitTests/Linq/UnitTests.Linq.Interface.csproj index b248ce3ad..366cdae4e 100644 --- a/UnitTests/Linq/UnitTests.Linq.Interface.csproj +++ b/UnitTests/Linq/UnitTests.Linq.Interface.csproj @@ -106,6 +106,14 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> + <Reference Include="FirebirdSql.Data.FirebirdClient, Version=3.0.2.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\packages\FirebirdSql.Data.FirebirdClient.3.0.2.1\lib\net40-client\FirebirdSql.Data.FirebirdClient.dll</HintPath> + </Reference> + <Reference Include="nunit.framework, Version=2.6.2.12296, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\packages\NUnit.2.6.2\lib\nunit.framework.dll</HintPath> + </Reference> <Reference Include="System"> </Reference> <Reference Include="System.Core"> diff --git a/UnitTests/Linq/UnitTests.Linq.csproj b/UnitTests/Linq/UnitTests.Linq.csproj index da8236d62..59b792631 100644 --- a/UnitTests/Linq/UnitTests.Linq.csproj +++ b/UnitTests/Linq/UnitTests.Linq.csproj @@ -43,6 +43,7 @@ <WarningLevel>4</WarningLevel> <PlatformTarget>x86</PlatformTarget> <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + <NoWarn>649</NoWarn> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> @@ -102,9 +103,17 @@ </PropertyGroup> <ItemGroup> <Reference Include="Accessibility" /> - <Reference Include="FirebirdSql.Data.FirebirdClient, Version=3.0.2.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c, processorArchitecture=MSIL"> + <Reference Include="Devart.Data, Version=5.0.828.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\packages\FirebirdSql.Data.FirebirdClient.3.0.2.1\lib\net40-client\FirebirdSql.Data.FirebirdClient.dll</HintPath> + <HintPath>..\..\packages\dotConnect.Express.for.Oracle.8.1.36\lib\Devart.Data.dll</HintPath> + </Reference> + <Reference Include="Devart.Data.Oracle, Version=8.1.36.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\packages\dotConnect.Express.for.Oracle.8.1.36\lib\Devart.Data.Oracle.dll</HintPath> + </Reference> + <Reference Include="FirebirdSql.Data.FirebirdClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\packages\FirebirdSql.Data.FirebirdClient.4.0.0.0\lib\net40-client\FirebirdSql.Data.FirebirdClient.dll</HintPath> </Reference> <Reference Include="IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> @@ -114,24 +123,25 @@ <SpecificVersion>False</SpecificVersion> <HintPath>..\..\Redist\IBM\IBM.Data.Informix.dll</HintPath> </Reference> - <Reference Include="Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"> - <HintPath>..\..\packages\Npgsql.2.0.11\lib\Net40\Mono.Security.dll</HintPath> - </Reference> - <Reference Include="MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL"> + <Reference Include="Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\packages\MySql.Data.6.5.4\lib\net40\MySql.Data.dll</HintPath> + <HintPath>..\..\packages\Npgsql.2.0.14.3\lib\net40\Mono.Security.dll</HintPath> </Reference> - <Reference Include="Npgsql, Version=2.0.11.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL"> - <HintPath>..\..\packages\Npgsql.2.0.11\lib\Net40\Npgsql.dll</HintPath> + <Reference Include="MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\packages\MySql.Data.6.8.3\lib\net40\MySql.Data.dll</HintPath> </Reference> - <Reference Include="nunit.framework, Version=2.6.2.12296, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL"> + <Reference Include="Npgsql, Version=2.0.14.3, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\packages\NUnit.2.6.2\lib\nunit.framework.dll</HintPath> + <HintPath>..\..\packages\Npgsql.2.0.14.3\lib\net40\Npgsql.dll</HintPath> </Reference> - <Reference Include="Oracle.DataAccess, Version=2.102.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64"> + <Reference Include="nunit.framework, Version=2.6.3.13283, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\Redist\Oracle\Oracle.DataAccess.dll</HintPath> - <Private>False</Private> + <HintPath>..\..\packages\NUnit.2.6.3\lib\nunit.framework.dll</HintPath> + </Reference> + <Reference Include="Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86"> + <Private>True</Private> + <HintPath>..\..\packages\odp.net.x86.112.3.20\lib\net40\Oracle.DataAccess.dll</HintPath> </Reference> <Reference Include="Oracle.ManagedDataAccess"> <HintPath>..\..\Redist\Oracle\Oracle.ManagedDataAccess.dll</HintPath> @@ -150,13 +160,13 @@ <RequiredTargetFramework>3.5</RequiredTargetFramework> </Reference> <Reference Include="System.Data.Services" /> - <Reference Include="System.Data.SQLite, Version=1.0.82.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> + <Reference Include="System.Data.SQLite, Version=1.0.90.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\packages\System.Data.SQLite.1.0.82.0\lib\net40\System.Data.SQLite.dll</HintPath> + <HintPath>..\..\packages\System.Data.SQLite.1.0.90.0\lib\net40\System.Data.SQLite.dll</HintPath> </Reference> - <Reference Include="System.Data.SQLite.Linq, Version=1.0.82.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> + <Reference Include="System.Data.SQLite.Linq, Version=1.0.90.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\packages\System.Data.SQLite.1.0.82.0\lib\net40\System.Data.SQLite.Linq.dll</HintPath> + <HintPath>..\..\packages\System.Data.SQLite.1.0.90.0\lib\net40\System.Data.SQLite.Linq.dll</HintPath> </Reference> <Reference Include="System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL"> <Private>True</Private> @@ -175,14 +185,18 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> + <Compile Include="UpdateTest.cs" /> + <Compile Include="DeleteTest.cs" /> + <Compile Include="EnumMapping.cs" /> <Compile Include="Exceptions\DataExceptionTest.cs" /> + <Compile Include="ExplicitInterfaceTests.cs" /> <Compile Include="TestAK107.cs" /> <Compile Include="BatchTest.cs" /> <Compile Include="Common.cs" /> <Compile Include="ConvertTest.cs" /> <Compile Include="CompileTest.cs" /> <Compile Include="ComplexTest.cs" /> - <Compile Include="Association.cs" /> + <Compile Include="AssociationTest.cs" /> <Compile Include="ConvertExpression.cs" /> <Compile Include="ConcatUnionTest.cs" /> <Compile Include="IdlTest.mono.cs" /> @@ -204,8 +218,17 @@ <Compile Include="ProviderSpecific\MySqlSprocParameterPrefixTests.cs" /> <Compile Include="ProviderSpecific\Oracle.cs" /> <Compile Include="TableFunctionTest.cs" /> + <Compile Include="UserTests\CompareNullableChars.cs" /> + <Compile Include="UserTests\FirstOrDefaultNullReferenceExceptionTest.cs" /> + <Compile Include="UserTests\GroupBySubqueryTest.cs" /> + <Compile Include="UserTests\LetTest.cs" /> + <Compile Include="UserTests\MultiPartIdentifierTest.cs" /> + <Compile Include="UserTests\SelectManyUpdateTest.cs" /> + <Compile Include="UserTests\SelectManyDeleteTest.cs" /> + <Compile Include="UserTests\UnknownSqlTest.cs" /> + <Compile Include="UserTests\UnnecessaryInnerJoinTest.cs" /> <Compile Include="VisualBasicTest.cs" /> - <Compile Include="DmlTest.cs" /> + <Compile Include="InsertTest.cs" /> <Compile Include="ExpressionsTest.cs" /> <Compile Include="MathFunctions.cs" /> <Compile Include="Exceptions\Inheritance.cs" /> @@ -242,6 +265,7 @@ <Link>BLToolkitData.sqlite</Link> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> + <Content Include="DefaultDataProviders.txt" /> <Content Include="x64\SQLite.Interop.dll"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </Content> @@ -254,43 +278,43 @@ <None Include="packages.config" /> </ItemGroup> <ItemGroup> - <ProjectReference Include="..\..\DataProviders\BLToolkit.Data.DataProvider.DB2.4.csproj"> + <ProjectReference Include="..\..\DataProviders\DB2\BLToolkit.Data.DataProvider.DB2.4.csproj"> <Project>{86BF4F10-3606-4016-9919-84C3335813B6}</Project> <Name>BLToolkit.Data.DataProvider.DB2.4</Name> </ProjectReference> - <ProjectReference Include="..\..\DataProviders\BLToolkit.Data.DataProvider.Firebird.4.csproj"> + <ProjectReference Include="..\..\DataProviders\DevartOraclePro\BLToolkit.Data.DataProvider.DevartOracle.4.csproj"> + <Project>{cb303f0b-0aa3-4589-850a-95e985a09492}</Project> + <Name>BLToolkit.Data.DataProvider.DevartOracle.4</Name> + </ProjectReference> + <ProjectReference Include="..\..\DataProviders\Firebird\BLToolkit.Data.DataProvider.Firebird.4.csproj"> <Project>{C1F8C201-BBD9-44F4-884C-CFF8CC960B68}</Project> <Name>BLToolkit.Data.DataProvider.Firebird.4</Name> </ProjectReference> - <ProjectReference Include="..\..\DataProviders\BLToolkit.Data.DataProvider.Informix.4.csproj"> + <ProjectReference Include="..\..\DataProviders\Informix\BLToolkit.Data.DataProvider.Informix.4.csproj"> <Project>{B1DEA25C-7667-471B-BBAD-64D017FDD104}</Project> <Name>BLToolkit.Data.DataProvider.Informix.4</Name> </ProjectReference> - <ProjectReference Include="..\..\DataProviders\BLToolkit.Data.DataProvider.MySql.4.csproj"> + <ProjectReference Include="..\..\DataProviders\MySql\BLToolkit.Data.DataProvider.MySql.4.csproj"> <Project>{3578AF4C-CBFF-4A38-88F5-E86AC990AFBD}</Project> <Name>BLToolkit.Data.DataProvider.MySql.4</Name> </ProjectReference> - <ProjectReference Include="..\..\DataProviders\BLToolkit.Data.DataProvider.Oracle.4.csproj"> + <ProjectReference Include="..\..\DataProviders\Oracle\BLToolkit.Data.DataProvider.Oracle.4.csproj"> <Project>{2B5287F2-A6AC-4D5A-B0A8-01C06144824D}</Project> <Name>BLToolkit.Data.DataProvider.Oracle.4</Name> </ProjectReference> - <ProjectReference Include="..\..\DataProviders\BLToolkit.Data.DataProvider.OracleManaged.4.csproj"> - <Project>{785ce174-0a91-465f-9e41-65e6e05a0ec9}</Project> - <Name>BLToolkit.Data.DataProvider.OracleManaged.4</Name> - </ProjectReference> - <ProjectReference Include="..\..\DataProviders\BLToolkit.Data.DataProvider.PostgreSQL.4.csproj"> + <ProjectReference Include="..\..\DataProviders\PostgreSQL\BLToolkit.Data.DataProvider.PostgreSQL.4.csproj"> <Project>{5A556D57-0D68-433B-AD78-02849583582B}</Project> <Name>BLToolkit.Data.DataProvider.PostgreSQL.4</Name> </ProjectReference> - <ProjectReference Include="..\..\DataProviders\BLToolkit.Data.DataProvider.SqlCe.4.csproj"> + <ProjectReference Include="..\..\DataProviders\SqlCe\BLToolkit.Data.DataProvider.SqlCe.4.csproj"> <Project>{85E90F57-8DE1-4912-8414-28578F4D71CD}</Project> <Name>BLToolkit.Data.DataProvider.SqlCe.4</Name> </ProjectReference> - <ProjectReference Include="..\..\DataProviders\BLToolkit.Data.DataProvider.SQLite.4.csproj"> + <ProjectReference Include="..\..\DataProviders\SQLite\BLToolkit.Data.DataProvider.SQLite.4.csproj"> <Project>{3E414663-B673-47A8-AB59-0E08FE43DA86}</Project> <Name>BLToolkit.Data.DataProvider.SQLite.4</Name> </ProjectReference> - <ProjectReference Include="..\..\DataProviders\BLToolkit.Data.DataProvider.Sybase.4.csproj"> + <ProjectReference Include="..\..\DataProviders\Sybase\BLToolkit.Data.DataProvider.Sybase.4.csproj"> <Project>{6CD8CC3D-643D-4D09-8660-A26085C44FBC}</Project> <Name>BLToolkit.Data.DataProvider.Sybase.4</Name> </ProjectReference> @@ -339,9 +363,7 @@ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> </ItemGroup> - <ItemGroup> - <Folder Include="UserTests\" /> - </ItemGroup> + <ItemGroup /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <PropertyGroup> <PostBuildEvent> diff --git a/UnitTests/Linq/UpdateTest.cs b/UnitTests/Linq/UpdateTest.cs new file mode 100644 index 000000000..1dcea6bed --- /dev/null +++ b/UnitTests/Linq/UpdateTest.cs @@ -0,0 +1,545 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using BLToolkit.Data; +using BLToolkit.Data.DataProvider; +using BLToolkit.Data.Linq; +using BLToolkit.DataAccess; +using BLToolkit.Mapping; + +using NUnit.Framework; + +using Data.Linq; +using Data.Linq.Model; + +#region ReSharper disable +// ReSharper disable ConvertToConstant.Local +#endregion + +namespace Update +{ + [TestFixture] + public class UpdateTest : TestBase + { + [Test] + public void Update1() + { + ForEachProvider(db => + { + try + { + var parent = new Parent1 { ParentID = 1001, Value1 = 1001 }; + + db.Parent.Delete(p => p.ParentID > 1000); + db.Insert(parent); + + Assert.AreEqual(1, db.Parent.Count (p => p.ParentID == parent.ParentID)); + Assert.AreEqual(1, db.Parent.Update(p => p.ParentID == parent.ParentID, p => new Parent { ParentID = p.ParentID + 1 })); + Assert.AreEqual(1, db.Parent.Count (p => p.ParentID == parent.ParentID + 1)); + } + finally + { + db.Child.Delete(c => c.ChildID > 1000); + } + }); + } + + [Test] + public void Update2() + { + ForEachProvider(db => + { + try + { + var parent = new Parent1 { ParentID = 1001, Value1 = 1001 }; + + db.Parent.Delete(p => p.ParentID > 1000); + db.Insert(parent); + + Assert.AreEqual(1, db.Parent.Count(p => p.ParentID == parent.ParentID)); + Assert.AreEqual(1, db.Parent.Where(p => p.ParentID == parent.ParentID).Update(p => new Parent { ParentID = p.ParentID + 1 })); + Assert.AreEqual(1, db.Parent.Count(p => p.ParentID == parent.ParentID + 1)); + } + finally + { + db.Child.Delete(c => c.ChildID > 1000); + } + }); + } + + [Test] + public void Update3() + { + ForEachProvider(new[] { ProviderName.Informix }, db => + { + try + { + var id = 1001; + + db.Child.Delete(c => c.ChildID > 1000); + db.Child.Insert(() => new Child { ParentID = 1, ChildID = id}); + + Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id)); + Assert.AreEqual(1, db.Child.Where(c => c.ChildID == id && c.Parent.Value1 == 1).Update(c => new Child { ChildID = c.ChildID + 1 })); + Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id + 1)); + } + finally + { + db.Child.Delete(c => c.ChildID > 1000); + } + }); + } + + [Test] + public void Update4() + { + ForEachProvider(new[] { ProviderName.Informix }, db => + { + try + { + var id = 1001; + + db.Child.Delete(c => c.ChildID > 1000); + db.Child.Insert(() => new Child { ParentID = 1, ChildID = id}); + + Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id)); + Assert.AreEqual(1, + db.Child + .Where(c => c.ChildID == id && c.Parent.Value1 == 1) + .Set(c => c.ChildID, c => c.ChildID + 1) + .Update()); + Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id + 1)); + } + finally + { + db.Child.Delete(c => c.ChildID > 1000); + } + }); + } + + [Test] + public void Update5() + { + ForEachProvider(new[] { ProviderName.Informix }, db => + { + try + { + var id = 1001; + + db.Child.Delete(c => c.ChildID > 1000); + db.Child.Insert(() => new Child { ParentID = 1, ChildID = id}); + + Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id)); + Assert.AreEqual(1, + db.Child + .Where(c => c.ChildID == id && c.Parent.Value1 == 1) + .Set(c => c.ChildID, () => id + 1) + .Update()); + Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id + 1)); + } + finally + { + db.Child.Delete(c => c.ChildID > 1000); + } + }); + } + + [Test] + public void Update6() + { + ForEachProvider(new[] { ProviderName.Informix }, db => + { + try + { + var id = 1001; + + db.Parent4.Delete(p => p.ParentID > 1000); + db.Insert(new Parent4 { ParentID = id, Value1 = TypeValue.Value1 }); + + Assert.AreEqual(1, db.Parent4.Count(p => p.ParentID == id && p.Value1 == TypeValue.Value1)); + Assert.AreEqual(1, + db.Parent4 + .Where(p => p.ParentID == id) + .Set(p => p.Value1, () => TypeValue.Value2) + .Update()); + Assert.AreEqual(1, db.Parent4.Count(p => p.ParentID == id && p.Value1 == TypeValue.Value2)); + } + finally + { + db.Parent4.Delete(p => p.ParentID > 1000); + } + }); + } + + [Test] + public void Update7() + { + ForEachProvider(new[] { ProviderName.Informix }, db => + { + try + { + var id = 1001; + + db.Parent4.Delete(p => p.ParentID > 1000); + db.Insert(new Parent4 { ParentID = id, Value1 = TypeValue.Value1 }); + + Assert.AreEqual(1, db.Parent4.Count(p => p.ParentID == id && p.Value1 == TypeValue.Value1)); + Assert.AreEqual(1, + db.Parent4 + .Where(p => p.ParentID == id) + .Set(p => p.Value1, TypeValue.Value2) + .Update()); + Assert.AreEqual(1, db.Parent4.Count(p => p.ParentID == id && p.Value1 == TypeValue.Value2)); + + Assert.AreEqual(1, + db.Parent4 + .Where(p => p.ParentID == id) + .Set(p => p.Value1, TypeValue.Value3) + .Update()); + Assert.AreEqual(1, db.Parent4.Count(p => p.ParentID == id && p.Value1 == TypeValue.Value3)); + } + finally + { + db.Parent4.Delete(p => p.ParentID > 1000); + } + }); + } + + [Test] + public void Update8() + { + ForEachProvider(db => + { + try + { + var parent = new Parent1 { ParentID = 1001, Value1 = 1001 }; + + db.Parent.Delete(p => p.ParentID > 1000); + db.Insert(parent); + + parent.Value1++; + + db.Update(parent); + + Assert.AreEqual(1002, db.Parent.Single(p => p.ParentID == parent.ParentID).Value1); + } + finally + { + db.Child.Delete(c => c.ChildID > 1000); + } + }); + } + + [Test] + public void Update9() + { + ForEachProvider(new[] { ProviderName.Informix, ProviderName.SqlCe, ProviderName.DB2, ProviderName.Firebird, "Oracle", "DevartOracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, db => + { + try + { + var id = 1001; + + db.Child.Delete(c => c.ChildID > 1000); + db.Child.Insert(() => new Child { ParentID = 1, ChildID = id}); + + var q = + from c in db.Child + join p in db.Parent on c.ParentID equals p.ParentID + where c.ChildID == id && c.Parent.Value1 == 1 + select new { c, p }; + + Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id)); + Assert.AreEqual(1, q.Update(db.Child, _ => new Child { ChildID = _.c.ChildID + 1, ParentID = _.p.ParentID })); + Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id + 1)); + } + finally + { + db.Child.Delete(c => c.ChildID > 1000); + } + }); + } + + [Test] + public void Update10() + { + ForEachProvider(new[] { ProviderName.Informix, ProviderName.SqlCe, ProviderName.DB2, ProviderName.Firebird, "Oracle", "DevartOracle", ProviderName.PostgreSQL, ProviderName.MySql, ProviderName.SQLite, ProviderName.Access }, db => + { + try + { + var id = 1001; + + db.Child.Delete(c => c.ChildID > 1000); + db.Child.Insert(() => new Child { ParentID = 1, ChildID = id}); + + var q = + from p in db.Parent + join c in db.Child on p.ParentID equals c.ParentID + where c.ChildID == id && c.Parent.Value1 == 1 + select new { c, p }; + + Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id)); + Assert.AreEqual(1, q.Update(db.Child, _ => new Child { ChildID = _.c.ChildID + 1, ParentID = _.p.ParentID })); + Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id + 1)); + } + finally + { + db.Child.Delete(c => c.ChildID > 1000); + } + }); + } + + //[Test] + public void Update11() + { + ForEachProvider(db => + { + var q = db.GetTable<LinqDataTypes2>().Union(db.GetTable<LinqDataTypes2>()); + + //db.GetTable<LinqDataTypes2>().Update(_ => q.Contains(_), _ => new LinqDataTypes2 { GuidValue = _.GuidValue }); + + q.Update(_ => new LinqDataTypes2 { GuidValue = _.GuidValue }); + }); + } + + [Test] + public void UpdateAssociation1([DataContexts(ProviderName.Sybase, ProviderName.Informix)] string context) + { + using (var db = GetDataContext(context)) + { + const int childId = 10000; + const int parentId = 20000; + + try + { + db.Child. Delete(x => x.ChildID == childId); + db.Parent.Delete(x => x.ParentID == parentId); + + db.Parent.Insert(() => new Parent { ParentID = parentId, Value1 = parentId }); + db.Child. Insert(() => new Child { ChildID = childId, ParentID = parentId }); + + var parents = + from child in db.Child + where child.ChildID == childId + select child.Parent; + + Assert.AreEqual(1, parents.Update(db.Parent, x => new Parent { Value1 = 5 })); + } + finally + { + db.Child. Delete(x => x.ChildID == childId); + db.Parent.Delete(x => x.ParentID == parentId); + } + } + } + + [Test] + public void UpdateAssociation2([DataContexts(ProviderName.Sybase, ProviderName.Informix)] string context) + { + using (var db = GetDataContext(context)) + { + const int childId = 10000; + const int parentId = 20000; + + try + { + db.Child. Delete(x => x.ChildID == childId); + db.Parent.Delete(x => x.ParentID == parentId); + + db.Parent.Insert(() => new Parent { ParentID = parentId, Value1 = parentId }); + db.Child. Insert(() => new Child { ChildID = childId, ParentID = parentId }); + + var parents = + from child in db.Child + where child.ChildID == childId + select child.Parent; + + Assert.AreEqual(1, parents.Update(x => new Parent { Value1 = 5 })); + } + finally + { + db.Child. Delete(x => x.ChildID == childId); + db.Parent.Delete(x => x.ParentID == parentId); + } + } + } + + [Test] + public void UpdateAssociation3([DataContexts(ProviderName.Sybase, ProviderName.Informix)] string context) + { + using (var db = GetDataContext(context)) + { + const int childId = 10000; + const int parentId = 20000; + + try + { + db.Child. Delete(x => x.ChildID == childId); + db.Parent.Delete(x => x.ParentID == parentId); + + db.Parent.Insert(() => new Parent { ParentID = parentId, Value1 = parentId }); + db.Child. Insert(() => new Child { ChildID = childId, ParentID = parentId }); + + var parents = + from child in db.Child + where child.ChildID == childId + select child.Parent; + + Assert.AreEqual(1, parents.Update(x => x.ParentID > 0, x => new Parent { Value1 = 5 })); + } + finally + { + db.Child. Delete(x => x.ChildID == childId); + db.Parent.Delete(x => x.ParentID == parentId); + } + } + } + + [Test] + public void UpdateAssociation4([DataContexts(ProviderName.Sybase, ProviderName.Informix)] string context) + { + using (var db = GetDataContext(context)) + { + const int childId = 10000; + const int parentId = 20000; + + try + { + db.Child. Delete(x => x.ChildID == childId); + db.Parent.Delete(x => x.ParentID == parentId); + + db.Parent.Insert(() => new Parent { ParentID = parentId, Value1 = parentId }); + db.Child. Insert(() => new Child { ChildID = childId, ParentID = parentId }); + + var parents = + from child in db.Child + where child.ChildID == childId + select child.Parent; + + Assert.AreEqual(1, parents.Set(x => x.Value1, 5).Update()); + } + finally + { + db.Child. Delete(x => x.ChildID == childId); + db.Parent.Delete(x => x.ParentID == parentId); + } + } + } + + static readonly Func<TestDbManager,int,string,int> _updateQuery = + CompiledQuery.Compile <TestDbManager,int,string,int>((ctx,key,value) => + ctx.Person + .Where(_ => _.ID == key) + .Set(_ => _.FirstName, value) + .Update()); + + [Test] + public void CompiledUpdate() + { + using (var ctx = new TestDbManager()) + { + _updateQuery(ctx, 12345, "54321"); + } + } + + [TableName("LinqDataTypes")] + class Table1 + { + public int ID; + public bool BoolValue; + + [Association(ThisKey = "ID", OtherKey = "ParentID", CanBeNull = false)] + public List<Table2> Tables2; + } + + [TableName("Parent")] + class Table2 + { + public int ParentID; + public bool Value1; + + [Association(ThisKey = "ParentID", OtherKey = "ID", CanBeNull = false)] + public Table1 Table1; + } + + [Test] + public void UpdateAssociation5([DataContexts( + ProviderName.Access, ProviderName.DB2, ProviderName.Firebird, ProviderName.Informix, "Oracle", ProviderName.PostgreSQL, ProviderName.SqlCe, ProviderName.SQLite, + ExcludeLinqService=true)] string context) + { + using (var db = new DbManager(context)) + { + var ids = new[] { 10000, 20000 }; + + db.GetTable<Table2>() + .Where (x => ids.Contains(x.ParentID)) + .Select(x => x.Table1) + .Distinct() + .Set(y => y.BoolValue, y => y.Tables2.All(x => x.Value1)) + .Update(); + + var idx = db.LastQuery.IndexOf("INNER JOIN"); + + Assert.That(idx, Is.Not.EqualTo(-1)); + + idx = db.LastQuery.IndexOf("INNER JOIN", idx + 1); + + Assert.That(idx, Is.EqualTo(-1)); + } + } + + [Test] + public void AsUpdatableTest([DataContexts(ProviderName.Informix)] string context) + { + using (var db = GetDataContext(context)) + { + try + { + var id = 1001; + + db.Child.Delete(c => c.ChildID > 1000); + db.Child.Insert(() => new Child { ParentID = 1, ChildID = id}); + + Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id)); + + var q = db.Child.Where(c => c.ChildID == id && c.Parent.Value1 == 1); + var uq = q.AsUpdatable(); + + uq = uq.Set(c => c.ChildID, c => c.ChildID + 1); + + Assert.AreEqual(1, uq.Update()); + Assert.AreEqual(1, db.Child.Count(c => c.ChildID == id + 1)); + } + finally + { + db.Child.Delete(c => c.ChildID > 1000); + } + } + } + + [TableName("GrandChild")] + class Table3 + { + [PrimaryKey(1)] public int? ParentID; + [PrimaryKey(2)] public int? ChildID; + public int? GrandChildID; + } + + [Test] + public void UpdateNullablePrimaryKey([DataContexts] string context) + { + using (var db = GetDataContext(context)) + { + db.Update(new Table3 { ParentID = 10000, ChildID = null, GrandChildID = 1000 }); + + if (db is DbManager) + Assert.IsTrue(((DbManager)db).LastQuery.Contains("IS NULL")); + + db.Update(new Table3 { ParentID = 10000, ChildID = 111, GrandChildID = 1000 }); + + if (db is DbManager) + Assert.IsFalse(((DbManager)db).LastQuery.Contains("IS NULL")); + } + } + } +} diff --git a/UnitTests/Linq/UserTests/CompareNullableChars.cs b/UnitTests/Linq/UserTests/CompareNullableChars.cs new file mode 100644 index 000000000..e10e75e11 --- /dev/null +++ b/UnitTests/Linq/UserTests/CompareNullableChars.cs @@ -0,0 +1,47 @@ +using System; +using System.Linq; + +using BLToolkit.Data; +using BLToolkit.Data.Linq; +using BLToolkit.DataAccess; +using BLToolkit.Mapping; + +using NUnit.Framework; + +namespace Data.Linq.UserTests +{ + [TestFixture] + public class CompareNullableChars : TestBase + { + class Table1 + { + [PrimaryKey(1)] + [Identity] public Int64 Field1 { get; set; } + [Nullable] public Char? Foeld2 { get; set; } + } + + class Repository : DbManager + { + public Repository(string configurationString) : base(configurationString) + { + } + + public Table<Table1> Table1 { get { return this.GetTable<Table1>(); } } + } + + [Test] + public void Test([DataContexts(ExcludeLinqService=true)] string context) + { + using (var db = new Repository(context)) + { + var q = + from current in db.Table1 + from previous in db.Table1 + where current.Foeld2 == previous.Foeld2 + select new { current.Field1, Field2 = previous.Field1 }; + + var sql = q.ToString(); + } + } + } +} diff --git a/UnitTests/Linq/UserTests/FirstOrDefaultNullReferenceExceptionTest.cs b/UnitTests/Linq/UserTests/FirstOrDefaultNullReferenceExceptionTest.cs new file mode 100644 index 000000000..7788c757c --- /dev/null +++ b/UnitTests/Linq/UserTests/FirstOrDefaultNullReferenceExceptionTest.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using BLToolkit.DataAccess; +using BLToolkit.Mapping; + +using NUnit.Framework; + +namespace Data.Linq.UserTests +{ + [TestFixture] + public class FirstOrDefaultNullReferenceExceptionTest : TestBase + { + [TableName("GrandChild")] + class Table1 + { + public int ChildID; + } + + [TableName("Child")] + class Table2 + { + public int ChildID; + public int ParentID; + + [Association(ThisKey = "ChildID", OtherKey = "ChildID", CanBeNull = true)] + public List<Table1> GrandChildren { get; set; } + } + + [TableName("Parent")] + class Table3 + { + public int ParentID { get; set; } + + [Association(ThisKey = "ParentID", OtherKey = "ParentID", CanBeNull = true)] + public List<Table2> Children { get; set; } + } + + [Test] + public void Test() + { + using (var db = new TestDbManager()) + { + /* + var query = + from t3 in db.Parent + //let t1 = t3.Children.SelectMany(x => x.GrandChildren) + //let t2 = t3.Table2s.SelectMany(x => x.Table1s) + select new + { + //c2 = t1.Count(), + c1 = t3.Children.SelectMany(x => x.GrandChildren), + }; + */ + + var query = + from t3 in db.GetTable<Table3>() + let t1 = t3.Children.SelectMany(x => x.GrandChildren) + //let t2 = t3.Table2s.SelectMany(x => x.Table1s) + select new + { + c2 = t1.Count(), + c1 = t3.Children.SelectMany(x => x.GrandChildren).Count(), + }; + + query.FirstOrDefault(p => p.c1 > 10); + } + } + } +} diff --git a/UnitTests/Linq/UserTests/GroupBySubqueryTest.cs b/UnitTests/Linq/UserTests/GroupBySubqueryTest.cs new file mode 100644 index 000000000..f90bd4820 --- /dev/null +++ b/UnitTests/Linq/UserTests/GroupBySubqueryTest.cs @@ -0,0 +1,104 @@ +using System; +using System.Linq; + +using BLToolkit.Mapping; + +using NUnit.Framework; + +namespace Data.Linq.UserTests +{ + [TestFixture] + public class GroupBySubqueryTest : TestBase + { + class Table1 + { + public long Field1 { get; set; } + public int Field2 { get; set; } + + [Nullable] + public int? Field3 { get; set; } + + [Association(ThisKey = "Field1", OtherKey = "Field1", CanBeNull = false)] + public Table3 Ref1 { get; set; } + + [Association(ThisKey = "Field3", OtherKey = "Field3", CanBeNull = true)] + public Table5 Ref2 { get; set; } + + [Association(ThisKey = "Field2", OtherKey = "Field2", CanBeNull = true)] + public Table2 Ref3 { get; set; } + } + + class Table2 + { + public int Field2 { get; set; } + public string Field4 { get; set; } + } + + class Table3 + { + public int Field5 { get; set; } + public long Field1 { get; set; } + + [AssociationAttribute(ThisKey = "Field5", OtherKey = "Field5", CanBeNull = false)] + public Table4 Ref4 { get; set; } + } + + class Table4 + { + public int Field5 { get; set; } + public int Field6 { get; set; } + } + + public class Table5 + { + [Nullable] + public int? Field3 { get; set; } + public int Field7 { get; set; } + + [Association(ThisKey = "Field7", OtherKey = "Field7", CanBeNull = true)] + public Table6 Ref5 { get; set; } + } + + public class Table6 + { + public int Field7 { get; set; } + public string Field8 { get; set; } + } + + [Test] + public void Test() + { + using (var db = new TestDbManager()) + { + var q = ( + from t1 in db.GetTable<Table1>() + where t1.Field3 != null + select new + { + t1.Ref1.Ref4.Field6, t1.Ref3.Field4, + Field1 = t1.Ref2.Ref5.Field8 ?? string.Empty + } + ).Distinct(); + + var sql1 = q.ToString(); + + var q2 = + from t3 in q + group t3 by new { t3.Field6, t3.Field4 } + into g + where g.Count() > 1 + select new { g.Key.Field6, EngineeringCircuitNumber = g.Key.Field4, Count = g.Count() }; + + var sql2 = q2.ToString(); + + var idx = sql2.IndexOf("DISTINCT"); + + Assert.That(idx, Is.GreaterThanOrEqualTo(0)); + + idx = sql2.IndexOf("Field8", idx); + + Assert.That(idx, Is.GreaterThanOrEqualTo(0)); + } + } + } +} diff --git a/UnitTests/Linq/UserTests/LetTest.cs b/UnitTests/Linq/UserTests/LetTest.cs new file mode 100644 index 000000000..c4ef23847 --- /dev/null +++ b/UnitTests/Linq/UserTests/LetTest.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; + +using BLToolkit.Data.Linq; +using BLToolkit.Mapping; + +using NUnit.Framework; + +namespace Data.Linq.UserTests +{ + [TestFixture] + public class LetTest : TestBase + { + class Table1 + { + public int Field3; + public int? Field5; + + [Association(ThisKey="Field5", OtherKey="Field3", CanBeNull=true)] + public Table1 Ref1 { get; set; } + + [Association(ThisKey="Field3", OtherKey="Field3", CanBeNull=true)] + public List<Table3> Ref2 { get; set; } + } + + class Table2 + { + public int? Field6; + + [Association(ThisKey = "Field6", OtherKey = "Field6", CanBeNull = true)] + public Table3 Ref3 { get; set; } + } + + class Table3 + { + public int? Field6; + public int Field3; + public int Field4; + + [Association(ThisKey="Field3", OtherKey="Field3", CanBeNull=true)] + public Table1 Ref4 { get; set; } + + [Association(ThisKey="Field4", OtherKey="Field4", CanBeNull=true)] + public Table7 Ref5 { get; set; } + + [Association(ThisKey = "Field6", OtherKey = "Field6", CanBeNull = true)] + public List<Table2> Ref9 { get; set; } + } + + class Table7 + { + public int Field4; + public string Field8; + } + + [Test] + public void LetTest1() + { + using (var repository = new TestDbManager()) + { + var q = + from t1 in repository.GetTable<Table2>() + from t2 in + from t5 in t1.Ref3.Ref4.Ref1.Ref2 + let t3 = t1.Ref3 + where t3.Ref5.Field8 == t5.Ref5.Field8 + from t4 in t5.Ref9 + select t4 + select t1; + + var linqResult = q.ToString(); + } + } + + [Test] + public void LetTest2() + { + using (var repository = new TestDbManager()) + { + var q = + from t1 in repository.GetTable<Table2>() + from t2 in + from t5 in t1.Ref3.Ref4.Ref1.Ref2 + let t3 = t1.Ref3 + where t3.Ref5 == t5.Ref5 + from t4 in t5.Ref9 + select t4 + select t1; + + var linqResult = q.ToString(); + } + } + } +} diff --git a/UnitTests/Linq/UserTests/MultiPartIdentifierTest.cs b/UnitTests/Linq/UserTests/MultiPartIdentifierTest.cs new file mode 100644 index 000000000..7dac1a49b --- /dev/null +++ b/UnitTests/Linq/UserTests/MultiPartIdentifierTest.cs @@ -0,0 +1,106 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using BLToolkit.Data.Linq; +using BLToolkit.DataAccess; +using BLToolkit.Mapping; + +using NUnit.Framework; + +// ReSharper disable ClassNeverInstantiated.Local + +namespace Data.Linq.UserTests +{ + [TestFixture] + public class MultiPartIdentifierTest : TestBase + { + class Table1 + { + public long Field1; + public long Field2; + public int? Field3; + + [Association(ThisKey = "Field2", OtherKey = "Field2", CanBeNull = false)] + public Table2 Table2Ref { get; set; } + + [Association(ThisKey = "Field3", OtherKey = "Field3", CanBeNull = true)] + public Table4 Table4Ref { get; set; } + } + + class Table2 + { + public long Field2 { get; set; } + public int Field4 { get; set; } + + [Association(ThisKey = "Field2", OtherKey = "Field2", CanBeNull = false)] + public List<Table1> Table1s { get; set; } + + [Association(ThisKey="Field4", OtherKey="Field4", CanBeNull=false)] + public Table3 Table3Ref { get; set; } + } + + class Table3 + { + public int Field4; + + [Association(ThisKey="Field4", OtherKey="Field4", CanBeNull=true)] + public List<Table2> Table2s { get; set; } + } + + class Table4 + { + public int Field3 { get; set; } + public int Field4 { get; set; } + + [Association(ThisKey = "Field3", OtherKey = "Field3", CanBeNull = true)] + public List<Table1> Table1s { get; set; } + + [Association(ThisKey="Field4", OtherKey="ProblematicalField", CanBeNull=false)] + public Table5 Table5Ref { get; set; } + } + + class Table5 + { + public int? Field5; + public int ProblematicalField; + + [Association(ThisKey = "Field5", OtherKey = "ProblematicalField", CanBeNull = true)] + public Table5 Table5Ref { get; set; } + + [Association(ThisKey = "ProblematicalField", OtherKey = "Field4", CanBeNull = true)] + public List<Table4> Table4s { get; set; } + } + + [Test] + public void Test([IncludeDataContexts("Sql2008")] string context) + { + using (var db = GetDataContext(context)) + { + var q = + from t1 in db.GetTable<Table5>() + from t2 in + (from t3 in t1.Table4s.SelectMany(x => x.Table1s) + from t4 in + from t5 in t3.Table4Ref.Table5Ref.Table5Ref.Table4s + from t6 in t5.Table1s + select t6 + select t4.Field1) + from t7 in + (from t8 in t1.Table5Ref.Table4s.SelectMany(x => x.Table1s) + from t9 in + from t10 in t8.Table2Ref.Table3Ref.Table2s + from t11 in t10.Table1s + select t11 + select t9.Field1) + where t2 == t7 + select t7; + + var sql = q.ToString(); + var idx = sql.IndexOf(","); + + Assert.That(idx, Is.EqualTo(-1)); + } + } + } +} diff --git a/UnitTests/Linq/UserTests/SelectManyDeleteTest.cs b/UnitTests/Linq/UserTests/SelectManyDeleteTest.cs new file mode 100644 index 000000000..85fd75dd4 --- /dev/null +++ b/UnitTests/Linq/UserTests/SelectManyDeleteTest.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using BLToolkit.Data.DataProvider; +using BLToolkit.Data.Linq; +using BLToolkit.DataAccess; +using BLToolkit.Mapping; + +using NUnit.Framework; + +namespace Data.Linq.UserTests +{ + [TestFixture] + public class SelectManyDeleteTest : TestBase + { + [TableName(Name = "GrandChild")] + public new class GrandChild + { + public int ChildID { get; set; } + } + + [TableName(Name = "Child")] + public new class Child + { + public int ParentID { get; set; } + public int ChildID { get; set; } + + [Association(ThisKey = "ChildID", OtherKey = "ChildID", CanBeNull = false)] + public List<GrandChild> GrandChildren { get; set; } + } + + [TableName(Name = "Parent")] + public new class Parent + { + [Identity, PrimaryKey(1)] + public int ParentID { get; set; } + + [Association(ThisKey = "ParentID", OtherKey = "ParentID", CanBeNull = true)] + public List<Child> Children { get; set; } + } + + [Test] + public void Test([DataContexts( + ProviderName.Access, ProviderName.DB2, ProviderName.Informix, "Oracle", + ProviderName.PostgreSQL, ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Firebird + )] string context) + { + var harnessIds = new int[2]; + + using (var db = GetDataContext(context)) + { + db.GetTable<Parent>() + .Where (x => harnessIds.Contains(x.ParentID)) + .SelectMany(x => x.Children) + .SelectMany(x => x.GrandChildren) + .Delete(); + } + } + } +} + diff --git a/UnitTests/Linq/UserTests/SelectManyUpdateTest.cs b/UnitTests/Linq/UserTests/SelectManyUpdateTest.cs new file mode 100644 index 000000000..f01fa65a5 --- /dev/null +++ b/UnitTests/Linq/UserTests/SelectManyUpdateTest.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using BLToolkit.Data.DataProvider; +using BLToolkit.Data.Linq; +using BLToolkit.DataAccess; +using BLToolkit.Mapping; + +using NUnit.Framework; + +namespace Data.Linq.UserTests +{ + [TestFixture] + public class SelectManyUpdateTest : TestBase + { + public new class Child + { + [Identity, PrimaryKey(1)] public int ParentID { get; set; } + [Nullable] public int? ChildID { get; set; } + + [AssociationAttribute(ThisKey = "ParentID", OtherKey = "ChildID", CanBeNull = true)] + public List<Child> Children { get; set; } + } + + public new class Parent + { + [Identity, PrimaryKey(1)] public int ParentID { get; set; } + [Nullable] public int? Value1 { get; set; } + + [AssociationAttribute(ThisKey = "ParentID", OtherKey = "Value1", CanBeNull = true)] + public List<Parent> Values { get; set; } + + [AssociationAttribute(ThisKey = "ParentID", OtherKey = "ParentID", CanBeNull = true)] + public List<Child> Children { get; set; } + } + + [Test] + public void Test1([DataContexts(ProviderName.Access, ProviderName.Informix, ProviderName.MySql)] string context) + { + var harnessIds = new int[2]; + + using (var db = GetDataContext(context)) + db.GetTable<Parent>() + .Where (x => harnessIds.Contains(x.ParentID)) + .SelectMany(x => x.Values) + .Set (x => x.Value1, (long?)null) + .Update(); + } + + [Test] + public void Test2([DataContexts(ProviderName.Access, ProviderName.Informix, ProviderName.MySql)] string context) + { + var harnessIds = new int[2]; + + using (var db = GetDataContext(context)) + db.GetTable<Parent>() + .Where (x => harnessIds.Contains(x.ParentID)) + .SelectMany(x => x.Children) + .SelectMany(x => x.Children) + .Set (x => x.ChildID, 10) + .Update(); + } + } +} diff --git a/UnitTests/Linq/UserTests/UnknownSqlTest.cs b/UnitTests/Linq/UserTests/UnknownSqlTest.cs new file mode 100644 index 000000000..f04705c27 --- /dev/null +++ b/UnitTests/Linq/UserTests/UnknownSqlTest.cs @@ -0,0 +1,42 @@ +using System; +using System.Linq; + +using BLToolkit.Data.Linq; + +using NUnit.Framework; + +namespace Data.Linq.UserTests +{ + [TestFixture] + public class UnknownSqlTest : TestBase + { + enum ColumnDataType + { + Unknown = 0, + Text = 1, + } + + class CustomTableColumn + { + public int? DataTypeID { get; set; } + } + + [Test] + public void Test() + { + using (var db = new TestDbManager()) + { + var q = db.GetTable<CustomTableColumn>() + .Select( + x => new + { + DataType = Sql.AsSql(ColumnDataType.Unknown), + }); + + var sql = q.ToString(); + + Assert.That(sql, Is.Not.Contains("Unknown")); + } + } + } +} diff --git a/UnitTests/Linq/UserTests/UnnecessaryInnerJoinTest.cs b/UnitTests/Linq/UserTests/UnnecessaryInnerJoinTest.cs new file mode 100644 index 000000000..1734553d4 --- /dev/null +++ b/UnitTests/Linq/UserTests/UnnecessaryInnerJoinTest.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using BLToolkit.Data; +using BLToolkit.DataAccess; +using BLToolkit.Mapping; + +using NUnit.Framework; + +namespace Data.Linq.UserTests +{ + [TestFixture] + public class UnnecessaryInnerJoinTest : TestBase + { + class Table1 + { + [PrimaryKey(1)] + [Identity] + public Int64 Field1 { get; set; } + public Int64 Field2 { get; set; } + } + + class Table2 + { + [PrimaryKey(1)] + [Identity] + public Int64 Field2 { get; set; } + + [Association(ThisKey = "Field2", OtherKey = "Field2", CanBeNull = false)] + public List<Table1> Field3 { get; set; } + } + + [Test] + public void Test([DataContextsAttribute(ExcludeLinqService=true)] string context) + { + var ids = new long[] { 1, 2, 3 }; + + using (var db = new DbManager(context)) + { + var q = + from t1 in db.GetTable<Table2>() + where t1.Field3.Any(x => ids.Contains(x.Field1)) + select new { t1.Field2 }; + + var sql = q.ToString(); + + Assert.That(sql.IndexOf("INNER JOIN"), Is.LessThan(0)); + } + } + } +} diff --git a/UnitTests/Linq/VisualBasicTest.cs b/UnitTests/Linq/VisualBasicTest.cs index 9b3271e6f..249d05a12 100644 --- a/UnitTests/Linq/VisualBasicTest.cs +++ b/UnitTests/Linq/VisualBasicTest.cs @@ -1,11 +1,14 @@ using System; using System.Linq; + using BLToolkit.Data.DataProvider; -using Data.Linq.Model; + using NUnit.Framework; namespace Data.Linq { + using Model; + [TestFixture] public class VisualBasicTest : TestBase { @@ -35,7 +38,7 @@ public void ParameterName() VisualBasicCommon.ParamenterName(db))); } - [Test] + [Test] public void SearchCondition1() { ForEachProvider( @@ -48,7 +51,7 @@ from t in Types } [Test] - public void SearchCondition2() + public void SearchCondition2([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) { diff --git a/UnitTests/Linq/WhereTest.cs b/UnitTests/Linq/WhereTest.cs index bf2a2d0a1..da086bd5b 100644 --- a/UnitTests/Linq/WhereTest.cs +++ b/UnitTests/Linq/WhereTest.cs @@ -2,9 +2,10 @@ using System.Collections.Generic; using System.Linq; -using NUnit.Framework; - using BLToolkit.Data.DataProvider; +using BLToolkit.Mapping; + +using NUnit.Framework; namespace Data.Linq { @@ -193,19 +194,19 @@ public void BinaryMultiply() TestOneJohn(db => from p in db.Person where p.ID * 10 - 9 == 1 select p); } - [Test] + [Test] public void BinaryXor() { TestOneJohn(new[] { ProviderName.Access }, db => from p in db.Person where (p.ID ^ 2) == 3 select p); } - [Test] + [Test] public void BinaryAnd() { TestOneJohn(new[] { ProviderName.Access }, db => from p in db.Person where (p.ID & 3) == 1 select p); } - [Test] + [Test] public void BinaryOr() { TestOneJohn(new[] { ProviderName.Access }, db => from p in db.Person where (p.ID | 2) == 3 select p); @@ -838,7 +839,7 @@ public void AliasTest5() } [Test] - public void SelectNestedCalculatedTest() + public void SelectNestedCalculatedTest([IncludeDataContexts("Northwind")] string context) { using (var db = new NorthwindDB()) AreEqual( @@ -908,12 +909,15 @@ public void CheckField5() public void CheckField6() { ForEachProvider(db => AreEqual( - from p in Parent - select new { p, Value = p.Value1 * 100 } into p - where p.p.ParentID == 1 && p.Value > 0 select new { p.p.Value1, p.Value, p.p, p1 = p }, - from p in db.Parent - select new { p, Value = p.Value1 * 100 } into p - where p.p.ParentID == 1 && p.Value > 0 select new { p.p.Value1, p.Value, p.p, p1 = p })); + from p1 in Parent + select new { p1, Value = p1.Value1 * 100 } into p + where p.p1.ParentID == 1 && p.Value > 0 + select new { p, p.p1.Value1, p.Value, p.p1 }, + + from p1 in db.Parent + select new { p1, Value = p1.Value1 * 100 } into p + where p.p1.ParentID == 1 && p.Value > 0 + select new { p, p.p1.Value1, p.Value, p.p1 })); } [Test] @@ -922,11 +926,11 @@ public void SubQuery1() ForEachProvider(db => AreEqual( from p in Types select new { Value = Math.Round(p.MoneyValue, 2) } into pp - where pp.Value != 0 + where pp.Value != 0 && pp.Value != 7 select pp.Value, from p in db.Types select new { Value = Math.Round(p.MoneyValue, 2) } into pp - where pp.Value != 0 + where pp.Value != 0 && pp.Value != 7 select pp.Value)); } diff --git a/UnitTests/Linq/packages.config b/UnitTests/Linq/packages.config index edb9b5c9a..631da2eb2 100644 --- a/UnitTests/Linq/packages.config +++ b/UnitTests/Linq/packages.config @@ -1,9 +1,11 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="FirebirdSql.Data.FirebirdClient" version="3.0.2.1" targetFramework="net40" /> + <package id="dotConnect.Express.for.Oracle" version="8.1.36" targetFramework="net40" /> + <package id="FirebirdSql.Data.FirebirdClient" version="4.0.0.0" targetFramework="net40" /> <package id="Microsoft.SqlServer.Compact" version="4.0.8876.1" targetFramework="net40" /> - <package id="MySql.Data" version="6.5.4" /> - <package id="Npgsql" version="2.0.11" /> - <package id="NUnit" version="2.6.2" targetFramework="net40" /> - <package id="System.Data.SQLite" version="1.0.82.0" targetFramework="net40" /> + <package id="MySql.Data" version="6.8.3" targetFramework="net40" /> + <package id="Npgsql" version="2.0.14.3" targetFramework="net40" /> + <package id="NUnit" version="2.6.3" targetFramework="net40" /> + <package id="odp.net.x86" version="112.3.20" targetFramework="net40" /> + <package id="System.Data.SQLite" version="1.0.90.0" targetFramework="net40" /> </packages> \ No newline at end of file diff --git a/UnitTests/Linq/x64/SQLite.Interop.dll b/UnitTests/Linq/x64/SQLite.Interop.dll index 21c2bd85c..30e752000 100644 Binary files a/UnitTests/Linq/x64/SQLite.Interop.dll and b/UnitTests/Linq/x64/SQLite.Interop.dll differ diff --git a/UnitTests/Linq/x86/SQLite.Interop.dll b/UnitTests/Linq/x86/SQLite.Interop.dll index 817fa3a27..092ed077a 100644 Binary files a/UnitTests/Linq/x86/SQLite.Interop.dll and b/UnitTests/Linq/x86/SQLite.Interop.dll differ diff --git a/UnitTests/UnitTests.Regression/Issues/Issue_0047_Test.cs b/UnitTests/UnitTests.Regression/Issues/Issue_0047_Test.cs new file mode 100644 index 000000000..ea11c1a39 --- /dev/null +++ b/UnitTests/UnitTests.Regression/Issues/Issue_0047_Test.cs @@ -0,0 +1,35 @@ +using System; +using System.Security.Principal; +using System.Threading; + +using BLToolkit.Aspects; +using BLToolkit.Reflection; + +using NUnit.Framework; + +namespace Aspects +{ + [TestFixture] + public class Issue_0047_Test + { + public abstract class TestClass + { + [Counter] + public virtual void Test() + { + } + } + + [Test] + public void Test() + { + // custom create counter delegate returns null + CounterAspect.CreateCounter = mi => null; + + TestClass t = (TestClass)TypeAccessor.CreateInstance(typeof(TestClass)); + + // interceptor should fallback to default counter implementation + t.Test(); + } + } +} diff --git a/UnitTests/UnitTests.Regression/Properties/AssemblyInfo.cs b/UnitTests/UnitTests.Regression/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..6ffcdaad6 --- /dev/null +++ b/UnitTests/UnitTests.Regression/Properties/AssemblyInfo.cs @@ -0,0 +1,31 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("UnitTests.Regression")] +[assembly: AssemblyDescription("Business Logic Toolkit Unit tests")] +[assembly: AssemblyProduct("Business Logic Toolkit")] +[assembly: AssemblyCopyright("\xA9 2002-2011 www.bltoolkit.net")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM componenets. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("885afb0a-4524-4c06-975a-d4883aa8062a")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/UnitTests/UnitTests.Regression/UnitTests.Regression.csproj b/UnitTests/UnitTests.Regression/UnitTests.Regression.csproj new file mode 100644 index 000000000..2c32ce6a0 --- /dev/null +++ b/UnitTests/UnitTests.Regression/UnitTests.Regression.csproj @@ -0,0 +1,100 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.30703</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{74D1AF0E-C0AB-4A62-99A3-0975585760A5}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>UnitTests.Regression</RootNamespace> + <AssemblyName>UnitTests.Regression</AssemblyName> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>TRACE;DEBUG;MSSQL;FW3</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <PlatformTarget>x86</PlatformTarget> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE;MSSQL;FW3</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'DebugMono|AnyCPU'"> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\DebugMono\</OutputPath> + <DefineConstants>TRACE;DEBUG;MSSQL;FW3</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>x86</PlatformTarget> + <CodeAnalysisLogFile>bin\Debug\UnitTests.Regression.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile> + <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression> + <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories> + <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets> + <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories> + <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules> + <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ReleaseMono|AnyCPU'"> + <OutputPath>bin\ReleaseMono\</OutputPath> + <DefineConstants>TRACE;MSSQL;FW3</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>AnyCPU</PlatformTarget> + <CodeAnalysisLogFile>bin\Release\UnitTests.Regression.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile> + <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression> + <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories> + <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories> + </PropertyGroup> + <ItemGroup> + <Reference Include="nunit.framework"> + <HintPath>..\..\Tools\NUnit\nunit.framework.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Issues\Issue_0047_Test.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <None Include="app.config" /> + </ItemGroup> + <ItemGroup /> + <ItemGroup> + <ProjectReference Include="..\..\Source\BLToolkit.4.csproj"> + <Project>{0C325F5D-E50E-4340-8724-D29896CCC583}</Project> + <Name>BLToolkit.4</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/UnitTests/UnitTests.Regression/app.config b/UnitTests/UnitTests.Regression/app.config new file mode 100644 index 000000000..b5ebc1c74 --- /dev/null +++ b/UnitTests/UnitTests.Regression/app.config @@ -0,0 +1,6 @@ +<?xml version="1.0"?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> + </startup> +</configuration> diff --git a/packages/Castle.Core.3.2.1/ASL - Apache Software Foundation License.txt b/packages/Castle.Core.3.2.1/ASL - Apache Software Foundation License.txt new file mode 100644 index 000000000..9e90f827b --- /dev/null +++ b/packages/Castle.Core.3.2.1/ASL - Apache Software Foundation License.txt @@ -0,0 +1,57 @@ +Apache License, Version 2.0 + +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and + + 2. You must cause any modified files to carry prominent notices stating that You changed the files; and + + 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS diff --git a/packages/Castle.Core.3.2.1/BreakingChanges.txt b/packages/Castle.Core.3.2.1/BreakingChanges.txt new file mode 100644 index 000000000..6f39a7a08 --- /dev/null +++ b/packages/Castle.Core.3.2.1/BreakingChanges.txt @@ -0,0 +1,71 @@ +=== version 3.0 +================================================================================================ +change - Removed overloads of logging methods that were taking format string from ILogger and + ILogger and IExtendedLogger and didn't have word Format in their name. + For example: + void Error(string format, params object[] args); // was removed + void ErrorFormat(string format, params object[] args); //use this one instead + + +impact - low +fixability - medium +revision - + +description - To minimize confusion and duplication those methods were removed. + +fix - Use methods that have explicit "Format" word in their name and same signature. +================================================================================================ +change - Removed WebLogger and WebLoggerFactory + +impact - low +fixability - medium +revision - + +description - To minimize management overhead the classes were removed so that only single + Client Profile version of Castle.Core can be distributed. + +fix - You can use NLog or Log4Net web logger integration, or reuse implementation of existing + web logger and use it as a custom logger. + +================================================================================================ +change - Removed obsolete overload of ProxyGenerator.CreateClassProxy + +impact - low +fixability - trivial +revision - + +description - Deprecated overload of ProxyGenerator.CreateClassProxy was removed to keep the + method consistent with other methods and to remove confusion + +fix - whenever removed overload was used, use one of the other overloads. + +================================================================================================ +change - IProxyGenerationHook.NonVirtualMemberNotification method was renamed + +impact - high +fixability - easy +revision - + +description - to accommodate class proxies with target method NonVirtualMemberNotification on + IProxyGenerationHook type was renamed to more accurate NonProxyableMemberNotification + since for class proxies with target not just methods but also fields and other member that + break the abstraction will be passed to this method. + +fix - whenever NonVirtualMemberNotification is used/implemented change the method name to + NonProxyableMemberNotification. Implementors should also accommodate possibility that not + only MethodInfos will be passed as method's second parameter. + +================================================================================================ +change - DynamicProxy will now allow to intercept members of System.Object + +impact - very low +fixability - easy +revision - + +description - to allow scenarios like mocking of System.Object members, DynamicProxy will not + disallow proxying of these methods anymore. AllMethodsHook (default IProxyGenerationHook) + will still filter them out though. + +fix - whenever custom IProxyGenerationHook is used, user should account for System.Object's + members being now passed to ShouldInterceptMethod and NonVirtualMemberNotification methods + and if neccessary update the code to handle them appropriately. diff --git a/packages/Castle.Core.3.2.1/Castle.Core.3.2.1.nupkg b/packages/Castle.Core.3.2.1/Castle.Core.3.2.1.nupkg new file mode 100644 index 000000000..3265f86aa Binary files /dev/null and b/packages/Castle.Core.3.2.1/Castle.Core.3.2.1.nupkg differ diff --git a/packages/Castle.Core.3.2.1/Castle.Core.3.2.1.nuspec b/packages/Castle.Core.3.2.1/Castle.Core.3.2.1.nuspec new file mode 100644 index 000000000..1535f18bf --- /dev/null +++ b/packages/Castle.Core.3.2.1/Castle.Core.3.2.1.nuspec @@ -0,0 +1,17 @@ +<?xml version="1.0"?> +<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> + <metadata> + <id>Castle.Core</id> + <version>3.2.1</version> + <authors>Castle Project Contributors</authors> + <owners>Castle Project Contributors</owners> + <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl> + <projectUrl>http://www.castleproject.org/</projectUrl> + <iconUrl>http://docs.castleproject.org/GetFile.aspx?File=/castleLogo100px.png</iconUrl> + <requireLicenseAcceptance>false</requireLicenseAcceptance> + <description>Castle Project Core, including DynamicProxy, Logging Abstractions and DictionaryAdapter</description> + <summary>Castle Project Core, including DynamicProxy, Logging Abstractions and DictionaryAdapter</summary> + <copyright>Copyright 2004-2013 Castle Project - http://www.castleproject.org/</copyright> + <tags>castle dynamicproxy dynamic proxy dynamicproxy2 dictionaryadapter emailsender</tags> + </metadata> +</package> \ No newline at end of file diff --git a/packages/Castle.Core.3.2.1/Changes.txt b/packages/Castle.Core.3.2.1/Changes.txt new file mode 100644 index 000000000..f5cb21f91 --- /dev/null +++ b/packages/Castle.Core.3.2.1/Changes.txt @@ -0,0 +1,207 @@ +3.2.1 (2013-10-06) +================== +- fixed #32 - Improve configuration of SmtpClient in sync sending - contributed by Artur Dorochowicz (@ArturDorochowicz) +- fixed #31 - [DynamicProxy] Preserve DefaultValues of proxied method's parameters (in .NET 4.5) +- fixed #30 - tailoring InternalsVisibleTo message based on assembly of inaccessible type - contributed by Blair Conrad (@blairconrad) +- fixed #27 - Allow dynamic proxy of generic interfaces which have generic methods, under Mono 2.10.8 and Mono 3.0.6 - contributed by Iain Ballard (@i-e-b) +- fixed #26 - Proxy of COM class issue, reference count incremented - contributed by Jean-Claude Viau (@jcviau) +- fixed DYNPROXY-188 - CreateInterfaceProxyWithoutTarget fails with interface containing member with 'ref UIntPtr' - contributed by Pier Janssen (@Pjanssen) +- fixed DYNPROXY-186 - .Net remoting (transparent proxy) cannot be proxied - contributed by Jean-Claude Viau (@jcviau) +- fixed DYNPROXY-185 - ProxyUtil.GetUnproxiedInstance returns proxy object for ClassProxyWithTarget instead of its target - contributed by Dmitry Xlestkov (@d-s-x) + +3.2.0 (2013-02-16) +================== +- fixed DYNPROXY-179 - Exception when creating a generic proxy (from cache) +- fixed DYNPROXY-175 - invalid CompositionInvocation type used when code uses interface proxies with and without InterceptorSelector + +3.1.0 (2012-08-05) +================== +- fixed DYNPROXY-174 - Unable to cast object of type 'System.Collections.ObjectModel.ReadOnlyCollection`1[System.Reflection.CustomAttributeTypedArgument]' to type 'System.Array' + +3.1.0 RC (2012-07-08) +================== +- support multiple inheritance of DA attributes on interfaces. +- BREAKING CHANGE: removed propogate child notifications as it violated INotifyPropertyChanged contract +- improved DictionaryAdapter performance +- generalized IBindingList support for DictionaryAdapters +- added reference support to XmlAdapter +- BRAKING CHANGE: refactored XPathAdapter into XmlAdapter with much more flexibility to support other input like XLinq + +- implemented CORE-43 - Add option to skip configuring log4net/nlog + +- fixed CORE-44 - NLog logger does not preserver call site info +- fixed DYNPROXY-171 - PEVerify error on generic method definition +- fixed DYNPROXY-170 - Calls to properties inside non-intercepted methods are not forwarded to target object (regression from v2.5) +- fixed DYNPROXY-169 - Support IChangeProxyTarget on additional interfaces and mixins when using CreateInterfaceProxyWithTargetInterface + +3.0.0 (2011-12-13) +================== +no major changes since RC + +3.0.0 RC 1 (2011-11-20) +================== +- Applied Jeff Sharps patch that refactored Xml DictionaryAdapter to improve maintainability and enable more complete functionality + +- fixed DYNPROXY-165 - Object.GetType() and Object.MemberwiseClone() should be ignored and not reported as non-interceptable to IProxyGenerationHook +- fixed DYNPROXY-164 - Invalid Proxy type generated when there are more than one base class generic constraints +- fixed DYNPROXY-162 - ref or out parameters can not be passed back if proxied method throw an exception + +3.0.0 beta 1 (2011-08-14) +================== +- fixed CORE-37 - TAB characters in the XML Configuration of a component parameter is read as String.Empty +- fixed DYNPROXY-161 - Strong Named DynamicProxy Assembly Not Available in Silverligh +- fixed DYNPROXY-159 - Sorting MemberInfo array for serialization has side effects +- fixed DYNPROXY-158 - Can't create class proxy with target and without target in same ProxyGenerator +- fixed DYNPROXY-153 - When proxying a generic interface which has an interface as GenericType . No proxy can be created +- fixed DYNPROXY-151 - Cast error when using attributes + +- implemented CORE-33 - Add lazy logging +- implemented DYNPROXY-156 - Provide mechanism for interceptors to implement retry logic + +- removed obsolete members from ILogger and its implementations + +2.5.2 (2010-11-15) +================== +- fixed DYNPROXY-150 - Finalizer should not be proxied +- implemented DYNPROXY-149 - Make AllMethodsHook members virtual so it can be used as a base class +- fixed DYNPROXY-147 - Can't crete class proxies with two non-public methods having same argument types but different return type +- fixed DYNPROXY-145 Unable to proxy System.Threading.SynchronizationContext (.NET 4.0) +- fixed DYNPROXY-144 - params argument not supported in constructor +- fixed DYNPROXY-143 - Permit call to reach "non-proxied" methods of inherited interfaces +- implemented DYNPROXY-139 - Better error message +- fixed DYNPROXY-133 - Debug assertion in ClassProxyInstanceContributor fails when proxying ISerializable with an explicit implementation of GetObjectData +- fixed CORE-32 - Determining if permission is granted via PermissionUtil does not work in .NET 4 +- applied patch by Alwin Meijs - ExtendedLog4netFactory can be configured with a stream from for example an embedded log4net xml config +- Upgraded NLog to 2.0 Beta 1 +- Added DefaultXmlSerializer to bridge XPathAdapter with standard Xml Serialization. +- XPathAdapter for DictionaryAdapter added IXPathSerializer to provide hooks for custom serialization. + +2.5.1 (2010-09-21) +================== +- Interface proxy with target Interface now accepts null as a valid target value (which can be replaced at a later stage). +- DictionaryAdapter behavior overrides are now ordered with all other behaviors +- BREAKING CHANGE: removed web logger so that by default Castle.Core works in .NET 4 client profile +- added paramter to ModuleScope disabling usage of signed modules. This is to workaround issue DYNPROXY-134. Also a descriptive exception message is being thrown now when the issue is detected. +- Added IDictionaryBehaviorBuilder to allow grouping behaviors +- Added GenericDictionaryAdapter to simplify generic value sources +- fixed issue DYNPROXY-138 - Error message missing space +- fixed false positive where DynamicProxy would not let you proxy interface with target interface when target object was a COM object. +- fixed ReflectionBasedDictionaryAdapter when using indexed properties + +2.5.0 (2010-08-21) +================== +- DynamicProxy will now not replicate non-public attribute types +- Applied patch from Kenneth Siewers Mller which adds parameterless constructor to DefaultSmtpSender implementation, to be able to configure the inner SmtpClient from the application configuration file (system.net.smtp). +- added support for .NET 4 and Silverlight 4, updated solution to VisualStudio 2010 +- Removed obsolete overload of CreateClassProxy +- Added class proxy with taget +- Added ability to intercept explicitly implemented generic interface methods on class proxy. +- DynamicProxy does not disallow intercepting members of System.Object anymore. AllMethodsHook will still filter them out though. +- Added ability to intercept explicitly implemented interface members on class proxy. Does not support generic members. +- Merged DynamicProxy into Core binary +- fixed DYNPROXY-ISSUE-132 - "MetaProperty equals implementation incorrect" +- Fixed bug in DiagnosticsLoggerTestCase, where when running as non-admin, the teardown will throw SecurityException (contributed by maxild) +- Split IoC specific classes into Castle.Windsor project +- Merged logging services solution +- Merged DynamicProxy project + +1.2.0 (2010-01-11) +================== + +- Added IEmailSender interface and its default implementation + +1.2.0 beta (2009-12-04) +================== + +- BREAKING CHANGE - added ChangeProxyTarget method to IChangeProxyTarget interface +- added docs to IChangeProxyTarget methods +- Fixed DYNPROXY-ISSUE-108 - Obtaining replicated custom attributes on proxy may fail when property setter throws exception on default value +- Moved custom attribute replication from CustomAttributeUtil to new interface - IAttributeDisassembler +- Exposed IAttributeDisassembler via ProxyGenerationOptions, so that users can plug their implementation for some convoluted scenarios. (for Silverlight) +- Moved IInterceptorSelector from Dynamic Proxy to Core (IOC-ISSUE-156) + +1.1.0 (2009-05-04) +================== + +- Applied Eric Hauser's patch fixing CORE-ISSUE-22 + "Support for environment variables in resource URI" + +- Applied Gauthier Segay's patch fixing CORE-ISSUE-20 + "Castle.Core.Tests won't build via nant because it use TraceContext without referencing System.Web.dll" + +- Added simple interface to ComponentModel to make optional properties required. + +- Applied Mark's -- <mwatts42@gmail.com> -- patch that changes + the Core to support being compiled for Silverlight 2 + +- Applied Louis DeJardin's patch adding TraceLogger as a new logger implementation + +- Applied Chris Bilson's patch fixing CORE-15 + "WebLogger Throws When Logging Outside of an HttpContext" + +Release Candidate 3 +=================== + +- Added IServiceProviderEx which extends IServiceProvider + +- Added Pair<T,S> class. + +- Applied Bill Pierce's patch fixing CORE-9 + "Allow CastleComponent Attribute to Specify Lifestyle in Constructor" + +- Added UseSingleInterfaceProxy to CompomentModel to control the proxying + behavior while maintaining backward compatibility. + Added the corresponding ComponentProxyBehaviorAttribute. + +- Made NullLogger and IExtnededLogger + +- Enabled a new format on ILogger interface, with 6 overloads for each method: + Debug(string) + Debug(string, Exception) + Debug(string, params object[]) + DebugFormat(string, params object[]) + DebugFormat(Exception, string, params object[]) + DebugFormat(IFormatProvider, string, params object[]) + DebugFormat(IFormatProvider, Exception, string, params object[]) + + The "FatalError" overloads where marked as [Obsolete], replaced by "Fatal" and "FatalFormat". + +0.0.1.0 +======= + +- Included IProxyTargetAccessor + +- Removed IMethodInterceptor and IMethodInvocation, that have been replaced + by IInterceptor and IInvocation + +- Added FindByPropertyInfo to PropertySetCollection + +- Made the DependencyModel.IsOptional property writable + +- Applied Curtis Schlak's patch fixing IOC-27 + "assembly resource format only works for resources where the assemblies name and default namespace are the same." + + Quoting: + + "I chose to preserve backwards compatibility by implementing the code in the + reverse order as suggested by the reporter. Given the following URI for a resource: + + assembly://my.cool.assembly/context/moo/file.xml + + It will initially look for an embedded resource with the manifest name of + "my.cool.assembly.context.moo.file.xml" in the loaded assembly my.cool.assembly.dll. + If it does not find it, then it looks for the embedded resource with the manifest name + of "context.moo.file.xml". + +- IServiceEnabledComponent Introduced to be used across the project as + a standard way to have access to common services, for example, logger factories + +- Added missing log factories + +- Refactor StreamLogger and DiagnosticLogger to be more consistent behavior-wise + +- Refactored WebLogger to extend LevelFilteredLogger (removed duplication) + +- Refactored LoggerLevel order + +- Project started diff --git a/packages/Castle.Core.3.2.1/License.txt b/packages/Castle.Core.3.2.1/License.txt new file mode 100644 index 000000000..a00764d97 --- /dev/null +++ b/packages/Castle.Core.3.2.1/License.txt @@ -0,0 +1,14 @@ +Copyright 2004-2013 Castle Project - http://www.castleproject.org/ + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + diff --git a/packages/Castle.Core.3.2.1/NuGet.exe b/packages/Castle.Core.3.2.1/NuGet.exe new file mode 100644 index 000000000..c296edf17 Binary files /dev/null and b/packages/Castle.Core.3.2.1/NuGet.exe differ diff --git a/packages/Castle.Core.3.2.1/lib/net35/Castle.Core.dll b/packages/Castle.Core.3.2.1/lib/net35/Castle.Core.dll new file mode 100644 index 000000000..c0940e992 Binary files /dev/null and b/packages/Castle.Core.3.2.1/lib/net35/Castle.Core.dll differ diff --git a/Redist/Castle/Castle.Core.xml b/packages/Castle.Core.3.2.1/lib/net35/Castle.Core.xml similarity index 74% rename from Redist/Castle/Castle.Core.xml rename to packages/Castle.Core.3.2.1/lib/net35/Castle.Core.xml index 448fd69a0..6fa66c00b 100644 --- a/Redist/Castle/Castle.Core.xml +++ b/packages/Castle.Core.3.2.1/lib/net35/Castle.Core.xml @@ -1,4927 +1,4754 @@ -<?xml version="1.0"?> -<doc> - <assembly> - <name>Castle.Core</name> - </assembly> - <members> - <member name="T:Castle.Components.DictionaryAdapter.DictionaryBehaviorAttribute"> - <summary> - Assignes a specific dictionary key. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDictionaryBehavior"> - <summary> - Defines the contract for customizing dictionary access. - </summary> - </member> - <member name="P:Castle.Components.DictionaryAdapter.IDictionaryBehavior.ExecutionOrder"> - <summary> - Determines relative order to apply related behaviors. - </summary> - </member> - <member name="P:Castle.Components.DictionaryAdapter.DictionaryBehaviorAttribute.ExecutionOrder"> - <summary> - Determines relative order to apply related behaviors. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter"> - <summary> - Defines the contract for updating dictionary values. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> - <summary> - Sets the stored dictionary value. - </summary> - <param name="dictionaryAdapter">The dictionary adapter.</param> - <param name="key">The key.</param> - <param name="value">The stored value.</param> - <param name="property">The property.</param> - <returns>true if the property should be stored.</returns> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder"> - <summary> - Defines the contract for building <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryBehavior"/>s. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder.BuildBehaviors"> - <summary> - Builds the dictionary behaviors. - </summary> - <returns></returns> - </member> - <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter"> - <summary> - Abstract adapter for the <see cref="T:System.Collections.IDictionary"/> support - needed by the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory"/> - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Add(System.Object,System.Object)"> - <summary> - Adds an element with the provided key and value to the <see cref="T:System.Collections.IDictionary"></see> object. - </summary> - <param name="key">The <see cref="T:System.Object"></see> to use as the key of the element to add.</param> - <param name="value">The <see cref="T:System.Object"></see> to use as the value of the element to add.</param> - <exception cref="T:System.ArgumentException">An element with the same key already exists in the <see cref="T:System.Collections.IDictionary"></see> object. </exception> - <exception cref="T:System.ArgumentNullException">key is null. </exception> - <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception> - </member> - <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Clear"> - <summary> - Removes all elements from the <see cref="T:System.Collections.IDictionary"></see> object. - </summary> - <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only. </exception> - </member> - <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Contains(System.Object)"> - <summary> - Determines whether the <see cref="T:System.Collections.IDictionary"></see> object contains an element with the specified key. - </summary> - <param name="key">The key to locate in the <see cref="T:System.Collections.IDictionary"></see> object.</param> - <returns> - true if the <see cref="T:System.Collections.IDictionary"></see> contains an element with the key; otherwise, false. - </returns> - <exception cref="T:System.ArgumentNullException">key is null. </exception> - </member> - <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.GetEnumerator"> - <summary> - Returns an <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object. - </summary> - <returns> - An <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object. - </returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Remove(System.Object)"> - <summary> - Removes the element with the specified key from the <see cref="T:System.Collections.IDictionary"></see> object. - </summary> - <param name="key">The key of the element to remove.</param> - <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception> - <exception cref="T:System.ArgumentNullException">key is null. </exception> - </member> - <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.CopyTo(System.Array,System.Int32)"> - <summary> - Copies the elements of the <see cref="T:System.Collections.ICollection"></see> to an <see cref="T:System.Array"></see>, starting at a particular <see cref="T:System.Array"></see> index. - </summary> - <param name="array">The one-dimensional <see cref="T:System.Array"></see> that is the destination of the elements copied from <see cref="T:System.Collections.ICollection"></see>. The <see cref="T:System.Array"></see> must have zero-based indexing.</param> - <param name="index">The zero-based index in array at which copying begins.</param> - <exception cref="T:System.ArgumentNullException">array is null. </exception> - <exception cref="T:System.ArgumentException">The type of the source <see cref="T:System.Collections.ICollection"></see> cannot be cast automatically to the type of the destination array. </exception> - <exception cref="T:System.ArgumentOutOfRangeException">index is less than zero. </exception> - <exception cref="T:System.ArgumentException">array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source <see cref="T:System.Collections.ICollection"></see> is greater than the available space from index to the end of the destination array. </exception> - </member> - <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.System#Collections#IEnumerable#GetEnumerator"> - <summary> - Returns an enumerator that iterates through a collection. - </summary> - <returns> - An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection. - </returns> - </member> - <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsFixedSize"> - <summary> - Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size. - </summary> - <value></value> - <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size; otherwise, false.</returns> - </member> - <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsReadOnly"> - <summary> - Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object is read-only. - </summary> - <value></value> - <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object is read-only; otherwise, false.</returns> - </member> - <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Keys"> - <summary> - Gets an <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object. - </summary> - <value></value> - <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object.</returns> - </member> - <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Values"> - <summary> - Gets an <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object. - </summary> - <value></value> - <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object.</returns> - </member> - <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Item(System.Object)"> - <summary> - Gets or sets the <see cref="T:System.Object"/> with the specified key. - </summary> - <value></value> - </member> - <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Count"> - <summary> - Gets the number of elements contained in the <see cref="T:System.Collections.ICollection"></see>. - </summary> - <value></value> - <returns>The number of elements contained in the <see cref="T:System.Collections.ICollection"></see>.</returns> - </member> - <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsSynchronized"> - <summary> - Gets a value indicating whether access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe). - </summary> - <value></value> - <returns>true if access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe); otherwise, false.</returns> - </member> - <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.SyncRoot"> - <summary> - Gets an object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>. - </summary> - <value></value> - <returns>An object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>.</returns> - </member> - <member name="F:Castle.Core.Internal.InternalsVisible.ToCastleCore"> - <summary> - Constant to use when making assembly internals visible to Castle.Core - <c>[assembly: InternalsVisibleTo(CoreInternalsVisible.ToCastleCore)]</c> - </summary> - </member> - <member name="F:Castle.Core.Internal.InternalsVisible.ToDynamicProxyGenAssembly2"> - <summary> - Constant to use when making assembly internals visible to proxy types generated by DynamicProxy. Required when proxying internal types. - <c>[assembly: InternalsVisibleTo(CoreInternalsVisible.ToDynamicProxyGenAssembly2)]</c> - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapterVisitor"> - <summary> - Abstract implementation of <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"/>. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"> - <summary> - Conract for traversing a <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.ComponentAttribute"> - <summary> - Identifies a property should be represented as a nested component. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder"> - <summary> - Defines the contract for building typed dictionary keys. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> - <summary> - Builds the specified key. - </summary> - <param name="dictionaryAdapter">The dictionary adapter.</param> - <param name="key">The current key.</param> - <param name="property">The property.</param> - <returns>The updated key</returns> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter"> - <summary> - Defines the contract for retrieving dictionary values. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> - <summary> - Gets the effective dictionary value. - </summary> - <param name="dictionaryAdapter">The dictionary adapter.</param> - <param name="key">The key.</param> - <param name="storedValue">The stored value.</param> - <param name="property">The property.</param> - <param name="ifExists">true if return only existing.</param> - <returns>The effective property value.</returns> - </member> - <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.NoPrefix"> - <summary> - Applies no prefix. - </summary> - </member> - <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.Prefix"> - <summary> - Gets or sets the prefix. - </summary> - <value>The prefix.</value> - </member> - <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterAttribute"> - <summary> - Identifies the dictionary adapter types. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.FetchAttribute"> - <summary> - Identifies an interface or property to be pre-feteched. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor"> - <summary> - Instructs fetching to occur. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor(System.Boolean)"> - <summary> - Instructs fetching according to <paramref name="fetch"/> - </summary> - <param name="fetch"></param> - </member> - <member name="P:Castle.Components.DictionaryAdapter.FetchAttribute.Fetch"> - <summary> - Gets whether or not fetching should occur. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.GroupAttribute"> - <summary> - Assigns a property to a group. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object)"> - <summary> - Constructs a group assignment. - </summary> - <param name="group">The group name.</param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object[])"> - <summary> - Constructs a group assignment. - </summary> - <param name="group">The group name.</param> - </member> - <member name="P:Castle.Components.DictionaryAdapter.GroupAttribute.Group"> - <summary> - Gets the group the property is assigned to. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.KeyAttribute"> - <summary> - Assigns a specific dictionary key. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class. - </summary> - <param name="key">The key.</param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String[])"> - <summary> - Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class. - </summary> - <param name="keys">The compound key.</param> - </member> - <member name="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"> - <summary> - Assigns a prefix to the keyed properties of an interface. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor"> - <summary> - Initializes a default instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor(System.String)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class. - </summary> - <param name="keyPrefix">The prefix for the keyed properties of the interface.</param> - </member> - <member name="P:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.KeyPrefix"> - <summary> - Gets the prefix key added to the properties of the interface. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute"> - <summary> - Substitutes part of key with another string. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute.#ctor(System.String,System.String)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute"/> class. - </summary> - <param name="oldValue">The old value.</param> - <param name="newValue">The new value.</param> - </member> - <member name="T:Castle.Components.DictionaryAdapter.MultiLevelEditAttribute"> - <summary> - Requests support for multi-level editing. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDictionaryInitializer"> - <summary> - Contract for dictionary initialization. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryInitializer.Initialize(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.Object[])"> - <summary> - Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> - </summary> - <param name="dictionaryAdapter">The dictionary adapter.</param> - <param name="behaviors">The dictionary behaviors.</param> - </member> - <member name="T:Castle.Components.DictionaryAdapter.NewGuidAttribute"> - <summary> - Generates a new GUID on demand. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.OnDemandAttribute"> - <summary> - Support for on-demand value resolution. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.PropagateNotificationsAttribute"> - <summary> - Suppress property change notifications. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.StringFormatAttribute"> - <summary> - Provides simple string formatting from existing properties. - </summary> - </member> - <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Format"> - <summary> - Gets the string format. - </summary> - </member> - <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Properties"> - <summary> - Gets the format properties. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.StringListAttribute"> - <summary> - Identifies a property should be represented as a delimited string value. - </summary> - </member> - <member name="P:Castle.Components.DictionaryAdapter.StringListAttribute.Separator"> - <summary> - Gets the separator. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.StringValuesAttribute"> - <summary> - Converts all properties to strings. - </summary> - </member> - <member name="P:Castle.Components.DictionaryAdapter.StringValuesAttribute.Format"> - <summary> - Gets or sets the format. - </summary> - <value>The format.</value> - </member> - <member name="T:Castle.Components.DictionaryAdapter.SuppressNotificationsAttribute"> - <summary> - Suppress property change notifications. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer"> - <summary> - Contract for property descriptor initialization. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer.Initialize(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Object[])"> - <summary> - Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> - </summary> - <param name="propertyDescriptor">The property descriptor.</param> - <param name="behaviors">The property behaviors.</param> - </member> - <member name="T:Castle.Components.DictionaryAdapter.TypeKeyPrefixAttribute"> - <summary> - Assigns a prefix to the keyed properties using the interface name. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter"> - <summary> - Manages conversion between property values. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.#ctor(System.ComponentModel.TypeConverter)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter"/> class. - </summary> - <param name="converter">The converter.</param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> - <summary> - Gets the effective dictionary value. - </summary> - <param name="dictionaryAdapter">The dictionary adapter.</param> - <param name="key">The key.</param> - <param name="storedValue">The stored value.</param> - <param name="property">The property.</param> - <param name="ifExists">true if return only existing.</param> - <returns>The effective property value.</returns> - </member> - <member name="P:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.ExecutionOrder"> - <summary> - - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDictionaryCreate"> - <summary> - Contract for creating additional Dictionary adapters. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"> - <summary> - Contract for manipulating the Dictionary adapter. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDictionaryEdit"> - <summary> - Contract for editing the Dictionary adapter. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDictionaryNotify"> - <summary> - Contract for managing Dictionary adapter notifications. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDictionaryValidate"> - <summary> - Contract for validating Dictionary adapter. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory"> - <summary> - Uses Reflection.Emit to expose the properties of a dictionary - through a dynamic implementation of a typed interface. - </summary> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory"> - <summary> - Defines the contract for building typed dictionary adapters. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)"> - <summary> - Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. - </summary> - <typeparam name="T">The typed interface.</typeparam> - <param name="dictionary">The underlying source of properties.</param> - <returns>An implementation of the typed interface bound to the dictionary.</returns> - <remarks> - The type represented by T must be an interface with properties. - </remarks> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)"> - <summary> - Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. - </summary> - <param name="type">The typed interface.</param> - <param name="dictionary">The underlying source of properties.</param> - <returns>An implementation of the typed interface bound to the dictionary.</returns> - <remarks> - The type represented by T must be an interface with properties. - </remarks> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> - <summary> - Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. - </summary> - <param name="type">The typed interface.</param> - <param name="dictionary">The underlying source of properties.</param> - <param name="descriptor">The property descriptor.</param> - <returns>An implementation of the typed interface bound to the dictionary.</returns> - <remarks> - The type represented by T must be an interface with properties. - </remarks> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Collections.Specialized.NameValueCollection)"> - <summary> - Gets a typed adapter bound to the <see cref="T:System.Collections.Specialized.NameValueCollection"/>. - </summary> - <typeparam name="T">The typed interface.</typeparam> - <param name="nameValues">The underlying source of properties.</param> - <returns>An implementation of the typed interface bound to the namedValues.</returns> - <remarks> - The type represented by T must be an interface with properties. - </remarks> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.Specialized.NameValueCollection)"> - <summary> - Gets a typed adapter bound to the <see cref="T:System.Collections.Specialized.NameValueCollection"/>. - </summary> - <param name="type">The typed interface.</param> - <param name="nameValues">The underlying source of properties.</param> - <returns>An implementation of the typed interface bound to the namedValues.</returns> - <remarks> - The type represented by T must be an interface with properties. - </remarks> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Xml.XPath.IXPathNavigable)"> - <summary> - Gets a typed adapter bound to the <see cref="T:System.Xml.XPath.IXPathNavigable"/>. - </summary> - <typeparam name="T">The typed interface.</typeparam> - <param name="xpathNavigable">The underlying source of properties.</param> - <returns>An implementation of the typed interface bound to the xpath navigable.</returns> - <remarks> - The type represented by T must be an interface with properties. - </remarks> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Xml.XPath.IXPathNavigable)"> - <summary> - Gets a typed adapter bound to the <see cref="T:System.Xml.XPath.IXPathNavigable"/>. - </summary> - <param name="type">The typed interface.</param> - <param name="xpathNavigable">The underlying source of properties.</param> - <returns>An implementation of the typed interface bound to the xpath navigable.</returns> - <remarks> - The type represented by T must be an interface with properties. - </remarks> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type)"> - <summary> - Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. - </summary> - <param name="type">The typed interface.</param> - <returns>The adapter meta-data.</returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> - <summary> - Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. - </summary> - <param name="type">The typed interface.</param> - <param name="descriptor">The property descriptor.</param> - <returns>The adapter meta-data.</returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)"> - <inheritdoc /> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)"> - <inheritdoc /> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> - <inheritdoc /> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``2(System.Collections.Generic.IDictionary{System.String,``1})"> - <inheritdoc /> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Type,System.Collections.Generic.IDictionary{System.String,``0})"> - <inheritdoc /> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Collections.Specialized.NameValueCollection)"> - <inheritdoc /> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.Specialized.NameValueCollection)"> - <inheritdoc /> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Xml.XPath.IXPathNavigable)"> - <inheritdoc /> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Xml.XPath.IXPathNavigable)"> - <inheritdoc /> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type)"> - <inheritdoc /> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> - <inheritdoc /> - </member> - <member name="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"> - <summary> - Describes a dictionary property. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor"> - <summary> - Initializes an empty <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(System.Reflection.PropertyInfo,System.Object[])"> - <summary> - Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. - </summary> - <param name="property">The property.</param> - <param name="behaviors">The property behaviors.</param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> - <summary> - Copies an existinginstance of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. - </summary> - <param name="source"></param> - <param name="copyBehaviors"></param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> - <summary> - Gets the key. - </summary> - <param name="dictionaryAdapter">The dictionary adapter.</param> - <param name="key">The key.</param> - <param name="descriptor">The descriptor.</param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddKeyBuilder(Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder[])"> - <summary> - Adds the key builder. - </summary> - <param name="builders">The builder.</param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddKeyBuilders(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder})"> - <summary> - Adds the key builders. - </summary> - <param name="builders">The builders.</param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyKeyBuilders(Castle.Components.DictionaryAdapter.PropertyDescriptor)"> - <summary> - Copies the key builders to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> - </summary> - <param name="other"></param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyKeyBuilders(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder,System.Boolean})"> - <summary> - Copies the selected key builders to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> - </summary> - <param name="other"></param> - <param name="selector"></param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> - <summary> - Gets the property value. - </summary> - <param name="dictionaryAdapter">The dictionary adapter.</param> - <param name="key">The key.</param> - <param name="storedValue">The stored value.</param> - <param name="descriptor">The descriptor.</param> - <param name="ifExists">true if return only existing.</param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddGetter(Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter[])"> - <summary> - Adds the dictionary getter. - </summary> - <param name="getters">The getter.</param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddGetters(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter})"> - <summary> - Adds the dictionary getters. - </summary> - <param name="gets">The getters.</param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyGetters(Castle.Components.DictionaryAdapter.PropertyDescriptor)"> - <summary> - Copies the property getters to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> - </summary> - <param name="other"></param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyGetters(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter,System.Boolean})"> - <summary> - Copies the selected property getters to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> - </summary> - <param name="other"></param> - <param name="selector"></param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> - <summary> - Sets the property value. - </summary> - <param name="dictionaryAdapter">The dictionary adapter.</param> - <param name="key">The key.</param> - <param name="value">The value.</param> - <param name="descriptor">The descriptor.</param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddSetter(Castle.Components.DictionaryAdapter.IDictionaryPropertySetter[])"> - <summary> - Adds the dictionary setter. - </summary> - <param name="setters">The setter.</param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddSetters(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryPropertySetter})"> - <summary> - Adds the dictionary setters. - </summary> - <param name="sets">The setters.</param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopySetters(Castle.Components.DictionaryAdapter.PropertyDescriptor)"> - <summary> - Copies the property setters to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> - </summary> - <param name="other"></param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopySetters(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryPropertySetter,System.Boolean})"> - <summary> - Copies the selected property setters to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> - </summary> - <param name="other"></param> - <param name="selector"></param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehavior(Castle.Components.DictionaryAdapter.IDictionaryBehavior[])"> - <summary> - Adds the behaviors. - </summary> - <param name="behaviors"></param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehaviors(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryBehavior})"> - <summary> - Adds the behaviors. - </summary> - <param name="behaviors"></param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehaviors(Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder[])"> - <summary> - Adds the behaviors from the builders. - </summary> - <param name="builders"></param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyBehaviors(Castle.Components.DictionaryAdapter.PropertyDescriptor)"> - <summary> - Copies the behaviors to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> - </summary> - <param name="other"></param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyBehaviors(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryBehavior,System.Boolean})"> - <summary> - Copies the behaviors to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> - </summary> - <param name="other"></param> - <param name="selector"></param> - <returns></returns> - </member> - <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.ExecutionOrder"> - <summary> - - </summary> - </member> - <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyName"> - <summary> - Gets the property name. - </summary> - </member> - <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyType"> - <summary> - Gets the property type. - </summary> - </member> - <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Property"> - <summary> - Gets the property. - </summary> - <value>The property.</value> - </member> - <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.IsDynamicProperty"> - <summary> - Returns true if the property is dynamic. - </summary> - </member> - <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.State"> - <summary> - Gets additional state. - </summary> - </member> - <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Fetch"> - <summary> - Determines if property should be fetched. - </summary> - </member> - <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.SuppressNotifications"> - <summary> - Determines if notifications should occur. - </summary> - </member> - <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Behaviors"> - <summary> - Gets the property behaviors. - </summary> - </member> - <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.TypeConverter"> - <summary> - Gets the type converter. - </summary> - <value>The type converter.</value> - </member> - <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.KeyBuilders"> - <summary> - Gets the key builders. - </summary> - <value>The key builders.</value> - </member> - <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Setters"> - <summary> - Gets the setter. - </summary> - <value>The setter.</value> - </member> - <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Getters"> - <summary> - Gets the getter. - </summary> - <value>The getter.</value> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.AddInitializer(Castle.Components.DictionaryAdapter.IDictionaryInitializer[])"> - <summary> - Adds the dictionary initializers. - </summary> - <param name="inits">The initializers.</param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.AddInitializers(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryInitializer})"> - <summary> - Adds the dictionary initializers. - </summary> - <param name="inits">The initializers.</param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.CopyInitializers(Castle.Components.DictionaryAdapter.DictionaryDescriptor)"> - <summary> - Copies the initializers to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> - </summary> - <param name="other"></param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.CopyInitializers(Castle.Components.DictionaryAdapter.DictionaryDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryInitializer,System.Boolean})"> - <summary> - Copies the filtered initializers to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> - </summary> - <param name="other"></param> - <param name="selector"></param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.AddMetaInitializer(Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer[])"> - <summary> - Adds the dictionary meta-data initializers. - </summary> - <param name="inits">The meta-data initializers.</param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.AddMetaInitializers(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer})"> - <summary> - Adds the dictionary meta-data initializers. - </summary> - <param name="inits">The meta-data initializers.</param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.CopyMetaInitializers(Castle.Components.DictionaryAdapter.DictionaryDescriptor)"> - <summary> - Copies the meta-initializers to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> - </summary> - <param name="other"></param> - <returns></returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.CopyMetaInitializers(Castle.Components.DictionaryAdapter.DictionaryDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer,System.Boolean})"> - <summary> - Copies the filtered meta-initializers to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> - </summary> - <param name="other"></param> - <param name="selector"></param> - <returns></returns> - </member> - <member name="P:Castle.Components.DictionaryAdapter.DictionaryDescriptor.Initializers"> - <summary> - Gets the initializers. - </summary> - <value>The initializers.</value> - </member> - <member name="P:Castle.Components.DictionaryAdapter.DictionaryDescriptor.MetaInitializers"> - <summary> - Gets the meta-data initializers. - </summary> - <value>The meta-data initializers.</value> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer"> - <summary> - Contract for dictionary meta-data initialization. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer.Initialize(Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> - <summary> - Performs any initialization of the dictionary adapter meta-data. - </summary> - <param name="factory">The dictionary adapter factory.</param> - <param name="dictionaryMeta">The dictionary adapter meta.</param> - - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDictionaryValidator"> - <summary> - Contract for dictionary validation. - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.IsValid(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> - <summary> - Determines if <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> is valid. - </summary> - <param name="dictionaryAdapter">The dictionary adapter.</param> - <returns>true if valid.</returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Validate(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> - <summary> - Validates the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>. - </summary> - <param name="dictionaryAdapter">The dictionary adapter.</param> - <returns>The error summary information.</returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Validate(Castle.Components.DictionaryAdapter.IDictionaryAdapter,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> - <summary> - Validates the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> for a property. - </summary> - <param name="dictionaryAdapter">The dictionary adapter.</param> - <param name="property">The property to validate.</param> - <returns>The property summary information.</returns> - </member> - <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Invalidate(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> - <summary> - Invalidates any results cached by the validator. - </summary> - <param name="dictionaryAdapter">The dictionary adapter.</param> - </member> - <member name="T:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter"> - <summary> - - </summary> - </member> - <member name="M:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.#ctor(System.Collections.Specialized.NameValueCollection)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter"/> class. - </summary> - <param name="nameValues">The name values.</param> - </member> - <member name="M:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.Contains(System.Object)"> - <summary> - Determines whether the <see cref="T:System.Collections.IDictionary"></see> object contains an element with the specified key. - </summary> - <param name="key">The key to locate in the <see cref="T:System.Collections.IDictionary"></see> object.</param> - <returns> - true if the <see cref="T:System.Collections.IDictionary"></see> contains an element with the key; otherwise, false. - </returns> - <exception cref="T:System.ArgumentNullException">key is null. </exception> - </member> - <member name="M:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.Adapt(System.Collections.Specialized.NameValueCollection)"> - <summary> - Adapts the specified name values. - </summary> - <param name="nameValues">The name values.</param> - <returns></returns> - </member> - <member name="P:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.IsReadOnly"> - <summary> - Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object is read-only. - </summary> - <value></value> - <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object is read-only; otherwise, false.</returns> - </member> - <member name="P:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.Item(System.Object)"> - <summary> - Gets or sets the <see cref="T:System.Object"/> with the specified key. - </summary> - <value></value> - </member> - <member name="T:Castle.Core.Internal.AttributesUtil"> - <summary> - Helper class for retrieving attributes. - </summary> - </member> - <member name="M:Castle.Core.Internal.AttributesUtil.GetAttribute``1(System.Reflection.ICustomAttributeProvider)"> - <summary> - Gets the attribute. - </summary> - <param name = "member">The member.</param> - <returns>The member attribute.</returns> - </member> - <member name="M:Castle.Core.Internal.AttributesUtil.GetAttributes``1(System.Reflection.ICustomAttributeProvider)"> - <summary> - Gets the attributes. Does not consider inherited attributes! - </summary> - <param name = "member">The member.</param> - <returns>The member attributes.</returns> - </member> - <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeAttribute``1(System.Type)"> - <summary> - Gets the type attribute. - </summary> - <param name = "type">The type.</param> - <returns>The type attribute.</returns> - </member> - <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeAttributes``1(System.Type)"> - <summary> - Gets the type attributes. - </summary> - <param name = "type">The type.</param> - <returns>The type attributes.</returns> - </member> - <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeConverter(System.Reflection.MemberInfo)"> - <summary> - Gets the type converter. - </summary> - <param name = "member">The member.</param> - <returns></returns> - </member> - <member name="M:Castle.Core.Internal.AttributesUtil.HasAttribute``1(System.Reflection.ICustomAttributeProvider)"> - <summary> - Gets the attribute. - </summary> - <param name = "member">The member.</param> - <returns>The member attribute.</returns> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDynamicValue`1"> - <summary> - Contract for typed dynamic value resolution. - </summary> - <typeparam name="T"></typeparam> - </member> - <member name="T:Castle.Components.DictionaryAdapter.IDynamicValue"> - <summary> - Contract for dynamic value resolution. - </summary> - </member> - <member name="T:Castle.DynamicProxy.IInvocation"> - <summary> - Encapsulates an invocation of a proxied method. - </summary> - </member> - <member name="M:Castle.DynamicProxy.IInvocation.SetArgumentValue(System.Int32,System.Object)"> - <summary> - Overrides the value of an argument at the given <paramref name="index"/> with the - new <paramref name="value"/> provided. - </summary> - <remarks> - This method accepts an <see cref="T:System.Object"/>, however the value provided must be compatible - with the type of the argument defined on the method, otherwise an exception will be thrown. - </remarks> - <param name="index">The index of the argument to override.</param> - <param name="value">The new value for the argument.</param> - </member> - <member name="M:Castle.DynamicProxy.IInvocation.GetArgumentValue(System.Int32)"> - <summary> - Gets the value of the argument at the specified <paramref name="index"/>. - </summary> - <param name="index">The index.</param> - <returns>The value of the argument at the specified <paramref name="index"/>.</returns> - </member> - <member name="M:Castle.DynamicProxy.IInvocation.GetConcreteMethod"> - <summary> - Returns the concrete instantiation of the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> on the proxy, with any generic - parameters bound to real types. - </summary> - <returns> - The concrete instantiation of the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> on the proxy, or the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> if - not a generic method. - </returns> - <remarks>Can be slower than calling <see cref="P:Castle.DynamicProxy.IInvocation.Method"/>.</remarks> - </member> - <member name="M:Castle.DynamicProxy.IInvocation.GetConcreteMethodInvocationTarget"> - <summary> - Returns the concrete instantiation of <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>, with any - generic parameters bound to real types. - For interface proxies, this will point to the <see cref="T:System.Reflection.MethodInfo"/> on the target class. - </summary> - <returns>The concrete instantiation of <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>, or - <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/> if not a generic method.</returns> - <remarks>In debug builds this can be slower than calling <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>.</remarks> - </member> - <member name="M:Castle.DynamicProxy.IInvocation.Proceed"> - <summary> - Proceeds the call to the next interceptor in line, and ultimately to the target method. - </summary> - <remarks> - Since interface proxies without a target don't have the target implementation to proceed to, - it is important, that the last interceptor does not call this method, otherwise a - <see cref="T:System.NotImplementedException"/> will be thrown. - </remarks> - </member> - <member name="P:Castle.DynamicProxy.IInvocation.Proxy"> - <summary> - Gets the proxy object on which the intercepted method is invoked. - </summary> - <value>Proxy object on which the intercepted method is invoked.</value> - </member> - <member name="P:Castle.DynamicProxy.IInvocation.InvocationTarget"> - <summary> - Gets the object on which the invocation is performed. This is different from proxy object - because most of the time this will be the proxy target object. - </summary> - <seealso cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> - <value>The invocation target.</value> - </member> - <member name="P:Castle.DynamicProxy.IInvocation.TargetType"> - <summary> - Gets the type of the target object for the intercepted method. - </summary> - <value>The type of the target object.</value> - </member> - <member name="P:Castle.DynamicProxy.IInvocation.Arguments"> - <summary> - Gets the arguments that the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> has been invoked with. - </summary> - <value>The arguments the method was invoked with.</value> - </member> - <member name="P:Castle.DynamicProxy.IInvocation.GenericArguments"> - <summary> - Gets the generic arguments of the method. - </summary> - <value>The generic arguments, or null if not a generic method.</value> - </member> - <member name="P:Castle.DynamicProxy.IInvocation.Method"> - <summary> - Gets the <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked on the proxy. - </summary> - <value>The <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked.</value> - </member> - <member name="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"> - <summary> - For interface proxies, this will point to the <see cref="T:System.Reflection.MethodInfo"/> on the target class. - </summary> - <value>The method invocation target.</value> - </member> - <member name="P:Castle.DynamicProxy.IInvocation.ReturnValue"> - <summary> - Gets or sets the return value of the method. - </summary> - <value>The return value of the method.</value> - </member> - <member name="T:Castle.DynamicProxy.IProxyGenerationHook"> - <summary> - Used during the target type inspection process. Implementors have a chance to customize the - proxy generation process. - </summary> - </member> - <member name="M:Castle.DynamicProxy.IProxyGenerationHook.ShouldInterceptMethod(System.Type,System.Reflection.MethodInfo)"> - <summary> - Invoked by the generation process to determine if the specified method should be proxied. - </summary> - <param name="type">The type which declares the given method.</param> - <param name="methodInfo">The method to inspect.</param> - <returns>True if the given method should be proxied; false otherwise.</returns> - </member> - <member name="M:Castle.DynamicProxy.IProxyGenerationHook.NonProxyableMemberNotification(System.Type,System.Reflection.MemberInfo)"> - <summary> - Invoked by the generation process to notify that a member was not marked as virtual. - </summary> - <param name="type">The type which declares the non-virtual member.</param> - <param name="memberInfo">The non-virtual member.</param> - <remarks> - This method gives an opportunity to inspect any non-proxyable member of a type that has - been requested to be proxied, and if appropriate - throw an exception to notify the caller. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.IProxyGenerationHook.MethodsInspected"> - <summary> - Invoked by the generation process to notify that the whole process has completed. - </summary> - </member> - <member name="T:Castle.DynamicProxy.Contributors.ITypeContributor"> - <summary> - Interface describing elements composing generated type - </summary> - </member> - <member name="M:Castle.DynamicProxy.Contributors.MembersCollector.IsAccessible(System.Reflection.MethodBase)"> - <summary> - Checks if the method is public or protected. - </summary> - <param name="method"></param> - <returns></returns> - </member> - <member name="M:Castle.DynamicProxy.Contributors.MembersCollector.AcceptMethod(System.Reflection.MethodInfo,System.Boolean,Castle.DynamicProxy.IProxyGenerationHook)"> - <summary> - Performs some basic screening and invokes the <see cref="T:Castle.DynamicProxy.IProxyGenerationHook"/> - to select methods. - </summary> - <param name="method"></param> - <param name="onlyVirtuals"></param> - <param name="hook"></param> - <returns></returns> - </member> - <member name="T:Castle.DynamicProxy.IAttributeDisassembler"> - <summary> - Provides functionality for disassembling instances of attributes to CustomAttributeBuilder form, during the process of emiting new types by Dynamic Proxy. - </summary> - </member> - <member name="M:Castle.DynamicProxy.IAttributeDisassembler.Disassemble(System.Attribute)"> - <summary> - Disassembles given attribute instance back to corresponding CustomAttributeBuilder. - </summary> - <param name="attribute">An instance of attribute to disassemble</param> - <returns><see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> corresponding 1 to 1 to given attribute instance, or null reference.</returns> - <remarks> - Implementers should return <see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> that corresponds to given attribute instance 1 to 1, - that is after calling specified constructor with specified arguments, and setting specified properties and fields with values specified - we should be able to get an attribute instance identical to the one passed in <paramref name="attribute"/>. Implementer can return null - if it wishes to opt out of replicating the attribute. Notice however, that for some cases, like attributes passed explicitly by the user - it is illegal to return null, and doing so will result in exception. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.HandleError(System.Type,System.Exception)"> - <summary> - Handles error during disassembly process - </summary> - <param name="attributeType">Type of the attribute being disassembled</param> - <param name="exception">Exception thrown during the process</param> - <returns>usually null, or (re)throws the exception</returns> - </member> - <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.InitializeConstructorArgs(System.Type,System.Attribute,System.Object[],System.Reflection.ParameterInfo[])"> - <summary> - Here we try to match a constructor argument to its value. - Since we can't get the values from the assembly, we use some heuristics to get it. - a/ we first try to match all the properties on the attributes by name (case insensitive) to the argument - b/ if we fail we try to match them by property type, with some smarts about convertions (i,e: can use Guid for string). - </summary> - </member> - <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ReplaceIfBetterMatch(System.Reflection.ParameterInfo,System.Reflection.PropertyInfo,System.Reflection.PropertyInfo)"> - <summary> - We have the following rules here. - Try to find a matching type, failing that, if the parameter is string, get the first property (under the assumption that - we can convert it. - </summary> - </member> - <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ConvertValue(System.Object,System.Type)"> - <summary> - Attributes can only accept simple types, so we return null for null, - if the value is passed as string we call to string (should help with converting), - otherwise, we use the value as is (enums, integer, etc). - </summary> - </member> - <member name="T:Castle.DynamicProxy.CacheMappingsAttribute"> - <summary> - Applied to the assemblies saved by <see cref="T:Castle.DynamicProxy.ModuleScope"/> in order to persist the cache data included in the persisted assembly. - </summary> - </member> - <member name="T:Castle.DynamicProxy.Generators.BaseProxyGenerator"> - <summary> - Base class that exposes the common functionalities - to proxy generation. - </summary> - </member> - <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.GenerateParameterlessConstructor(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Type,Castle.DynamicProxy.Generators.Emitters.SimpleAST.FieldReference)"> - <summary> - Generates a parameters constructor that initializes the proxy - state with <see cref="T:Castle.DynamicProxy.StandardInterceptor"/> just to make it non-null. - <para> - This constructor is important to allow proxies to be XML serializable - </para> - </summary> - </member> - <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.AddMappingNoCheck(System.Type,Castle.DynamicProxy.Contributors.ITypeContributor,System.Collections.Generic.IDictionary{System.Type,Castle.DynamicProxy.Contributors.ITypeContributor})"> - <summary> - It is safe to add mapping (no mapping for the interface exists) - </summary> - <param name = "implementer"></param> - <param name = "interface"></param> - <param name = "mapping"></param> - </member> - <member name="M:Castle.DynamicProxy.Generators.InvocationTypeGenerator.GetBaseCtorArguments(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Reflection.ConstructorInfo@)"> - <summary> - Generates the constructor for the class that extends - <see cref="T:Castle.DynamicProxy.AbstractInvocation"/> - </summary> - <param name="targetFieldType"></param> - <param name="proxyGenerationOptions"></param> - <param name="baseConstructor"></param> - </member> - <member name="T:Castle.DynamicProxy.DefaultProxyBuilder"> - <summary> - Default implementation of <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> interface producing in-memory proxy assemblies. - </summary> - </member> - <member name="T:Castle.DynamicProxy.IProxyBuilder"> - <summary> - Abstracts the implementation of proxy type construction. - </summary> - </member> - <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions)"> - <summary> - Creates a proxy type for given <paramref name="classToProxy"/>, using <paramref name="options"/> provided. - </summary> - <param name="classToProxy">The class type to proxy.</param> - <param name="options">The proxy generation options.</param> - <returns>The generated proxy type.</returns> - <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> is a generic type definition.</exception> - <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> is not public. - Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> - pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> - <seealso cref="T:Castle.DynamicProxy.Generators.ClassProxyGenerator"/> - </member> - <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> - <summary> - Creates a proxy type for given <paramref name="classToProxy"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided. - </summary> - <param name="classToProxy">The class type to proxy.</param> - <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> - <param name="options">The proxy generation options.</param> - <returns>The generated proxy type.</returns> - <remarks> - Implementers should return a proxy type for the specified class and interfaces. - Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.) - </remarks> - <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. - Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> - pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> - <seealso cref="T:Castle.DynamicProxy.Generators.ClassProxyGenerator"/> - </member> - <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> - <summary> - Creates a proxy type for given <paramref name="classToProxy"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided. - </summary> - <param name="classToProxy">The class type to proxy.</param> - <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> - <param name="options">The proxy generation options.</param> - <returns>The generated proxy type.</returns> - <remarks> - Implementers should return a proxy type for the specified class and interfaces. - Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.) - </remarks> - <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. - Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> - pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> - <seealso cref="T:Castle.DynamicProxy.Generators.ClassProxyGenerator"/> - </member> - <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)"> - <summary> - Creates a proxy type that proxies calls to <paramref name="interfaceToProxy"/> members on <paramref name="targetType"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided. - </summary> - <param name="interfaceToProxy">The interface type to proxy.</param> - <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> - <param name="targetType">Type implementing <paramref name="interfaceToProxy"/> on which calls to the interface members should be intercepted.</param> - <param name="options">The proxy generation options.</param> - <returns>The generated proxy type.</returns> - <remarks> - Implementers should return a proxy type for the specified interface that 'proceeds' executions to the specified target. - Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.) - </remarks> - <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. - Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> - pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> - <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator"/> - </member> - <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> - <summary> - Creates a proxy type for given <paramref name="interfaceToProxy"/> that delegates all calls to the provided interceptors. - </summary> - <param name="interfaceToProxy">The interface type to proxy.</param> - <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> - <param name="options">The proxy generation options.</param> - <returns>The generated proxy type.</returns> - <remarks> - Implementers should return a proxy type for the specified interface and additional interfaces that delegate all executions to the specified interceptors. - </remarks> - <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. - Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> - pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> - <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithoutTargetGenerator"/> - </member> - <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> - <summary> - Creates a proxy type for given <paramref name="interfaceToProxy"/> and <parmaref name="additionalInterfacesToProxy"/> that delegates all calls to the provided interceptors and allows interceptors to switch the actual target of invocation. - </summary> - <param name="interfaceToProxy">The interface type to proxy.</param> - <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> - <param name="options">The proxy generation options.</param> - <returns>The generated proxy type.</returns> - <remarks> - Implementers should return a proxy type for the specified interface(s) that delegate all executions to the specified interceptors - and uses an instance of the interface as their targets (i.e. <see cref="P:Castle.DynamicProxy.IInvocation.InvocationTarget"/>), rather than a class. All <see cref="T:Castle.DynamicProxy.IInvocation"/> classes should then implement <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface, - to allow interceptors to switch invocation target with instance of another type implementing called interface. - </remarks> - <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. - Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> - pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> - <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetInterfaceGenerator"/> - </member> - <member name="P:Castle.DynamicProxy.IProxyBuilder.Logger"> - <summary> - Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> logs to. - </summary> - </member> - <member name="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope"> - <summary> - Gets the <see cref="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope"/> associated with this builder. - </summary> - <value>The module scope associated with this builder.</value> - </member> - <member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor"> - <summary> - Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class with new <see cref="T:Castle.DynamicProxy.ModuleScope"/>. - </summary> - </member> - <member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor(Castle.DynamicProxy.ModuleScope)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class. - </summary> - <param name="scope">The module scope for generated proxy types.</param> - </member> - <member name="M:Castle.DynamicProxy.AttributeUtil.AddDisassembler``1(Castle.DynamicProxy.IAttributeDisassembler)"> - <summary> - Registers custom disassembler to handle disassembly of specified type of attributes. - </summary> - <typeparam name="TAttribute">Type of attributes to handle</typeparam> - <param name="disassembler">Disassembler converting existing instances of Attributes to CustomAttributeBuilders</param> - <remarks> - When disassembling an attribute Dynamic Proxy will first check if an custom disassembler has been registered to handle attributes of that type, - and if none is found, it'll use the <see cref="P:Castle.DynamicProxy.AttributeUtil.FallbackDisassembler"/>. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.AttributeUtil.ShouldSkipAttributeReplication(System.Type)"> - <summary> - Attributes should be replicated if they are non-inheritable, - but there are some special cases where the attributes means - something to the CLR, where they should be skipped. - </summary> - </member> - <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Reflection.MemberInfo,System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class. - </summary> - <param name="target">Target element. This is either target type or target method for invocation types.</param> - <param name="type">The type of the proxy. This is base type for invocation types.</param> - <param name="interfaces">The interfaces.</param> - <param name="options">The options.</param> - </member> - <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class. - </summary> - <param name="target">Type of the target.</param> - <param name="interfaces">The interfaces.</param> - <param name="options">The options.</param> - </member> - <member name="T:Castle.DynamicProxy.Generators.Emitters.LdcOpCodesDictionary"> - <summary>s - Provides appropriate Ldc.X opcode for the type of primitive value to be loaded. - </summary> - </member> - <member name="T:Castle.DynamicProxy.Generators.Emitters.LdindOpCodesDictionary"> - <summary> - Provides appropriate Ldind.X opcode for - the type of primitive value to be loaded indirectly. - </summary> - </member> - <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadOpCodeForConstantValue(System.Reflection.Emit.ILGenerator,System.Object)"> - <summary> - Emits a load opcode of the appropriate kind for a constant string or - primitive value. - </summary> - <param name="gen"></param> - <param name="value"></param> - </member> - <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadOpCodeForDefaultValueOfType(System.Reflection.Emit.ILGenerator,System.Type)"> - <summary> - Emits a load opcode of the appropriate kind for the constant default value of a - type, such as 0 for value types and null for reference types. - </summary> - </member> - <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadIndirectOpCodeForType(System.Reflection.Emit.ILGenerator,System.Type)"> - <summary> - Emits a load indirect opcode of the appropriate type for a value or object reference. - Pops a pointer off the evaluation stack, dereferences it and loads - a value of the specified type. - </summary> - <param name="gen"></param> - <param name="type"></param> - </member> - <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitStoreIndirectOpCodeForType(System.Reflection.Emit.ILGenerator,System.Type)"> - <summary> - Emits a store indirectopcode of the appropriate type for a value or object reference. - Pops a value of the specified type and a pointer off the evaluation stack, and - stores the value. - </summary> - <param name="gen"></param> - <param name="type"></param> - </member> - <member name="T:Castle.DynamicProxy.Generators.Emitters.PropertiesCollection"> - <summary> - Summary description for PropertiesCollection. - </summary> - </member> - <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.IndirectReference"> - <summary> - Wraps a reference that is passed - ByRef and provides indirect load/store support. - </summary> - </member> - <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.NewArrayExpression"> - <summary> - Summary description for NewArrayExpression. - </summary> - </member> - <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.ReferencesToObjectArrayExpression"> - <summary> - - </summary> - </member> - <member name="T:Castle.DynamicProxy.Generators.Emitters.StindOpCodesDictionary"> - <summary> - Provides appropriate Stind.X opcode - for the type of primitive value to be stored indirectly. - </summary> - </member> - <member name="M:Castle.DynamicProxy.Generators.Emitters.TypeUtil.GetAllInterfaces(System.Type[])"> - <summary> - Returns list of all unique interfaces implemented given types, including their base interfaces. - </summary> - <param name = "types"></param> - <returns></returns> - </member> - <member name="M:Castle.DynamicProxy.Generators.MetaEvent.#ctor(System.String,System.Type,System.Type,Castle.DynamicProxy.Generators.MetaMethod,Castle.DynamicProxy.Generators.MetaMethod,System.Reflection.EventAttributes)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.MetaEvent"/> class. - </summary> - <param name="name">The name.</param> - <param name="declaringType">Type declaring the original event being overriten, or null.</param> - <param name="eventDelegateType"></param> - <param name="adder">The add method.</param> - <param name="remover">The remove method.</param> - <param name="attributes">The attributes.</param> - </member> - <member name="T:Castle.DynamicProxy.Generators.INamingScope"> - <summary> - Represents the scope of uniquenes of names for types and their members - </summary> - </member> - <member name="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)"> - <summary> - Gets a unique name based on <paramref name="suggestedName"/> - </summary> - <param name="suggestedName">Name suggested by the caller</param> - <returns>Unique name based on <paramref name="suggestedName"/>.</returns> - <remarks> - Implementers should provide name as closely resembling <paramref name="suggestedName"/> as possible. - Generally if no collision occurs it is suggested to return suggested name, otherwise append sequential suffix. - Implementers must return deterministic names, that is when <see cref="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)"/> is called twice - with the same suggested name, the same returned name should be provided each time. Non-deterministic return - values, like appending random suffices will break serialization of proxies. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.Generators.INamingScope.SafeSubScope"> - <summary> - Returns new, disposable naming scope. It is responsibilty of the caller to make sure that no naming collision - with enclosing scope, or other subscopes is possible. - </summary> - <returns>New naming scope.</returns> - </member> - <member name="T:Castle.DynamicProxy.Generators.MethodFinder"> - <summary> - Returns the methods implemented by a type. Use this instead of Type.GetMethods() to work around a CLR issue - where duplicate MethodInfos are returned by Type.GetMethods() after a token of a generic type's method was loaded. - </summary> - </member> - <member name="M:Castle.DynamicProxy.InternalsHelper.IsInternalToDynamicProxy(System.Reflection.Assembly)"> - <summary> - Determines whether this assembly has internals visible to dynamic proxy. - </summary> - <param name="asm">The assembly to inspect.</param> - </member> - <member name="M:Castle.DynamicProxy.InternalsHelper.IsInternal(System.Reflection.MethodInfo)"> - <summary> - Determines whether the specified method is internal. - </summary> - <param name="method">The method.</param> - <returns> - <c>true</c> if the specified method is internal; otherwise, <c>false</c>. - </returns> - </member> - <member name="M:Castle.DynamicProxy.MixinData.#ctor(System.Collections.Generic.IEnumerable{System.Object})"> - <summary> - Because we need to cache the types based on the mixed in mixins, we do the following here: - - Get all the mixin interfaces - - Sort them by full name - - Return them by position - - The idea is to have reproducable behavior for the case that mixins are registered in different orders. - This method is here because it is required - </summary> - </member> - <member name="T:Castle.DynamicProxy.ModuleScope"> - <summary> - Summary description for ModuleScope. - </summary> - </member> - <member name="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"> - <summary> - The default file name used when the assembly is saved using <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/>. - </summary> - </member> - <member name="F:Castle.DynamicProxy.ModuleScope.DEFAULT_ASSEMBLY_NAME"> - <summary> - The default assembly (simple) name used for the assemblies generated by a <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance. - </summary> - </member> - <member name="M:Castle.DynamicProxy.ModuleScope.#ctor"> - <summary> - Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class; assemblies created by this instance will not be saved. - </summary> - </member> - <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance - should be saved. - </summary> - <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> - </member> - <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance - should be saved. - </summary> - <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> - <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> - </member> - <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean,System.String,System.String,System.String,System.String)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance - should be saved and what simple names are to be assigned to them. - </summary> - <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> - <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> - <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> - <param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> - <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> - <param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> - </member> - <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean,Castle.DynamicProxy.Generators.INamingScope,System.String,System.String,System.String,System.String)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance - should be saved and what simple names are to be assigned to them. - </summary> - <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> - <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> - <param name="namingScope">Naming scope used to provide unique names to generated types and their members (usually via sub-scopes).</param> - <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> - <param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> - <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> - <param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> - </member> - <member name="M:Castle.DynamicProxy.ModuleScope.GetFromCache(Castle.DynamicProxy.Generators.CacheKey)"> - <summary> - Returns a type from this scope's type cache, or null if the key cannot be found. - </summary> - <param name="key">The key to be looked up in the cache.</param> - <returns>The type from this scope's type cache matching the key, or null if the key cannot be found</returns> - </member> - <member name="M:Castle.DynamicProxy.ModuleScope.RegisterInCache(Castle.DynamicProxy.Generators.CacheKey,System.Type)"> - <summary> - Registers a type in this scope's type cache. - </summary> - <param name="key">The key to be associated with the type.</param> - <param name="type">The type to be stored in the cache.</param> - </member> - <member name="M:Castle.DynamicProxy.ModuleScope.GetKeyPair"> - <summary> - Gets the key pair used to sign the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>. - </summary> - <returns></returns> - </member> - <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModule(System.Boolean)"> - <summary> - Gets the specified module generated by this scope, creating a new one if none has yet been generated. - </summary> - <param name="isStrongNamed">If set to true, a strong-named module is returned; otherwise, a weak-named module is returned.</param> - <returns>A strong-named or weak-named module generated by this scope, as specified by the <paramref name="isStrongNamed"/> parameter.</returns> - </member> - <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithStrongName"> - <summary> - Gets the strong-named module generated by this scope, creating a new one if none has yet been generated. - </summary> - <returns>A strong-named module generated by this scope.</returns> - </member> - <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithWeakName"> - <summary> - Gets the weak-named module generated by this scope, creating a new one if none has yet been generated. - </summary> - <returns>A weak-named module generated by this scope.</returns> - </member> - <member name="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"> - <summary> - Saves the generated assembly with the name and directory information given when this <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance was created (or with - the <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/> and current directory if none was given). - </summary> - <remarks> - <para> - This method stores the generated assembly in the directory passed as part of the module information specified when this instance was - constructed (if any, else the current directory is used). If both a strong-named and a weak-named assembly - have been generated, it will throw an exception; in this case, use the <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly(System.Boolean)"/> overload. - </para> - <para> - If this <see cref="T:Castle.DynamicProxy.ModuleScope"/> was created without indicating that the assembly should be saved, this method does nothing. - </para></remarks> - <exception cref="T:System.InvalidOperationException">Both a strong-named and a weak-named assembly have been generated.</exception> - <returns>The path of the generated assembly file, or null if no file has been generated.</returns> - </member> - <member name="M:Castle.DynamicProxy.ModuleScope.SaveAssembly(System.Boolean)"> - <summary> - Saves the specified generated assembly with the name and directory information given when this <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance was created - (or with the <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/> and current directory if none was given). - </summary> - <param name="strongNamed">True if the generated assembly with a strong name should be saved (see <see cref="P:Castle.DynamicProxy.ModuleScope.StrongNamedModule"/>); - false if the generated assembly without a strong name should be saved (see <see cref="P:Castle.DynamicProxy.ModuleScope.WeakNamedModule"/>.</param> - <remarks> - <para> - This method stores the specified generated assembly in the directory passed as part of the module information specified when this instance was - constructed (if any, else the current directory is used). - </para> - <para> - If this <see cref="T:Castle.DynamicProxy.ModuleScope"/> was created without indicating that the assembly should be saved, this method does nothing. - </para> - </remarks> - <exception cref="T:System.InvalidOperationException">No assembly has been generated that matches the <paramref name="strongNamed"/> parameter. - </exception> - <returns>The path of the generated assembly file, or null if no file has been generated.</returns> - </member> - <member name="M:Castle.DynamicProxy.ModuleScope.LoadAssemblyIntoCache(System.Reflection.Assembly)"> - <summary> - Loads the generated types from the given assembly into this <see cref="T:Castle.DynamicProxy.ModuleScope"/>'s cache. - </summary> - <param name="assembly">The assembly to load types from. This assembly must have been saved via <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly(System.Boolean)"/> or - <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"/>, or it must have the <see cref="T:Castle.DynamicProxy.CacheMappingsAttribute"/> manually applied.</param> - <remarks> - This method can be used to load previously generated and persisted proxy types from disk into this scope's type cache, eg. in order - to avoid the performance hit associated with proxy generation. - </remarks> - </member> - <member name="P:Castle.DynamicProxy.ModuleScope.Lock"> - <summary> - Users of this <see cref="T:Castle.DynamicProxy.ModuleScope"/> should use this lock when accessing the cache. - </summary> - </member> - <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModule"> - <summary> - Gets the strong-named module generated by this scope, or <see langword="null"/> if none has yet been generated. - </summary> - <value>The strong-named module generated by this scope, or <see langword="null"/> if none has yet been generated.</value> - </member> - <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModuleName"> - <summary> - Gets the file name of the strongly named module generated by this scope. - </summary> - <value>The file name of the strongly named module generated by this scope.</value> - </member> - <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModuleDirectory"> - <summary> - Gets the directory where the strongly named module generated by this scope will be saved, or <see langword="null"/> if the current directory - is used. - </summary> - <value>The directory where the strongly named module generated by this scope will be saved when <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"/> is called - (if this scope was created to save modules).</value> - </member> - <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModule"> - <summary> - Gets the weak-named module generated by this scope, or <see langword="null"/> if none has yet been generated. - </summary> - <value>The weak-named module generated by this scope, or <see langword="null"/> if none has yet been generated.</value> - </member> - <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModuleName"> - <summary> - Gets the file name of the weakly named module generated by this scope. - </summary> - <value>The file name of the weakly named module generated by this scope.</value> - </member> - <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModuleDirectory"> - <summary> - Gets the directory where the weakly named module generated by this scope will be saved, or <see langword="null"/> if the current directory - is used. - </summary> - <value>The directory where the weakly named module generated by this scope will be saved when <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"/> is called - (if this scope was created to save modules).</value> - </member> - <member name="T:Castle.DynamicProxy.PersistentProxyBuilder"> - <summary> - ProxyBuilder that persists the generated type. - </summary> - <remarks> - The saved assembly contains just the last generated type. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.PersistentProxyBuilder.#ctor"> - <summary> - Initializes a new instance of the <see cref="T:Castle.DynamicProxy.PersistentProxyBuilder"/> class. - </summary> - </member> - <member name="M:Castle.DynamicProxy.PersistentProxyBuilder.SaveAssembly"> - <summary> - Saves the generated assembly to a physical file. Note that this renders the <see cref="T:Castle.DynamicProxy.PersistentProxyBuilder"/> unusable. - </summary> - <returns>The path of the generated assembly file, or null if no assembly has been generated.</returns> - <remarks>This method does not support saving multiple files. If both a signed and an unsigned module have been generated, use the - respective methods of the <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerationOptions.#ctor(Castle.DynamicProxy.IProxyGenerationHook)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/> class. - </summary> - <param name="hook">The hook.</param> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerationOptions.#ctor"> - <summary> - Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/> class. - </summary> - </member> - <member name="T:Castle.DynamicProxy.ProxyGenerator"> - <summary> - Provides proxy objects for classes and interfaces. - </summary> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor(Castle.DynamicProxy.IProxyBuilder)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. - </summary> - <param name="builder">Proxy types builder.</param> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor"> - <summary> - Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. - </summary> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. - </summary> - <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns>Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object.</returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/>is not an interface type.</exception> - <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> - <remarks> - This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target - use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])"/> method. - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. - </summary> - <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/>is not an interface type.</exception> - <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> - <remarks> - This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target - use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. - </summary> - <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> - <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> - <remarks> - This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target - use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"/> method. - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. - </summary> - <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> - <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> - <remarks> - This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target - use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. - </summary> - <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> - <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> - <remarks> - This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target - use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"/> method. - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. - </summary> - <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> - <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> - <remarks> - This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target - use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. - Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. - </summary> - <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> - <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. - Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. - </summary> - <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> - <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. - Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. - </summary> - <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> - <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. - Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. - </summary> - <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> - <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. - Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. - </summary> - <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> - <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. - Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. - </summary> - <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> - <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor)"> - <summary> - Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptor"/>. - </summary> - <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> - <param name="interceptor">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> - <remarks> - Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. - They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. - As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>. - </summary> - <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> - <remarks> - Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. - They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. - As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>. - </summary> - <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> - <remarks> - Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. - They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. - As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.IInterceptor)"> - <summary> - Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptor"/>. - </summary> - <param name="interfaceToProxy">Type of the interface which will be proxied.</param> - <param name="interceptor">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <paramref name="interfaceToProxy"/> type on generated target object. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> - <remarks> - Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. - They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. - </summary> - <param name="interfaceToProxy">Type of the interface which will be proxied.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <paramref name="interfaceToProxy"/> type on generated target object. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> - <remarks> - Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. - They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. - </summary> - <param name="interfaceToProxy">Type of the interface which will be proxied.</param> - <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on generated target object. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> - <remarks> - Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. - They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. - </summary> - <param name="interfaceToProxy">Type of the interface which will be proxied.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <paramref name="interfaceToProxy"/> on generated target object. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> - <remarks> - They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. - </summary> - <param name="interfaceToProxy">Type of the interface which will be proxied.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on generated target object. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> - <remarks> - Since this method uses an empty-shell implementation of <paramref name="additionalInterfacesToProxy"/> to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. - They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget``1(``0,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <typeparam name="TClass">Type of class which will be proxied.</typeparam> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. - </returns> - <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <typeparam name="TClass">Type of class which will be proxied.</typeparam> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. - </returns> - <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <param name="classToProxy">Type of class which will be proxied.</param> - <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <param name="classToProxy">Type of class which will be proxied.</param> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,System.Object[],Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <param name="classToProxy">Type of class which will be proxied.</param> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <param name="classToProxy">Type of class which will be proxied.</param> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no parameterless constructor exists on type <paramref name="classToProxy"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <param name="classToProxy">Type of class which will be proxied.</param> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <param name="classToProxy">Type of class which will be proxied.</param> - <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <param name="classToProxy">Type of class which will be proxied.</param> - <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> - <param name="target">The target object, calls to which will be intercepted.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy``1(Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <typeparam name="TClass">Type of class which will be proxied.</typeparam> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. - </returns> - <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <typeparam name="TClass">Type of class which will be proxied.</typeparam> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. - </returns> - <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <param name="classToProxy">Type of class which will be proxied.</param> - <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <param name="classToProxy">Type of class which will be proxied.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Object[],Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <param name="classToProxy">Type of class which will be proxied.</param> - <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <param name="classToProxy">Type of class which will be proxied.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no parameterless constructor exists on type <paramref name="classToProxy"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <param name="classToProxy">Type of class which will be proxied.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <param name="classToProxy">Type of class which will be proxied.</param> - <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> - <summary> - Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. - </summary> - <param name="classToProxy">Type of class which will be proxied.</param> - <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> - <param name="options">The proxy generation options used to influence generated proxy type and object.</param> - <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> - <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> - <returns> - New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. - </returns> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> - <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> - <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> - <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> - <remarks> - This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. - As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. - </remarks> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> - <summary> - Creates the proxy type for class proxy with given <paramref name="classToProxy"/> class, implementing given <paramref name="additionalInterfacesToProxy"/> and using provided <paramref name="options"/>. - </summary> - <param name="classToProxy">The base class for proxy type.</param> - <param name="additionalInterfacesToProxy">The interfaces that proxy type should implement.</param> - <param name="options">The options for proxy generation process.</param> - <returns><see cref="T:System.Type"/> of proxy.</returns> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)"> - <summary> - Creates the proxy type for interface proxy with target for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> on given <paramref name="targetType"/> and using provided <paramref name="options"/>. - </summary> - <param name="interfaceToProxy">The interface proxy type should implement.</param> - <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> - <param name="targetType">Actual type that the proxy type will encompass.</param> - <param name="options">The options for proxy generation process.</param> - <returns><see cref="T:System.Type"/> of proxy.</returns> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> - <summary> - Creates the proxy type for interface proxy with target interface for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> on given <paramref name="interfaceToProxy"/> and using provided <paramref name="options"/>. - </summary> - <param name="interfaceToProxy">The interface proxy type should implement.</param> - <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> - <param name="options">The options for proxy generation process.</param> - <returns><see cref="T:System.Type"/> of proxy.</returns> - </member> - <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> - <summary> - Creates the proxy type for interface proxy without target for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> and using provided <paramref name="options"/>. - </summary> - <param name="interfaceToProxy">The interface proxy type should implement.</param> - <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> - <param name="options">The options for proxy generation process.</param> - <returns><see cref="T:System.Type"/> of proxy.</returns> - </member> - <member name="P:Castle.DynamicProxy.ProxyGenerator.Logger"> - <summary> - Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> log to. - </summary> - </member> - <member name="P:Castle.DynamicProxy.ProxyGenerator.ProxyBuilder"> - <summary> - Gets the proxy builder instance used to generate proxy types. - </summary> - <value>The proxy builder.</value> - </member> - <member name="M:Castle.DynamicProxy.RemotableInvocation.Proceed"> - <summary> - - </summary> - <returns></returns> - </member> - <member name="P:Castle.DynamicProxy.RemotableInvocation.Method"> - <summary> - - </summary> - </member> - <member name="P:Castle.DynamicProxy.RemotableInvocation.MethodInvocationTarget"> - <summary> - For interface proxies, this will point to the - <see cref="T:System.Reflection.MethodInfo"/> on the target class - </summary> - </member> - <member name="T:Castle.DynamicProxy.Serialization.ProxyObjectReference"> - <summary> - Handles the deserialization of proxies. - </summary> - </member> - <member name="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.ResetScope"> - <summary> - Resets the <see cref="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"/> used for deserialization to a new scope. - </summary> - <remarks>This is useful for test cases.</remarks> - </member> - <member name="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.SetScope(Castle.DynamicProxy.ModuleScope)"> - <summary> - Resets the <see cref="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"/> used for deserialization to a given <paramref name="scope"/>. - </summary> - <param name="scope">The scope to be used for deserialization.</param> - <remarks>By default, the deserialization process uses a different scope than the rest of the application, which can lead to multiple proxies - being generated for the same type. By explicitly setting the deserialization scope to the application's scope, this can be avoided.</remarks> - </member> - <member name="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"> - <summary> - Gets the <see cref="T:Castle.DynamicProxy.ModuleScope"/> used for deserialization. - </summary> - <value>As <see cref="T:Castle.DynamicProxy.Serialization.ProxyObjectReference"/> has no way of automatically determining the scope used by the application (and the application - might use more than one scope at the same time), <see cref="T:Castle.DynamicProxy.Serialization.ProxyObjectReference"/> uses a dedicated scope instance for deserializing proxy - types. This instance can be reset and set to a specific value via <see cref="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.ResetScope"/> and <see cref="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.SetScope(Castle.DynamicProxy.ModuleScope)"/>.</value> - </member> - <member name="T:Castle.DynamicProxy.Tokens.InvocationMethods"> - <summary> - Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:Castle.DynamicProxy.AbstractInvocation"/> class. - </summary> - </member> - <member name="T:Castle.DynamicProxy.Tokens.SerializationInfoMethods"> - <summary> - Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:System.Runtime.Serialization.SerializationInfo"/> class. - </summary> - </member> - <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Bool"> - <summary> - <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Boolean)"/> - </summary> - </member> - <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Int32"> - <summary> - <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Int32)"/> - </summary> - </member> - <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Object"> - <summary> - <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Object)"/> - </summary> - </member> - <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.GetValue"> - <summary> - <see cref="M:System.Runtime.Serialization.SerializationInfo.GetValue(System.String,System.Type)"/> - </summary> - </member> - <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.SetType"> - <summary> - <see cref="M:System.Runtime.Serialization.SerializationInfo.SetType(System.Type)"/> - </summary> - </member> - <member name="T:Castle.DynamicProxy.IInterceptorSelector"> - <summary> - Provides an extension point that allows proxies to choose specific interceptors on - a per method basis. - </summary> - </member> - <member name="M:Castle.DynamicProxy.IInterceptorSelector.SelectInterceptors(System.Type,System.Reflection.MethodInfo,Castle.DynamicProxy.IInterceptor[])"> - <summary> - Selects the interceptors that should intercept calls to the given <paramref name="method"/>. - </summary> - <param name="type">The type declaring the method to intercept.</param> - <param name="method">The method that will be intercepted.</param> - <param name="interceptors">All interceptors registered with the proxy.</param> - <returns>An array of interceptors to invoke upon calling the <paramref name="method"/>.</returns> - <remarks> - This method is called only once per proxy instance, upon the first call to the - <paramref name="method"/>. Either an empty array or null are valid return values to indicate - that no interceptor should intercept calls to the method. Although it is not advised, it is - legal to return other <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations than these provided in - <paramref name="interceptors"/>. - </remarks> - </member> - <member name="M:Castle.Core.Internal.Lock.Create"> - <summary> - Creates a new lock. - </summary> - <returns></returns> - </member> - <member name="T:Castle.Core.IServiceProviderExAccessor"> - <summary> - This interface should be implemented by classes - that are available in a bigger context, exposing - the container to different areas in the same application. - <para> - For example, in Web application, the (global) HttpApplication - subclasses should implement this interface to expose - the configured container - </para> - </summary> - </member> - <member name="T:Castle.DynamicProxy.IChangeProxyTarget"> - <summary> - Exposes means to change target objects of proxies and invocations - </summary> - </member> - <member name="M:Castle.DynamicProxy.IChangeProxyTarget.ChangeInvocationTarget(System.Object)"> - <summary> - Changes the target object (<see cref="P:Castle.DynamicProxy.IInvocation.InvocationTarget"/>) of current <see cref="T:Castle.DynamicProxy.IInvocation"/>. - </summary> - <param name="target">The new value of target of invocation.</param> - <remarks> - Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to <see cref="P:Castle.DynamicProxy.IInvocation.TargetType"/>, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown. - Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target. - In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws. - Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow. - In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws. - </remarks> - <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception> - </member> - <member name="M:Castle.DynamicProxy.IChangeProxyTarget.ChangeProxyTarget(System.Object)"> - <summary> - Permanently changes the target object of the proxy. This does not affect target of the current invocation. - </summary> - <param name="target">The new value of target of the proxy.</param> - <remarks> - Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to proxy's target type, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown. - Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target. - In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws. - Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow. - In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws. - </remarks> - <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception> - </member> - <member name="T:Castle.DynamicProxy.IInterceptor"> - <summary> - New interface that is going to be used by DynamicProxy 2 - </summary> - </member> - <member name="M:Castle.DynamicProxy.IProxyTargetAccessor.DynProxyGetTarget"> - <summary> - Get the proxy target (note that null is a valid target!) - </summary> - <returns></returns> - </member> - <member name="M:Castle.DynamicProxy.IProxyTargetAccessor.GetInterceptors"> - <summary> - Gets the interceptors for the proxy - </summary> - <returns></returns> - </member> - <member name="T:Castle.Core.IServiceEnabledComponent"> - <summary> - Defines that the implementation wants a - <see cref="T:System.IServiceProvider"/> in order to - access other components. The creator must be aware - that the component might (or might not) implement - the interface. - </summary> - <remarks> - Used by Castle Project components to, for example, - gather logging factories - </remarks> - </member> - <member name="T:Castle.Core.IServiceProviderEx"> - <summary> - Increments <c>IServiceProvider</c> with a generic service resolution operation. - </summary> - </member> - <member name="T:Castle.Core.Logging.IExtendedLoggerFactory"> - <summary> - Provides a factory that can produce either <see cref="T:Castle.Core.Logging.ILogger"/> or - <see cref="T:Castle.Core.Logging.IExtendedLogger"/> classes. - </summary> - </member> - <member name="T:Castle.Core.Logging.ILoggerFactory"> - <summary> - Manages the instantiation of <see cref="T:Castle.Core.Logging.ILogger"/>s. - </summary> - </member> - <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.Type)"> - <summary> - Creates a new logger, getting the logger name from the specified type. - </summary> - </member> - <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.String)"> - <summary> - Creates a new logger. - </summary> - </member> - <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> - <summary> - Creates a new logger, getting the logger name from the specified type. - </summary> - </member> - <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> - <summary> - Creates a new logger. - </summary> - </member> - <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.Type)"> - <summary> - Creates a new extended logger, getting the logger name from the specified type. - </summary> - </member> - <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.String)"> - <summary> - Creates a new extended logger. - </summary> - </member> - <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> - <summary> - Creates a new extended logger, getting the logger name from the specified type. - </summary> - </member> - <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> - <summary> - Creates a new extended logger. - </summary> - </member> - <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.Type)"> - <summary> - Creates a new extended logger, getting the logger name from the specified type. - </summary> - </member> - <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.String)"> - <summary> - Creates a new extended logger. - </summary> - </member> - <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> - <summary> - Creates a new extended logger, getting the logger name from the specified type. - </summary> - </member> - <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> - <summary> - Creates a new extended logger. - </summary> - </member> - <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.Type)"> - <summary> - Creates a new logger, getting the logger name from the specified type. - </summary> - </member> - <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.String)"> - <summary> - Creates a new logger. - </summary> - </member> - <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.Type,Castle.Core.Logging.LoggerLevel)"> - <summary> - Creates a new logger, getting the logger name from the specified type. - </summary> - </member> - <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.String,Castle.Core.Logging.LoggerLevel)"> - <summary> - Creates a new logger. - </summary> - </member> - <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.GetConfigFile(System.String)"> - <summary> - Gets the configuration file. - </summary> - <param name="fileName">i.e. log4net.config</param> - <returns></returns> - </member> - <member name="T:Castle.Core.Logging.TraceLoggerFactory"> - <summary> - Used to create the TraceLogger implementation of ILogger interface. See <see cref="T:Castle.Core.Logging.TraceLogger"/>. - </summary> - </member> - <member name="M:Castle.Core.Logging.AbstractLoggerFactory.GetConfigFile(System.String)"> - <summary> - Gets the configuration file. - </summary> - <param name="fileName">i.e. log4net.config</param> - <returns></returns> - </member> - <member name="T:Castle.Core.Logging.IContextProperties"> - <summary> - Interface for Context Properties implementations - </summary> - <remarks> - <para> - This interface defines a basic property get set accessor. - </para> - <para> - Based on the ContextPropertiesBase of log4net, by Nicko Cadell. - </para> - </remarks> - </member> - <member name="P:Castle.Core.Logging.IContextProperties.Item(System.String)"> - <summary> - Gets or sets the value of a property - </summary> - <value> - The value for the property with the specified key - </value> - <remarks> - <para> - Gets or sets the value of a property - </para> - </remarks> - </member> - <member name="T:Castle.Core.Logging.NullLogFactory"> - <summary> - NullLogFactory used when logging is turned off. - </summary> - </member> - <member name="M:Castle.Core.Logging.NullLogFactory.Create(System.String)"> - <summary> - Creates an instance of ILogger with the specified name. - </summary> - <param name="name">Name.</param> - <returns></returns> - </member> - <member name="M:Castle.Core.Logging.NullLogFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> - <summary> - Creates an instance of ILogger with the specified name and LoggerLevel. - </summary> - <param name="name">Name.</param> - <param name="level">Level.</param> - <returns></returns> - </member> - <member name="T:Castle.Core.Logging.StreamLoggerFactory"> - <summary> - Creates <see cref="T:Castle.Core.Logging.StreamLogger"/> outputing - to files. The name of the file is derived from the log name - plus the 'log' extension. - </summary> - </member> - <member name="T:Castle.Core.Logging.IExtendedLogger"> - <summary> - Provides an interface that supports <see cref="T:Castle.Core.Logging.ILogger"/> and - allows the storage and retrieval of Contexts. These are supported in - both log4net and NLog. - </summary> - </member> - <member name="T:Castle.Core.Logging.ILogger"> - <summary> - Manages logging. - </summary> - <remarks> - This is a facade for the different logging subsystems. - It offers a simplified interface that follows IOC patterns - and a simplified priority/level/severity abstraction. - </remarks> - </member> - <member name="M:Castle.Core.Logging.ILogger.Debug(System.String)"> - <summary> - Logs a debug message. - </summary> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.Debug(System.String,System.Exception)"> - <summary> - Logs a debug message. - </summary> - <param name="exception">The exception to log</param> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.Debug(System.String,System.Object[])"> - <summary> - Logs a debug message. - </summary> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.String,System.Object[])"> - <summary> - Logs a debug message. - </summary> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.Exception,System.String,System.Object[])"> - <summary> - Logs a debug message. - </summary> - <param name="exception">The exception to log</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs a debug message. - </summary> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs a debug message. - </summary> - <param name="exception">The exception to log</param> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.Info(System.String)"> - <summary> - Logs an info message. - </summary> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.Info(System.String,System.Exception)"> - <summary> - Logs an info message. - </summary> - <param name="exception">The exception to log</param> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.Info(System.String,System.Object[])"> - <summary> - Logs an info message. - </summary> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.String,System.Object[])"> - <summary> - Logs an info message. - </summary> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.Exception,System.String,System.Object[])"> - <summary> - Logs an info message. - </summary> - <param name="exception">The exception to log</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs an info message. - </summary> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs an info message. - </summary> - <param name="exception">The exception to log</param> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.Warn(System.String)"> - <summary> - Logs a warn message. - </summary> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.Warn(System.String,System.Exception)"> - <summary> - Logs a warn message. - </summary> - <param name="exception">The exception to log</param> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.Warn(System.String,System.Object[])"> - <summary> - Logs a warn message. - </summary> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.String,System.Object[])"> - <summary> - Logs a warn message. - </summary> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.Exception,System.String,System.Object[])"> - <summary> - Logs a warn message. - </summary> - <param name="exception">The exception to log</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs a warn message. - </summary> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs a warn message. - </summary> - <param name="exception">The exception to log</param> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.Error(System.String)"> - <summary> - Logs an error message. - </summary> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.Error(System.String,System.Exception)"> - <summary> - Logs an error message. - </summary> - <param name="exception">The exception to log</param> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.Error(System.String,System.Object[])"> - <summary> - Logs an error message. - </summary> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.String,System.Object[])"> - <summary> - Logs an error message. - </summary> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.Exception,System.String,System.Object[])"> - <summary> - Logs an error message. - </summary> - <param name="exception">The exception to log</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs an error message. - </summary> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs an error message. - </summary> - <param name="exception">The exception to log</param> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String)"> - <summary> - Logs a fatal message. - </summary> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String,System.Exception)"> - <summary> - Logs a fatal message. - </summary> - <param name="exception">The exception to log</param> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String,System.Object[])"> - <summary> - Logs a fatal message. - </summary> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.String,System.Object[])"> - <summary> - Logs a fatal message. - </summary> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.Exception,System.String,System.Object[])"> - <summary> - Logs a fatal message. - </summary> - <param name="exception">The exception to log</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs a fatal message. - </summary> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs a fatal message. - </summary> - <param name="exception">The exception to log</param> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.FatalError(System.String)"> - <summary> - Logs a fatal error message. - </summary> - <param name="message">The Message</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.FatalError(System.String,System.Exception)"> - <summary> - Logs a fatal error message. - </summary> - <param name="message">The Message</param> - <param name="exception">The Exception</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.FatalError(System.String,System.Object[])"> - <summary> - Logs a fatal error message. - </summary> - <param name="format">Message format</param> - <param name="args">Array of objects to write using format</param> - </member> - <member name="M:Castle.Core.Logging.ILogger.CreateChildLogger(System.String)"> - <summary> - Create a new child logger. - The name of the child logger is [current-loggers-name].[passed-in-name] - </summary> - <param name="loggerName">The Subname of this logger.</param> - <returns>The New ILogger instance.</returns> - <exception cref="T:System.ArgumentException">If the name has an empty element name.</exception> - </member> - <member name="P:Castle.Core.Logging.ILogger.IsDebugEnabled"> - <summary> - Determines if messages of priority "debug" will be logged. - </summary> - <value>True if "debug" messages will be logged.</value> - </member> - <member name="P:Castle.Core.Logging.ILogger.IsInfoEnabled"> - <summary> - Determines if messages of priority "info" will be logged. - </summary> - <value>True if "info" messages will be logged.</value> - </member> - <member name="P:Castle.Core.Logging.ILogger.IsWarnEnabled"> - <summary> - Determines if messages of priority "warn" will be logged. - </summary> - <value>True if "warn" messages will be logged.</value> - </member> - <member name="P:Castle.Core.Logging.ILogger.IsErrorEnabled"> - <summary> - Determines if messages of priority "error" will be logged. - </summary> - <value>True if "error" messages will be logged.</value> - </member> - <member name="P:Castle.Core.Logging.ILogger.IsFatalEnabled"> - <summary> - Determines if messages of priority "fatal" will be logged. - </summary> - <value>True if "fatal" messages will be logged.</value> - </member> - <member name="P:Castle.Core.Logging.ILogger.IsFatalErrorEnabled"> - <summary> - Determines if messages of priority "fatalError" will be logged. - </summary> - <value>True if "fatalError" messages will be logged.</value> - </member> - <member name="P:Castle.Core.Logging.IExtendedLogger.GlobalProperties"> - <summary> - Exposes the Global Context of the extended logger. - </summary> - </member> - <member name="P:Castle.Core.Logging.IExtendedLogger.ThreadProperties"> - <summary> - Exposes the Thread Context of the extended logger. - </summary> - </member> - <member name="P:Castle.Core.Logging.IExtendedLogger.ThreadStacks"> - <summary> - Exposes the Thread Stack of the extended logger. - </summary> - </member> - <member name="T:Castle.Core.Logging.LoggerLevel"> - <summary> - Supporting Logger levels. - </summary> - </member> - <member name="F:Castle.Core.Logging.LoggerLevel.Off"> - <summary> - Logging will be off - </summary> - </member> - <member name="F:Castle.Core.Logging.LoggerLevel.Fatal"> - <summary> - Fatal logging level - </summary> - </member> - <member name="F:Castle.Core.Logging.LoggerLevel.Error"> - <summary> - Error logging level - </summary> - </member> - <member name="F:Castle.Core.Logging.LoggerLevel.Warn"> - <summary> - Warn logging level - </summary> - </member> - <member name="F:Castle.Core.Logging.LoggerLevel.Info"> - <summary> - Info logging level - </summary> - </member> - <member name="F:Castle.Core.Logging.LoggerLevel.Debug"> - <summary> - Debug logging level - </summary> - </member> - <member name="T:Castle.Core.Logging.ConsoleLogger"> - <summary> - The Logger sending everything to the standard output streams. - This is mainly for the cases when you have a utility that - does not have a logger to supply. - </summary> - </member> - <member name="T:Castle.Core.Logging.LevelFilteredLogger"> - <summary> - The Level Filtered Logger class. This is a base clase which - provides a LogLevel attribute and reroutes all functions into - one Log method. - </summary> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.#ctor"> - <summary> - Creates a new <c>LevelFilteredLogger</c>. - </summary> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.InitializeLifetimeService"> - <summary> - Keep the instance alive in a remoting scenario - </summary> - <returns></returns> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String)"> - <summary> - Logs a debug message. - </summary> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String,System.Exception)"> - <summary> - Logs a debug message. - </summary> - <param name="exception">The exception to log</param> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.String,System.Object[])"> - <summary> - Logs a debug message. - </summary> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.Exception,System.String,System.Object[])"> - <summary> - Logs a debug message. - </summary> - <param name="exception">The exception to log</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs a debug message. - </summary> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs a debug message. - </summary> - <param name="exception">The exception to log</param> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String,System.Object[])"> - <summary> - Logs a debug message. - </summary> - <param name="format">Message format</param> - <param name="args">Array of objects to write using format</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String)"> - <summary> - Logs an info message. - </summary> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String,System.Exception)"> - <summary> - Logs an info message. - </summary> - <param name="exception">The exception to log</param> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.String,System.Object[])"> - <summary> - Logs an info message. - </summary> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.Exception,System.String,System.Object[])"> - <summary> - Logs an info message. - </summary> - <param name="exception">The exception to log</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs an info message. - </summary> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs an info message. - </summary> - <param name="exception">The exception to log</param> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String,System.Object[])"> - <summary> - Logs an info message. - </summary> - <param name="format">Message format</param> - <param name="args">Array of objects to write using format</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String)"> - <summary> - Logs a warn message. - </summary> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String,System.Exception)"> - <summary> - Logs a warn message. - </summary> - <param name="exception">The exception to log</param> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.String,System.Object[])"> - <summary> - Logs a warn message. - </summary> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.Exception,System.String,System.Object[])"> - <summary> - Logs a warn message. - </summary> - <param name="exception">The exception to log</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs a warn message. - </summary> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs a warn message. - </summary> - <param name="exception">The exception to log</param> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String,System.Object[])"> - <summary> - Logs a warn message. - </summary> - <param name="format">Message format</param> - <param name="args">Array of objects to write using format</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String)"> - <summary> - Logs an error message. - </summary> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String,System.Exception)"> - <summary> - Logs an error message. - </summary> - <param name="exception">The exception to log</param> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.String,System.Object[])"> - <summary> - Logs an error message. - </summary> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.Exception,System.String,System.Object[])"> - <summary> - Logs an error message. - </summary> - <param name="exception">The exception to log</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs an error message. - </summary> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs an error message. - </summary> - <param name="exception">The exception to log</param> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String,System.Object[])"> - <summary> - Logs an error message. - </summary> - <param name="format">Message format</param> - <param name="args">Array of objects to write using format</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String)"> - <summary> - Logs a fatal message. - </summary> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String,System.Exception)"> - <summary> - Logs a fatal message. - </summary> - <param name="exception">The exception to log</param> - <param name="message">The message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.String,System.Object[])"> - <summary> - Logs a fatal message. - </summary> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.Exception,System.String,System.Object[])"> - <summary> - Logs a fatal message. - </summary> - <param name="exception">The exception to log</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs a fatal message. - </summary> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> - <summary> - Logs a fatal message. - </summary> - <param name="exception">The exception to log</param> - <param name="formatProvider">The format provider to use</param> - <param name="format">Format string for the message to log</param> - <param name="args">Format arguments for the message to log</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String,System.Object[])"> - <summary> - Logs a fatal message. - </summary> - <param name="format">Message format</param> - <param name="args">Array of objects to write using format</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalError(System.String)"> - <summary> - Logs a fatal error message. - </summary> - <param name="message">The Message</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalError(System.String,System.Exception)"> - <summary> - Logs a fatal error message. - </summary> - <param name="message">The Message</param> - <param name="exception">The Exception</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalError(System.String,System.Object[])"> - <summary> - Logs a fatal error message. - </summary> - <param name="format">Message format</param> - <param name="args">Array of objects to write using format</param> - </member> - <member name="M:Castle.Core.Logging.LevelFilteredLogger.Log(Castle.Core.Logging.LoggerLevel,System.String,System.String,System.Exception)"> - <summary> - Implementors output the log content by implementing this method only. - Note that exception can be null - </summary> - <param name="loggerLevel"></param> - <param name="loggerName"></param> - <param name="message"></param> - <param name="exception"></param> - </member> - <member name="P:Castle.Core.Logging.LevelFilteredLogger.Level"> - <value> - The <c>LoggerLevel</c> that this logger - will be using. Defaults to <c>LoggerLevel.Off</c> - </value> - </member> - <member name="P:Castle.Core.Logging.LevelFilteredLogger.Name"> - <value> - The name that this logger will be using. - Defaults to <c>String.Empty</c> - </value> - </member> - <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsDebugEnabled"> - <summary> - Determines if messages of priority "debug" will be logged. - </summary> - <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Debug"/> bit</value> - </member> - <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsInfoEnabled"> - <summary> - Determines if messages of priority "info" will be logged. - </summary> - <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Info"/> bit</value> - </member> - <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsWarnEnabled"> - <summary> - Determines if messages of priority "warn" will be logged. - </summary> - <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Warn"/> bit</value> - </member> - <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsErrorEnabled"> - <summary> - Determines if messages of priority "error" will be logged. - </summary> - <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Error"/> bit</value> - </member> - <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsFatalEnabled"> - <summary> - Determines if messages of priority "fatal" will be logged. - </summary> - <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Fatal"/> bit</value> - </member> - <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsFatalErrorEnabled"> - <summary> - Determines if messages of priority "fatal" will be logged. - </summary> - <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Fatal"/> bit</value> - </member> - <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor"> - <summary> - Creates a new ConsoleLogger with the <c>Level</c> - set to <c>LoggerLevel.Debug</c> and the <c>Name</c> - set to <c>String.Empty</c>. - </summary> - </member> - <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(Castle.Core.Logging.LoggerLevel)"> - <summary> - Creates a new ConsoleLogger with the <c>Name</c> - set to <c>String.Empty</c>. - </summary> - <param name="logLevel">The logs Level.</param> - </member> - <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(System.String)"> - <summary> - Creates a new ConsoleLogger with the <c>Level</c> - set to <c>LoggerLevel.Debug</c>. - </summary> - <param name="name">The logs Name.</param> - </member> - <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(System.String,Castle.Core.Logging.LoggerLevel)"> - <summary> - Creates a new ConsoleLogger. - </summary> - <param name="name">The logs Name.</param> - <param name="logLevel">The logs Level.</param> - </member> - <member name="M:Castle.Core.Logging.ConsoleLogger.Log(Castle.Core.Logging.LoggerLevel,System.String,System.String,System.Exception)"> - <summary> - A Common method to log. - </summary> - <param name="loggerLevel">The level of logging</param> - <param name="loggerName">The name of the logger</param> - <param name="message">The Message</param> - <param name="exception">The Exception</param> - </member> - <member name="M:Castle.Core.Logging.ConsoleLogger.CreateChildLogger(System.String)"> - <summary> - Returns a new <c>ConsoleLogger</c> with the name - added after this loggers name, with a dot in between. - </summary> - <param name="loggerName">The added hierarchical name.</param> - <returns>A new <c>ConsoleLogger</c>.</returns> - </member> - <member name="T:Castle.Core.Logging.DiagnosticsLogger"> - <summary> - The Logger using standart Diagnostics namespace. - </summary> - </member> - <member name="M:Castle.Core.Logging.DiagnosticsLogger.#ctor(System.String)"> - <summary> - Creates a logger based on <see cref="T:System.Diagnostics.EventLog"/>. - </summary> - <param name="logName"><see cref="P:System.Diagnostics.EventLog.Log"/></param> - </member> - <member name="M:Castle.Core.Logging.DiagnosticsLogger.#ctor(System.String,System.String)"> - <summary> - Creates a logger based on <see cref="T:System.Diagnostics.EventLog"/>. - </summary> - <param name="logName"><see cref="P:System.Diagnostics.EventLog.Log"/></param> - <param name="source"><see cref="P:System.Diagnostics.EventLog.Source"/></param> - </member> - <member name="M:Castle.Core.Logging.DiagnosticsLogger.#ctor(System.String,System.String,System.String)"> - <summary> - Creates a logger based on <see cref="T:System.Diagnostics.EventLog"/>. - </summary> - <param name="logName"><see cref="P:System.Diagnostics.EventLog.Log"/></param> - <param name="machineName"><see cref="P:System.Diagnostics.EventLog.MachineName"/></param> - <param name="source"><see cref="P:System.Diagnostics.EventLog.Source"/></param> - </member> - <member name="T:Castle.Core.Logging.NullLogger"> - <summary> - The Null Logger class. This is useful for implementations where you need - to provide a logger to a utility class, but do not want any output from it. - It also helps when you have a utility that does not have a logger to supply. - </summary> - </member> - <member name="M:Castle.Core.Logging.NullLogger.#ctor"> - <summary> - Creates a new <c>NullLogger</c>. - </summary> - </member> - <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String)"> - <summary> - No-op. - </summary> - <param name="message">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String,System.Exception)"> - <summary> - No-op. - </summary> - <param name="exception">Ignored</param> - <param name="message">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.Exception,System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="exception">Ignored</param> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="formatProvider">Ignored</param> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="exception">Ignored</param> - <param name="formatProvider">Ignored</param> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.Info(System.String)"> - <summary> - No-op. - </summary> - <param name="message">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.Info(System.String,System.Exception)"> - <summary> - No-op. - </summary> - <param name="exception">Ignored</param> - <param name="message">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.Info(System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.Exception,System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="exception">Ignored</param> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="formatProvider">Ignored</param> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="exception">Ignored</param> - <param name="formatProvider">Ignored</param> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String)"> - <summary> - No-op. - </summary> - <param name="message">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String,System.Exception)"> - <summary> - No-op. - </summary> - <param name="exception">Ignored</param> - <param name="message">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.Exception,System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="exception">Ignored</param> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="formatProvider">Ignored</param> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="exception">Ignored</param> - <param name="formatProvider">Ignored</param> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.Error(System.String)"> - <summary> - No-op. - </summary> - <param name="message">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.Error(System.String,System.Exception)"> - <summary> - No-op. - </summary> - <param name="exception">Ignored</param> - <param name="message">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.Error(System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.Exception,System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="exception">Ignored</param> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="formatProvider">Ignored</param> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="exception">Ignored</param> - <param name="formatProvider">Ignored</param> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String)"> - <summary> - No-op. - </summary> - <param name="message">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String,System.Exception)"> - <summary> - No-op. - </summary> - <param name="exception">Ignored</param> - <param name="message">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.Exception,System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="exception">Ignored</param> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="formatProvider">Ignored</param> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="exception">Ignored</param> - <param name="formatProvider">Ignored</param> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.FatalError(System.String)"> - <summary> - No-op. - </summary> - <param name="message">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.FatalError(System.String,System.Exception)"> - <summary> - No-op. - </summary> - <param name="message">Ignored</param> - <param name="exception">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.FatalError(System.String,System.Object[])"> - <summary> - No-op. - </summary> - <param name="format">Ignored</param> - <param name="args">Ignored</param> - </member> - <member name="M:Castle.Core.Logging.NullLogger.CreateChildLogger(System.String)"> - <summary> - Returns this <c>NullLogger</c>. - </summary> - <param name="loggerName">Ignored</param> - <returns>This ILogger instance.</returns> - </member> - <member name="P:Castle.Core.Logging.NullLogger.IsDebugEnabled"> - <summary> - No-op. - </summary> - <value>false</value> - </member> - <member name="P:Castle.Core.Logging.NullLogger.IsInfoEnabled"> - <summary> - No-op. - </summary> - <value>false</value> - </member> - <member name="P:Castle.Core.Logging.NullLogger.IsWarnEnabled"> - <summary> - No-op. - </summary> - <value>false</value> - </member> - <member name="P:Castle.Core.Logging.NullLogger.IsErrorEnabled"> - <summary> - No-op. - </summary> - <value>false</value> - </member> - <member name="P:Castle.Core.Logging.NullLogger.IsFatalEnabled"> - <summary> - No-op. - </summary> - <value>false</value> - </member> - <member name="P:Castle.Core.Logging.NullLogger.IsFatalErrorEnabled"> - <summary> - No-op. - </summary> - <value>false</value> - </member> - <member name="P:Castle.Core.Logging.NullLogger.GlobalProperties"> - <summary> - Returns empty context properties. - </summary> - </member> - <member name="P:Castle.Core.Logging.NullLogger.ThreadProperties"> - <summary> - Returns empty context properties. - </summary> - </member> - <member name="P:Castle.Core.Logging.NullLogger.ThreadStacks"> - <summary> - Returns empty context stacks. - </summary> - </member> - <member name="T:Castle.Core.Logging.StreamLogger"> - <summary> - The Stream Logger class. This class can stream log information - to any stream, it is suitable for storing a log file to disk, - or to a <c>MemoryStream</c> for testing your components. - </summary> - <remarks> - This logger is not thread safe. - </remarks> - </member> - <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream)"> - <summary> - Creates a new <c>StreamLogger</c> with default encoding - and buffer size. Initial Level is set to Debug. - </summary> - <param name="name"> - The name of the log. - </param> - <param name="stream"> - The stream that will be used for logging, - seeking while the logger is alive - </param> - </member> - <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream,System.Text.Encoding)"> - <summary> - Creates a new <c>StreamLogger</c> with default buffer size. - Initial Level is set to Debug. - </summary> - <param name="name"> - The name of the log. - </param> - <param name="stream"> - The stream that will be used for logging, - seeking while the logger is alive - </param> - <param name="encoding"> - The encoding that will be used for this stream. - <see cref="T:System.IO.StreamWriter"/> - </param> - </member> - <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream,System.Text.Encoding,System.Int32)"> - <summary> - Creates a new <c>StreamLogger</c>. - Initial Level is set to Debug. - </summary> - <param name="name"> - The name of the log. - </param> - <param name="stream"> - The stream that will be used for logging, - seeking while the logger is alive - </param> - <param name="encoding"> - The encoding that will be used for this stream. - <see cref="T:System.IO.StreamWriter"/> - </param> - <param name="bufferSize"> - The buffer size that will be used for this stream. - <see cref="T:System.IO.StreamWriter"/> - </param> - </member> - <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.StreamWriter)"> - <summary> - Creates a new <c>StreamLogger</c> with - Debug as default Level. - </summary> - <param name="name">The name of the log.</param> - <param name="writer">The <c>StreamWriter</c> the log will write to.</param> - </member> - <member name="T:Castle.Core.Logging.TraceLogger"> - <summary> - The TraceLogger sends all logging to the System.Diagnostics.TraceSource - built into the .net framework. - </summary> - <remarks> - Logging can be configured in the system.diagnostics configuration - section. - - If logger doesn't find a source name with a full match it will - use source names which match the namespace partially. For example you can - configure from all castle components by adding a source name with the - name "Castle". - - If no portion of the namespace matches the source named "Default" will - be used. - </remarks> - </member> - <member name="M:Castle.Core.Logging.TraceLogger.#ctor(System.String)"> - <summary> - Build a new trace logger based on the named TraceSource - </summary> - <param name="name">The name used to locate the best TraceSource. In most cases comes from the using type's fullname.</param> - </member> - <member name="M:Castle.Core.Logging.TraceLogger.#ctor(System.String,Castle.Core.Logging.LoggerLevel)"> - <summary> - Build a new trace logger based on the named TraceSource - </summary> - <param name="name">The name used to locate the best TraceSource. In most cases comes from the using type's fullname.</param> - <param name="level">The default logging level at which this source should write messages. In almost all cases this - default value will be overridden in the config file. </param> - </member> - <member name="M:Castle.Core.Logging.TraceLogger.CreateChildLogger(System.String)"> - <summary> - Create a new child logger. - The name of the child logger is [current-loggers-name].[passed-in-name] - </summary> - <param name="loggerName">The Subname of this logger.</param> - <returns>The New ILogger instance.</returns> - </member> - <member name="T:Castle.Core.Configuration.AbstractConfiguration"> - <summary> - This is an abstract <see cref="T:Castle.Core.Configuration.IConfiguration"/> implementation - that deals with methods that can be abstracted away - from underlying implementations. - </summary> - <remarks> - <para><b>AbstractConfiguration</b> makes easier to implementers - to create a new version of <see cref="T:Castle.Core.Configuration.IConfiguration"/></para> - </remarks> - </member> - <member name="T:Castle.Core.Configuration.IConfiguration"> - <summary> - <see cref="T:Castle.Core.Configuration.IConfiguration"/> is a interface encapsulating a configuration node - used to retrieve configuration values. - </summary> - </member> - <member name="M:Castle.Core.Configuration.IConfiguration.GetValue(System.Type,System.Object)"> - <summary> - Gets the value of the node and converts it - into specified <see cref="T:System.Type"/>. - </summary> - <param name="type">The <see cref="T:System.Type"/></param> - <param name="defaultValue"> - The Default value returned if the conversion fails. - </param> - <returns>The Value converted into the specified type.</returns> - </member> - <member name="P:Castle.Core.Configuration.IConfiguration.Name"> - <summary> - Gets the name of the node. - </summary> - <value> - The Name of the node. - </value> - </member> - <member name="P:Castle.Core.Configuration.IConfiguration.Value"> - <summary> - Gets the value of the node. - </summary> - <value> - The Value of the node. - </value> - </member> - <member name="P:Castle.Core.Configuration.IConfiguration.Children"> - <summary> - Gets an <see cref="T:Castle.Core.Configuration.ConfigurationCollection"/> of <see cref="T:Castle.Core.Configuration.IConfiguration"/> - elements containing all node children. - </summary> - <value>The Collection of child nodes.</value> - </member> - <member name="P:Castle.Core.Configuration.IConfiguration.Attributes"> - <summary> - Gets an <see cref="T:System.Collections.IDictionary"/> of the configuration attributes. - </summary> - </member> - <member name="M:Castle.Core.Configuration.AbstractConfiguration.GetValue(System.Type,System.Object)"> - <summary> - Gets the value of the node and converts it - into specified <see cref="T:System.Type"/>. - </summary> - <param name="type">The <see cref="T:System.Type"/></param> - <param name="defaultValue"> - The Default value returned if the convertion fails. - </param> - <returns>The Value converted into the specified type.</returns> - </member> - <member name="P:Castle.Core.Configuration.AbstractConfiguration.Name"> - <summary> - Gets the name of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. - </summary> - <value> - The Name of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. - </value> - </member> - <member name="P:Castle.Core.Configuration.AbstractConfiguration.Value"> - <summary> - Gets the value of <see cref="T:Castle.Core.Configuration.IConfiguration"/>. - </summary> - <value> - The Value of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. - </value> - </member> - <member name="P:Castle.Core.Configuration.AbstractConfiguration.Children"> - <summary> - Gets all child nodes. - </summary> - <value>The <see cref="T:Castle.Core.Configuration.ConfigurationCollection"/> of child nodes.</value> - </member> - <member name="P:Castle.Core.Configuration.AbstractConfiguration.Attributes"> - <summary> - Gets node attributes. - </summary> - <value> - All attributes of the node. - </value> - </member> - <member name="T:Castle.Core.Configuration.ConfigurationCollection"> - <summary> - A collection of <see cref="T:Castle.Core.Configuration.IConfiguration"/> objects. - </summary> - </member> - <member name="M:Castle.Core.Configuration.ConfigurationCollection.#ctor"> - <summary> - Creates a new instance of <c>ConfigurationCollection</c>. - </summary> - </member> - <member name="M:Castle.Core.Configuration.ConfigurationCollection.#ctor(System.Collections.Generic.IEnumerable{Castle.Core.Configuration.IConfiguration})"> - <summary> - Creates a new instance of <c>ConfigurationCollection</c>. - </summary> - </member> - <member name="T:Castle.Core.Configuration.MutableConfiguration"> - <summary> - Summary description for MutableConfiguration. - </summary> - </member> - <member name="M:Castle.Core.Configuration.MutableConfiguration.#ctor(System.String)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.Core.Configuration.MutableConfiguration"/> class. - </summary> - <param name="name">The name.</param> - </member> - <member name="P:Castle.Core.Configuration.MutableConfiguration.Value"> - <summary> - Gets the value of <see cref="T:Castle.Core.Configuration.IConfiguration"/>. - </summary> - <value> - The Value of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. - </value> - </member> - <member name="T:Castle.Core.Configuration.Xml.XmlConfigurationDeserializer"> - <summary> - Pendent - </summary> - </member> - <member name="M:Castle.Core.Configuration.Xml.XmlConfigurationDeserializer.Deserialize(System.Xml.XmlNode)"> - <summary> - Deserializes the specified node into an abstract representation of configuration. - </summary> - <param name="node">The node.</param> - <returns></returns> - </member> - <member name="M:Castle.Core.Configuration.Xml.XmlConfigurationDeserializer.GetConfigValue(System.String)"> - <summary> - If a config value is an empty string we return null, this is to keep - backward compability with old code - </summary> - </member> - <member name="T:Castle.Core.Pair`2"> - <summary> - General purpose class to represent a standard pair of values. - </summary> - <typeparam name="TFirst">Type of the first value</typeparam> - <typeparam name="TSecond">Type of the second value</typeparam> - </member> - <member name="M:Castle.Core.Pair`2.#ctor(`0,`1)"> - <summary> - Constructs a pair with its values - </summary> - <param name="first"></param> - <param name="second"></param> - </member> - <member name="T:Castle.Core.ProxyServices"> - <summary> - List of utility methods related to dynamic proxy operations - </summary> - </member> - <member name="M:Castle.Core.ProxyServices.IsDynamicProxy(System.Type)"> - <summary> - Determines whether the specified type is a proxy generated by - DynamicProxy (1 or 2). - </summary> - <param name="type">The type.</param> - <returns> - <c>true</c> if it is a proxy; otherwise, <c>false</c>. - </returns> - </member> - <member name="T:Castle.Core.ReflectionBasedDictionaryAdapter"> - <summary> - Pendent - </summary> - </member> - <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.#ctor(System.Object)"> - <summary> - Initializes a new instance of the <see cref="T:Castle.Core.ReflectionBasedDictionaryAdapter"/> class. - </summary> - <param name="target">The target.</param> - </member> - <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Contains(System.Object)"> - <summary> - Determines whether the <see cref="T:System.Collections.IDictionary"/> object contains an element with the specified key. - </summary> - <param name="key">The key to locate in the <see cref="T:System.Collections.IDictionary"/> object.</param> - <returns> - true if the <see cref="T:System.Collections.IDictionary"/> contains an element with the key; otherwise, false. - </returns> - <exception cref="T:System.ArgumentNullException"> - <paramref name="key"/> is null. </exception> - </member> - <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Add(System.Object,System.Object)"> - <summary> - Adds an element with the provided key and value to the <see cref="T:System.Collections.IDictionary"/> object. - </summary> - <param name="key">The <see cref="T:System.Object"/> to use as the key of the element to add.</param> - <param name="value">The <see cref="T:System.Object"/> to use as the value of the element to add.</param> - <exception cref="T:System.ArgumentNullException"> - <paramref name="key"/> is null. </exception> - <exception cref="T:System.ArgumentException">An element with the same key already exists in the <see cref="T:System.Collections.IDictionary"/> object. </exception> - <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"/> is read-only.-or- The <see cref="T:System.Collections.IDictionary"/> has a fixed size. </exception> - </member> - <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Clear"> - <summary> - Removes all elements from the <see cref="T:System.Collections.IDictionary"/> object. - </summary> - <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"/> object is read-only. </exception> - </member> - <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#IDictionary#GetEnumerator"> - <summary> - Returns an <see cref="T:System.Collections.IDictionaryEnumerator"/> object for the <see cref="T:System.Collections.IDictionary"/> object. - </summary> - <returns> - An <see cref="T:System.Collections.IDictionaryEnumerator"/> object for the <see cref="T:System.Collections.IDictionary"/> object. - </returns> - </member> - <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Remove(System.Object)"> - <summary> - Removes the element with the specified key from the <see cref="T:System.Collections.IDictionary"/> object. - </summary> - <param name="key">The key of the element to remove.</param> - <exception cref="T:System.ArgumentNullException"> - <paramref name="key"/> is null. </exception> - <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"/> object is read-only.-or- The <see cref="T:System.Collections.IDictionary"/> has a fixed size. </exception> - </member> - <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#ICollection#CopyTo(System.Array,System.Int32)"> - <summary> - Copies the elements of the <see cref="T:System.Collections.ICollection"/> to an <see cref="T:System.Array"/>, starting at a particular <see cref="T:System.Array"/> index. - </summary> - <param name="array">The one-dimensional <see cref="T:System.Array"/> that is the destination of the elements copied from <see cref="T:System.Collections.ICollection"/>. The <see cref="T:System.Array"/> must have zero-based indexing.</param> - <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param> - <exception cref="T:System.ArgumentNullException"> - <paramref name="array"/> is null. </exception> - <exception cref="T:System.ArgumentOutOfRangeException"> - <paramref name="index"/> is less than zero. </exception> - <exception cref="T:System.ArgumentException"> - <paramref name="array"/> is multidimensional.-or- <paramref name="index"/> is equal to or greater than the length of <paramref name="array"/>.-or- The number of elements in the source <see cref="T:System.Collections.ICollection"/> is greater than the available space from <paramref name="index"/> to the end of the destination <paramref name="array"/>. </exception> - <exception cref="T:System.ArgumentException">The type of the source <see cref="T:System.Collections.ICollection"/> cannot be cast automatically to the type of the destination <paramref name="array"/>. </exception> - </member> - <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.GetEnumerator"> - <summary> - Returns an enumerator that iterates through a collection. - </summary> - <returns> - An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection. - </returns> - </member> - <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Item(System.Object)"> - <summary> - Gets or sets the <see cref="T:System.Object"/> with the specified key. - </summary> - <value></value> - </member> - <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Keys"> - <summary> - Gets an <see cref="T:System.Collections.ICollection"/> object containing the keys of the <see cref="T:System.Collections.IDictionary"/> object. - </summary> - <value></value> - <returns>An <see cref="T:System.Collections.ICollection"/> object containing the keys of the <see cref="T:System.Collections.IDictionary"/> object.</returns> - </member> - <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Values"> - <summary> - Gets an <see cref="T:System.Collections.ICollection"/> object containing the values in the <see cref="T:System.Collections.IDictionary"/> object. - </summary> - <value></value> - <returns>An <see cref="T:System.Collections.ICollection"/> object containing the values in the <see cref="T:System.Collections.IDictionary"/> object.</returns> - </member> - <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.IsReadOnly"> - <summary> - Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"/> object is read-only. - </summary> - <value></value> - <returns>true if the <see cref="T:System.Collections.IDictionary"/> object is read-only; otherwise, false.</returns> - </member> - <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#IDictionary#IsFixedSize"> - <summary> - Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"/> object has a fixed size. - </summary> - <value></value> - <returns>true if the <see cref="T:System.Collections.IDictionary"/> object has a fixed size; otherwise, false.</returns> - </member> - <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Count"> - <summary> - Gets the number of elements contained in the <see cref="T:System.Collections.ICollection"/>. - </summary> - <value></value> - <returns>The number of elements contained in the <see cref="T:System.Collections.ICollection"/>.</returns> - </member> - <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.SyncRoot"> - <summary> - Gets an object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"/>. - </summary> - <value></value> - <returns>An object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"/>.</returns> - </member> - <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.IsSynchronized"> - <summary> - Gets a value indicating whether access to the <see cref="T:System.Collections.ICollection"/> is synchronized (thread safe). - </summary> - <value></value> - <returns>true if access to the <see cref="T:System.Collections.ICollection"/> is synchronized (thread safe); otherwise, false.</returns> - </member> - <member name="T:Castle.Core.Resource.IResource"> - <summary> - Represents a 'streamable' resource. Can - be a file, a resource in an assembly. - </summary> - </member> - <member name="M:Castle.Core.Resource.IResource.GetStreamReader"> - <summary> - Returns a reader for the stream - </summary> - <remarks> - It's up to the caller to dispose the reader. - </remarks> - <returns></returns> - </member> - <member name="M:Castle.Core.Resource.IResource.GetStreamReader(System.Text.Encoding)"> - <summary> - Returns a reader for the stream - </summary> - <remarks> - It's up to the caller to dispose the reader. - </remarks> - <param name="encoding"></param> - <returns></returns> - </member> - <member name="M:Castle.Core.Resource.IResource.CreateRelative(System.String)"> - <summary> - Returns an instance of <see cref="T:Castle.Core.Resource.IResource"/> - created according to the <c>relativePath</c> - using itself as the root. - </summary> - <param name="relativePath"></param> - <returns></returns> - </member> - <member name="P:Castle.Core.Resource.IResource.FileBasePath"> - <summary> - - </summary> - <remarks> - Only valid for resources that - can be obtained through relative paths - </remarks> - </member> - <member name="T:Castle.Core.Resource.AbstractStreamResource"> - <summary> - - </summary> - </member> - <member name="F:Castle.Core.Resource.AbstractStreamResource.createStream"> - <summary> - This returns a new stream instance each time it is called. - It is the responsability of the caller to dispose of this stream - </summary> - </member> - <member name="T:Castle.Core.Resource.IResourceFactory"> - <summary> - Depicts the contract for resource factories. - </summary> - </member> - <member name="M:Castle.Core.Resource.IResourceFactory.Accept(Castle.Core.Resource.CustomUri)"> - <summary> - Used to check whether the resource factory - is able to deal with the given resource - identifier. - </summary> - <remarks> - Implementors should return <c>true</c> - only if the given identifier is supported - by the resource factory - </remarks> - <param name="uri"></param> - <returns></returns> - </member> - <member name="M:Castle.Core.Resource.IResourceFactory.Create(Castle.Core.Resource.CustomUri)"> - <summary> - Creates an <see cref="T:Castle.Core.Resource.IResource"/> instance - for the given resource identifier - </summary> - <param name="uri"></param> - <returns></returns> - </member> - <member name="M:Castle.Core.Resource.IResourceFactory.Create(Castle.Core.Resource.CustomUri,System.String)"> - <summary> - Creates an <see cref="T:Castle.Core.Resource.IResource"/> instance - for the given resource identifier - </summary> - <param name="uri"></param> - <param name="basePath"></param> - <returns></returns> - </member> - <member name="T:Castle.Core.Resource.FileResource"> - <summary> - - </summary> - </member> - <member name="T:Castle.Core.Resource.FileResourceFactory"> - <summary> - - </summary> - </member> - <member name="T:Castle.Core.Resource.StaticContentResource"> - <summary> - Adapts a static string content as an <see cref="T:Castle.Core.Resource.IResource"/> - </summary> - </member> - <member name="T:Castle.Core.Resource.UncResource"> - <summary> - Enable access to files on network shares - </summary> - </member> - <member name="T:Castle.Core.Smtp.IEmailSender"> - <summary> - Email sender abstraction. - </summary> - </member> - <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.String,System.String,System.String,System.String)"> - <summary> - Sends a mail message. - </summary> - <param name="from">From field</param> - <param name="to">To field</param> - <param name="subject">E-mail's subject</param> - <param name="messageText">message's body</param> - </member> - <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.Net.Mail.MailMessage)"> - <summary> - Sends a <see cref="T:System.Net.Mail.MailMessage">message</see>. - </summary> - <param name="message"><see cref="T:System.Net.Mail.MailMessage">Message</see> instance</param> - </member> - <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.Collections.Generic.IEnumerable{System.Net.Mail.MailMessage})"> - <summary> - Sends multiple <see cref="T:System.Net.Mail.MailMessage">messages</see>. - </summary> - <param name="messages">List of <see cref="T:System.Net.Mail.MailMessage">messages</see></param> - </member> - <member name="T:Castle.Core.Smtp.DefaultSmtpSender"> - <summary> - Default <see cref="T:Castle.Core.Smtp.IEmailSender"/> implementation. - </summary> - </member> - <member name="M:Castle.Core.Smtp.DefaultSmtpSender.#ctor"> - <summary> - Initializes a new instance of the <see cref="T:Castle.Core.Smtp.DefaultSmtpSender"/> class based on the <see cref="T:System.Net.Mail.SmtpClient"/> configuration provided in the application configuration file. - </summary> - <remarks> - This constructor is based on the default <see cref="T:System.Net.Mail.SmtpClient"/> configuration in the application configuration file. - </remarks> - </member> - <member name="M:Castle.Core.Smtp.DefaultSmtpSender.#ctor(System.String)"> - <summary> - This service implementation - requires a host name in order to work - </summary> - <param name="hostname">The smtp server name</param> - </member> - <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Send(System.String,System.String,System.String,System.String)"> - <summary> - Sends a message. - </summary> - <exception cref="T:System.ArgumentNullException">If any of the parameters is null</exception> - <param name="from">From field</param> - <param name="to">To field</param> - <param name="subject">e-mail's subject</param> - <param name="messageText">message's body</param> - </member> - <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Send(System.Net.Mail.MailMessage)"> - <summary> - Sends a message. - </summary> - <exception cref="T:System.ArgumentNullException">If the message is null</exception> - <param name="message">Message instance</param> - </member> - <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Configure(System.Net.Mail.SmtpClient)"> - <summary> - Configures the sender - with port information and eventual credential - informed - </summary> - <param name="smtpClient">Message instance</param> - </member> - <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Port"> - <summary> - Gets or sets the port used to - access the SMTP server - </summary> - </member> - <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Hostname"> - <summary> - Gets the hostname. - </summary> - <value>The hostname.</value> - </member> - <member name="P:Castle.Core.Smtp.DefaultSmtpSender.AsyncSend"> - <summary> - Gets or sets a value which is used to - configure if emails are going to be sent asyncrhonously or not. - </summary> - </member> - <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Timeout"> - <summary> - Gets or sets a value that specifies - the amount of time after which a synchronous Send call times out. - </summary> - </member> - <member name="P:Castle.Core.Smtp.DefaultSmtpSender.UseSsl"> - <summary> - Gets or sets a value indicating whether the email should be sent using - a secure communication channel. - </summary> - <value><c>true</c> if should use SSL; otherwise, <c>false</c>.</value> - </member> - <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Domain"> - <summary> - Gets or sets the domain. - </summary> - <value>The domain.</value> - </member> - <member name="P:Castle.Core.Smtp.DefaultSmtpSender.UserName"> - <summary> - Gets or sets the name of the user. - </summary> - <value>The name of the user.</value> - </member> - <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Password"> - <summary> - Gets or sets the password. - </summary> - <value>The password.</value> - </member> - <member name="P:Castle.Core.Smtp.DefaultSmtpSender.HasCredentials"> - <summary> - Gets a value indicating whether credentials were informed. - </summary> - <value> - <see langword="true"/> if this instance has credentials; otherwise, <see langword="false"/>. - </value> - </member> - </members> -</doc> +<?xml version="1.0"?> +<doc> + <assembly> + <name>Castle.Core</name> + </assembly> + <members> + <member name="T:Castle.Components.DictionaryAdapter.ReferenceAttribute"> + <summary> + Specifies assignment by reference rather than by copying. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IfExistsAttribute"> + <summary> + Suppresses any on-demand behaviors. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.RemoveIfEmptyAttribute"> + <summary> + Removes a property if null or empty string, guid or collection. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.RemoveIfAttribute"> + <summary> + Removes a property if matches value. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryBehaviorAttribute"> + <summary> + Assigns a specific dictionary key. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryBehavior"> + <summary> + Defines the contract for customizing dictionary access. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryBehavior.Copy"> + <summary> + Copies the dictionary behavior. + </summary> + <returns>null if should not be copied. Otherwise copy.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.IDictionaryBehavior.ExecutionOrder"> + <summary> + Determines relative order to apply related behaviors. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter"> + <summary> + Defines the contract for updating dictionary values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Sets the stored dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="value">The stored value.</param> + <param name="property">The property.</param> + <returns>true if the property should be stored.</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.ICondition"> + <summary> + Contract for value matching. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.VolatileAttribute"> + <summary> + Indicates that underlying values are changeable and should not be cached. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryInitializer"> + <summary> + Contract for dictionary initialization. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryInitializer.Initialize(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.Object[])"> + <summary> + Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="behaviors">The dictionary behaviors.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapterVisitor"> + <summary> + Abstract implementation of <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"/>. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"> + <summary> + Conract for traversing a <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryCreate"> + <summary> + Contract for creating additional Dictionary adapters. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"> + <summary> + Contract for manipulating the Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryEdit"> + <summary> + Contract for editing the Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryNotify"> + <summary> + Contract for managing Dictionary adapter notifications. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryValidate"> + <summary> + Contract for validating Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder"> + <summary> + Defines the contract for building <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryBehavior"/>s. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder.BuildBehaviors"> + <summary> + Builds the dictionary behaviors. + </summary> + <returns></returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter"> + <summary> + Abstract adapter for the <see cref="T:System.Collections.IDictionary"/> support + needed by the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory"/> + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Add(System.Object,System.Object)"> + <summary> + Adds an element with the provided key and value to the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <param name="key">The <see cref="T:System.Object"></see> to use as the key of the element to add.</param> + <param name="value">The <see cref="T:System.Object"></see> to use as the value of the element to add.</param> + <exception cref="T:System.ArgumentException">An element with the same key already exists in the <see cref="T:System.Collections.IDictionary"></see> object. </exception> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Clear"> + <summary> + Removes all elements from the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Contains(System.Object)"> + <summary> + Determines whether the <see cref="T:System.Collections.IDictionary"></see> object contains an element with the specified key. + </summary> + <param name="key">The key to locate in the <see cref="T:System.Collections.IDictionary"></see> object.</param> + <returns> + true if the <see cref="T:System.Collections.IDictionary"></see> contains an element with the key; otherwise, false. + </returns> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.GetEnumerator"> + <summary> + Returns an <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <returns> + An <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object. + </returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Remove(System.Object)"> + <summary> + Removes the element with the specified key from the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <param name="key">The key of the element to remove.</param> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.CopyTo(System.Array,System.Int32)"> + <summary> + Copies the elements of the <see cref="T:System.Collections.ICollection"></see> to an <see cref="T:System.Array"></see>, starting at a particular <see cref="T:System.Array"></see> index. + </summary> + <param name="array">The one-dimensional <see cref="T:System.Array"></see> that is the destination of the elements copied from <see cref="T:System.Collections.ICollection"></see>. The <see cref="T:System.Array"></see> must have zero-based indexing.</param> + <param name="index">The zero-based index in array at which copying begins.</param> + <exception cref="T:System.ArgumentNullException">array is null. </exception> + <exception cref="T:System.ArgumentException">The type of the source <see cref="T:System.Collections.ICollection"></see> cannot be cast automatically to the type of the destination array. </exception> + <exception cref="T:System.ArgumentOutOfRangeException">index is less than zero. </exception> + <exception cref="T:System.ArgumentException">array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source <see cref="T:System.Collections.ICollection"></see> is greater than the available space from index to the end of the destination array. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.System#Collections#IEnumerable#GetEnumerator"> + <summary> + Returns an enumerator that iterates through a collection. + </summary> + <returns> + An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection. + </returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsFixedSize"> + <summary> + Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size. + </summary> + <value></value> + <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size; otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsReadOnly"> + <summary> + Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object is read-only. + </summary> + <value></value> + <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object is read-only; otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Keys"> + <summary> + Gets an <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <value></value> + <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Values"> + <summary> + Gets an <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <value></value> + <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Item(System.Object)"> + <summary> + Gets or sets the <see cref="T:System.Object"/> with the specified key. + </summary> + <value></value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Count"> + <summary> + Gets the number of elements contained in the <see cref="T:System.Collections.ICollection"></see>. + </summary> + <value></value> + <returns>The number of elements contained in the <see cref="T:System.Collections.ICollection"></see>.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsSynchronized"> + <summary> + Gets a value indicating whether access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe). + </summary> + <value></value> + <returns>true if access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe); otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>. + </summary> + <value></value> + <returns>An object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>.</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.BindingList`1"> + <summary> + Provides a generic collection that supports data binding. + </summary> + <remarks> + This class wraps the CLR <see cref="T:System.ComponentModel.BindingList`1"/> + in order to implement the Castle-specific <see cref="T:Castle.Components.DictionaryAdapter.IBindingList`1"/>. + </remarks> + <typeparam name="T">The type of elements in the list.</typeparam> + </member> + <member name="M:Castle.Components.DictionaryAdapter.BindingList`1.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.BindingList`1"/> class + using default values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.BindingList`1.#ctor(System.Collections.Generic.IList{`0})"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.BindingList`1"/> class + with the specified list. + </summary> + <param name="list"> + An <see cref="T:System.Collections.Generic.IList`1"/> of items + to be contained in the <see cref="T:Castle.Components.DictionaryAdapter.BindingList`1"/>. + </param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.BindingList`1.#ctor(System.ComponentModel.BindingList{`0})"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.BindingList`1"/> class + wrapping the specified <see cref="T:System.ComponentModel.BindingList`1"/> instance. + </summary> + <param name="list"> + A <see cref="T:System.ComponentModel.BindingList`1"/> + to be wrapped by the <see cref="T:Castle.Components.DictionaryAdapter.BindingList`1"/>. + </param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter"> + <summary> + Defines the contract for retrieving dictionary values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the effective dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="property">The property.</param> + <param name="ifExists">true if return only existing.</param> + <returns>The effective property value.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.Xml.XmlAdapter.#ctor(Castle.Components.DictionaryAdapter.Xml.IXmlNode,Castle.Components.DictionaryAdapter.Xml.XmlReferenceManager)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.Xml.XmlAdapter"/> class + that represents a child object in a larger object graph. + </summary> + <param name="node"></param> + <param name="references"></param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer"> + <summary> + Contract for dictionary meta-data initialization. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer.Initialize(Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> + <summary> + Initializes the given <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> object. + </summary> + <param name="factory">The dictionary adapter factory.</param> + <param name="dictionaryMeta">The dictionary adapter meta.</param> + + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer.ShouldHaveBehavior(System.Object)"> + <summary> + Determines whether the given behavior should be included in a new + <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> object. + </summary> + <param name="behavior">A dictionary behavior or annotation.</param> + <returns>True if the behavior should be included; otherwise, false.</returns> + <remarks> + <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer"/> behaviors are always included, + regardless of the result of this method. + </remarks> + + </member> + <member name="M:Castle.Core.Internal.CollectionExtensions.IsNullOrEmpty(System.Collections.IEnumerable)"> + <summary> + Checks whether or not collection is null or empty. Assumes colleciton can be safely enumerated multiple times. + </summary> + <param name = "this"></param> + <returns></returns> + </member> + <member name="F:Castle.Core.Internal.InternalsVisible.ToCastleCore"> + <summary> + Constant to use when making assembly internals visible to Castle.Core + <c>[assembly: InternalsVisibleTo(CoreInternalsVisible.ToCastleCore)]</c> + </summary> + </member> + <member name="F:Castle.Core.Internal.InternalsVisible.ToDynamicProxyGenAssembly2"> + <summary> + Constant to use when making assembly internals visible to proxy types generated by DynamicProxy. Required when proxying internal types. + <c>[assembly: InternalsVisibleTo(CoreInternalsVisible.ToDynamicProxyGenAssembly2)]</c> + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.ComponentAttribute"> + <summary> + Identifies a property should be represented as a nested component. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder"> + <summary> + Defines the contract for building typed dictionary keys. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Builds the specified key. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The current key.</param> + <param name="property">The property.</param> + <returns>The updated key</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.NoPrefix"> + <summary> + Applies no prefix. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.Prefix"> + <summary> + Gets or sets the prefix. + </summary> + <value>The prefix.</value> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterAttribute"> + <summary> + Identifies the dictionary adapter types. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.FetchAttribute"> + <summary> + Identifies an interface or property to be pre-fetched. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor"> + <summary> + Instructs fetching to occur. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor(System.Boolean)"> + <summary> + Instructs fetching according to <paramref name="fetch"/> + </summary> + <param name="fetch"></param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.FetchAttribute.Fetch"> + <summary> + Gets whether or not fetching should occur. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.GroupAttribute"> + <summary> + Assigns a property to a group. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object)"> + <summary> + Constructs a group assignment. + </summary> + <param name="group">The group name.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object[])"> + <summary> + Constructs a group assignment. + </summary> + <param name="group">The group name.</param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.GroupAttribute.Group"> + <summary> + Gets the group the property is assigned to. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeyAttribute"> + <summary> + Assigns a specific dictionary key. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class. + </summary> + <param name="key">The key.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String[])"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class. + </summary> + <param name="keys">The compound key.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"> + <summary> + Assigns a prefix to the keyed properties of an interface. + </summary> + <remarks> + Key prefixes are not inherited by sub-interfaces. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor"> + <summary> + Initializes a default instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class. + </summary> + <param name="keyPrefix">The prefix for the keyed properties of the interface.</param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.KeyPrefix"> + <summary> + Gets the prefix key added to the properties of the interface. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute"> + <summary> + Substitutes part of key with another string. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute.#ctor(System.String,System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute"/> class. + </summary> + <param name="oldValue">The old value.</param> + <param name="newValue">The new value.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.MultiLevelEditAttribute"> + <summary> + Requests support for multi-level editing. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.NewGuidAttribute"> + <summary> + Generates a new GUID on demand. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.OnDemandAttribute"> + <summary> + Support for on-demand value resolution. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.StringFormatAttribute"> + <summary> + Provides simple string formatting from existing properties. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Format"> + <summary> + Gets the string format. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Properties"> + <summary> + Gets the format properties. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.StringListAttribute"> + <summary> + Identifies a property should be represented as a delimited string value. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringListAttribute.Separator"> + <summary> + Gets the separator. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.StringValuesAttribute"> + <summary> + Converts all properties to strings. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringValuesAttribute.Format"> + <summary> + Gets or sets the format. + </summary> + <value>The format.</value> + </member> + <member name="T:Castle.Components.DictionaryAdapter.SuppressNotificationsAttribute"> + <summary> + Suppress property change notifications. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer"> + <summary> + Contract for property descriptor initialization. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer.Initialize(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Object[])"> + <summary> + Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="propertyDescriptor">The property descriptor.</param> + <param name="behaviors">The property behaviors.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.TypeKeyPrefixAttribute"> + <summary> + Assigns a prefix to the keyed properties using the interface name. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter"> + <summary> + Manages conversion between property values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.#ctor(System.ComponentModel.TypeConverter)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter"/> class. + </summary> + <param name="converter">The converter.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the effective dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="property">The property.</param> + <param name="ifExists">true if return only existing.</param> + <returns>The effective property value.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.ExecutionOrder"> + <summary> + + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory"> + <summary> + Uses Reflection.Emit to expose the properties of a dictionary + through a dynamic implementation of a typed interface. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory"> + <summary> + Defines the contract for building typed dictionary adapters. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <typeparam name="T">The typed interface.</typeparam> + <param name="dictionary">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="dictionary">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="dictionary">The underlying source of properties.</param> + <param name="descriptor">The property descriptor.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Collections.Specialized.NameValueCollection)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.Specialized.NameValueCollection"/>. + </summary> + <typeparam name="T">The typed interface.</typeparam> + <param name="nameValues">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the namedValues.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.Specialized.NameValueCollection)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.Specialized.NameValueCollection"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="nameValues">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the namedValues.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Xml.XmlNode)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Xml.XmlNode"/>. + </summary> + <typeparam name="T">The typed interface.</typeparam> + <param name="xmlNode">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the <see cref="T:System.Xml.XmlNode"/>.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Xml.XmlNode)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Xml.XmlNode"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="xmlNode">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the <see cref="T:System.Xml.XmlNode"/>.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <param name="descriptor">The property descriptor.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <param name="other">Another <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> from which to copy behaviors.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``2(System.Collections.Generic.IDictionary{System.String,``1})"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Type,System.Collections.Generic.IDictionary{System.String,``0})"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Collections.Specialized.NameValueCollection)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.Specialized.NameValueCollection)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Xml.XmlNode)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Xml.XmlNode)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> + <inheritdoc /> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryValidator"> + <summary> + Contract for dictionary validation. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.IsValid(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> + <summary> + Determines if <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> is valid. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <returns>true if valid.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Validate(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> + <summary> + Validates the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <returns>The error summary information.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Validate(Castle.Components.DictionaryAdapter.IDictionaryAdapter,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Validates the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> for a property. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="property">The property to validate.</param> + <returns>The property summary information.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Invalidate(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> + <summary> + Invalidates any results cached by the validator. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter"> + <summary> + + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.#ctor(System.Collections.Specialized.NameValueCollection)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter"/> class. + </summary> + <param name="nameValues">The name values.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.Contains(System.Object)"> + <summary> + Determines whether the <see cref="T:System.Collections.IDictionary"></see> object contains an element with the specified key. + </summary> + <param name="key">The key to locate in the <see cref="T:System.Collections.IDictionary"></see> object.</param> + <returns> + true if the <see cref="T:System.Collections.IDictionary"></see> contains an element with the key; otherwise, false. + </returns> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.Adapt(System.Collections.Specialized.NameValueCollection)"> + <summary> + Adapts the specified name values. + </summary> + <param name="nameValues">The name values.</param> + <returns></returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.IsReadOnly"> + <summary> + Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object is read-only. + </summary> + <value></value> + <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object is read-only; otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.Item(System.Object)"> + <summary> + Gets or sets the <see cref="T:System.Object"/> with the specified key. + </summary> + <value></value> + </member> + <member name="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"> + <summary> + Describes a dictionary property. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor"> + <summary> + Initializes an empty <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(System.Reflection.PropertyInfo,System.Object[])"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + <param name="property">The property.</param> + <param name="annotations">The annotations.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(System.Object[])"> + <summary> + Initializes a new instance <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Copies an existinginstance of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + <param name="source"></param> + <param name="copyBehaviors"></param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets the key. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="descriptor">The descriptor.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the property value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="descriptor">The descriptor.</param> + <param name="ifExists">true if return only existing.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Sets the property value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="value">The value.</param> + <param name="descriptor">The descriptor.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehavior(Castle.Components.DictionaryAdapter.IDictionaryBehavior)"> + <summary> + Adds a single behavior. + </summary> + <param name="behavior">The behavior.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehaviors(Castle.Components.DictionaryAdapter.IDictionaryBehavior[])"> + <summary> + Adds the behaviors. + </summary> + <param name="behaviors">The behaviors.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehaviors(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryBehavior})"> + <summary> + Adds the behaviors. + </summary> + <param name="behaviors">The behaviors.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyBehaviors(Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Copies the behaviors to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="other"></param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.Copy"> + <summary> + Copies the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <returns></returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.ExecutionOrder"> + <summary> + + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyName"> + <summary> + Gets the property name. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyType"> + <summary> + Gets the property type. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Property"> + <summary> + Gets the property. + </summary> + <value>The property.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.IsDynamicProperty"> + <summary> + Returns true if the property is dynamic. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.State"> + <summary> + Gets additional state. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Fetch"> + <summary> + Determines if property should be fetched. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.IfExists"> + <summary> + Determines if property must exist first. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.SuppressNotifications"> + <summary> + Determines if notifications should occur. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Annotations"> + <summary> + Gets the property behaviors. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.TypeConverter"> + <summary> + Gets the type converter. + </summary> + <value>The type converter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.ExtendedProperties"> + <summary> + Gets the extended properties. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Behaviors"> + <summary> + Gets the setter. + </summary> + <value>The setter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.KeyBuilders"> + <summary> + Gets the key builders. + </summary> + <value>The key builders.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Setters"> + <summary> + Gets the setter. + </summary> + <value>The setter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Getters"> + <summary> + Gets the getter. + </summary> + <value>The getter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Initializers"> + <summary> + Gets the initializers. + </summary> + <value>The initializers.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.MetaInitializers"> + <summary> + Gets the meta-data initializers. + </summary> + <value>The meta-data initializers.</value> + </member> + <member name="T:Castle.Core.Internal.AttributesUtil"> + <summary> + Helper class for retrieving attributes. + </summary> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetAttribute``1(System.Reflection.ICustomAttributeProvider)"> + <summary> + Gets the attribute. + </summary> + <param name = "member">The member.</param> + <returns>The member attribute.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetAttributes``1(System.Reflection.ICustomAttributeProvider)"> + <summary> + Gets the attributes. Does not consider inherited attributes! + </summary> + <param name = "member">The member.</param> + <returns>The member attributes.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeAttribute``1(System.Type)"> + <summary> + Gets the type attribute. + </summary> + <param name = "type">The type.</param> + <returns>The type attribute.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeAttributes``1(System.Type)"> + <summary> + Gets the type attributes. + </summary> + <param name = "type">The type.</param> + <returns>The type attributes.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeConverter(System.Reflection.MemberInfo)"> + <summary> + Gets the type converter. + </summary> + <param name = "member">The member.</param> + <returns></returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.HasAttribute``1(System.Reflection.ICustomAttributeProvider)"> + <summary> + Gets the attribute. + </summary> + <param name = "member">The member.</param> + <returns>The member attribute.</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDynamicValue`1"> + <summary> + Contract for typed dynamic value resolution. + </summary> + <typeparam name="T"></typeparam> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDynamicValue"> + <summary> + Contract for dynamic value resolution. + </summary> + </member> + <member name="T:Castle.Core.Logging.LoggerLevel"> + <summary> + Supporting Logger levels. + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Off"> + <summary> + Logging will be off + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Fatal"> + <summary> + Fatal logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Error"> + <summary> + Error logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Warn"> + <summary> + Warn logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Info"> + <summary> + Info logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Debug"> + <summary> + Debug logging level + </summary> + </member> + <member name="T:Castle.DynamicProxy.IInvocation"> + <summary> + Encapsulates an invocation of a proxied method. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.GetArgumentValue(System.Int32)"> + <summary> + Gets the value of the argument at the specified <paramref name = "index" />. + </summary> + <param name = "index">The index.</param> + <returns>The value of the argument at the specified <paramref name = "index" />.</returns> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.GetConcreteMethod"> + <summary> + Returns the concrete instantiation of the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> on the proxy, with any generic + parameters bound to real types. + </summary> + <returns> + The concrete instantiation of the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> on the proxy, or the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> if + not a generic method. + </returns> + <remarks> + Can be slower than calling <see cref="P:Castle.DynamicProxy.IInvocation.Method"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.GetConcreteMethodInvocationTarget"> + <summary> + Returns the concrete instantiation of <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>, with any + generic parameters bound to real types. + For interface proxies, this will point to the <see cref="T:System.Reflection.MethodInfo"/> on the target class. + </summary> + <returns>The concrete instantiation of <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>, or + <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/> if not a generic method.</returns> + <remarks> + In debug builds this can be slower than calling <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.Proceed"> + <summary> + Proceeds the call to the next interceptor in line, and ultimately to the target method. + </summary> + <remarks> + Since interface proxies without a target don't have the target implementation to proceed to, + it is important, that the last interceptor does not call this method, otherwise a + <see cref="T:System.NotImplementedException"/> will be thrown. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.SetArgumentValue(System.Int32,System.Object)"> + <summary> + Overrides the value of an argument at the given <paramref name="index"/> with the + new <paramref name="value"/> provided. + </summary> + <remarks> + This method accepts an <see cref="T:System.Object"/>, however the value provided must be compatible + with the type of the argument defined on the method, otherwise an exception will be thrown. + </remarks> + <param name="index">The index of the argument to override.</param> + <param name="value">The new value for the argument.</param> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.Arguments"> + <summary> + Gets the arguments that the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> has been invoked with. + </summary> + <value>The arguments the method was invoked with.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.GenericArguments"> + <summary> + Gets the generic arguments of the method. + </summary> + <value>The generic arguments, or null if not a generic method.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.InvocationTarget"> + <summary> + Gets the object on which the invocation is performed. This is different from proxy object + because most of the time this will be the proxy target object. + </summary> + <seealso cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> + <value>The invocation target.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.Method"> + <summary> + Gets the <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked on the proxy. + </summary> + <value>The <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"> + <summary> + For interface proxies, this will point to the <see cref="T:System.Reflection.MethodInfo"/> on the target class. + </summary> + <value>The method invocation target.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.Proxy"> + <summary> + Gets the proxy object on which the intercepted method is invoked. + </summary> + <value>Proxy object on which the intercepted method is invoked.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.ReturnValue"> + <summary> + Gets or sets the return value of the method. + </summary> + <value>The return value of the method.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.TargetType"> + <summary> + Gets the type of the target object for the intercepted method. + </summary> + <value>The type of the target object.</value> + </member> + <member name="T:Castle.DynamicProxy.IProxyGenerationHook"> + <summary> + Used during the target type inspection process. Implementors have a chance to customize the + proxy generation process. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyGenerationHook.MethodsInspected"> + <summary> + Invoked by the generation process to notify that the whole process has completed. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyGenerationHook.NonProxyableMemberNotification(System.Type,System.Reflection.MemberInfo)"> + <summary> + Invoked by the generation process to notify that a member was not marked as virtual. + </summary> + <param name = "type">The type which declares the non-virtual member.</param> + <param name = "memberInfo">The non-virtual member.</param> + <remarks> + This method gives an opportunity to inspect any non-proxyable member of a type that has + been requested to be proxied, and if appropriate - throw an exception to notify the caller. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IProxyGenerationHook.ShouldInterceptMethod(System.Type,System.Reflection.MethodInfo)"> + <summary> + Invoked by the generation process to determine if the specified method should be proxied. + </summary> + <param name = "type">The type which declares the given method.</param> + <param name = "methodInfo">The method to inspect.</param> + <returns>True if the given method should be proxied; false otherwise.</returns> + </member> + <member name="T:Castle.DynamicProxy.Contributors.ITypeContributor"> + <summary> + Interface describing elements composing generated type + </summary> + </member> + <member name="M:Castle.DynamicProxy.Contributors.MembersCollector.AcceptMethod(System.Reflection.MethodInfo,System.Boolean,Castle.DynamicProxy.IProxyGenerationHook)"> + <summary> + Performs some basic screening and invokes the <see cref="T:Castle.DynamicProxy.IProxyGenerationHook"/> + to select methods. + </summary> + <param name="method"></param> + <param name="onlyVirtuals"></param> + <param name="hook"></param> + <returns></returns> + </member> + <member name="T:Castle.DynamicProxy.IAttributeDisassembler"> + <summary> + Provides functionality for disassembling instances of attributes to CustomAttributeBuilder form, during the process of emiting new types by Dynamic Proxy. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IAttributeDisassembler.Disassemble(System.Attribute)"> + <summary> + Disassembles given attribute instance back to corresponding CustomAttributeBuilder. + </summary> + <param name="attribute">An instance of attribute to disassemble</param> + <returns><see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> corresponding 1 to 1 to given attribute instance, or null reference.</returns> + <remarks> + Implementers should return <see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> that corresponds to given attribute instance 1 to 1, + that is after calling specified constructor with specified arguments, and setting specified properties and fields with values specified + we should be able to get an attribute instance identical to the one passed in <paramref name="attribute"/>. Implementer can return null + if it wishes to opt out of replicating the attribute. Notice however, that for some cases, like attributes passed explicitly by the user + it is illegal to return null, and doing so will result in exception. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.HandleError(System.Type,System.Exception)"> + <summary> + Handles error during disassembly process + </summary> + <param name = "attributeType">Type of the attribute being disassembled</param> + <param name = "exception">Exception thrown during the process</param> + <returns>usually null, or (re)throws the exception</returns> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.InitializeConstructorArgs(System.Type,System.Attribute,System.Reflection.ParameterInfo[])"> + <summary> + Here we try to match a constructor argument to its value. + Since we can't get the values from the assembly, we use some heuristics to get it. + a/ we first try to match all the properties on the attributes by name (case insensitive) to the argument + b/ if we fail we try to match them by property type, with some smarts about convertions (i,e: can use Guid for string). + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ReplaceIfBetterMatch(System.Reflection.ParameterInfo,System.Reflection.PropertyInfo,System.Reflection.PropertyInfo)"> + <summary> + We have the following rules here. + Try to find a matching type, failing that, if the parameter is string, get the first property (under the assumption that + we can convert it. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ConvertValue(System.Object,System.Type)"> + <summary> + Attributes can only accept simple types, so we return null for null, + if the value is passed as string we call to string (should help with converting), + otherwise, we use the value as is (enums, integer, etc). + </summary> + </member> + <member name="M:Castle.DynamicProxy.Internal.TypeUtil.GetAllInterfaces(System.Type[])"> + <summary> + Returns list of all unique interfaces implemented given types, including their base interfaces. + </summary> + <param name="types"> </param> + <returns> </returns> + </member> + <member name="T:Castle.DynamicProxy.Serialization.CacheMappingsAttribute"> + <summary> + Applied to the assemblies saved by <see cref="T:Castle.DynamicProxy.ModuleScope"/> in order to persist the cache data included in the persisted assembly. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.BaseProxyGenerator"> + <summary> + Base class that exposes the common functionalities + to proxy generation. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.AddMappingNoCheck(System.Type,Castle.DynamicProxy.Contributors.ITypeContributor,System.Collections.Generic.IDictionary{System.Type,Castle.DynamicProxy.Contributors.ITypeContributor})"> + <summary> + It is safe to add mapping (no mapping for the interface exists) + </summary> + <param name = "implementer"></param> + <param name = "interface"></param> + <param name = "mapping"></param> + </member> + <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.GenerateParameterlessConstructor(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Type,Castle.DynamicProxy.Generators.Emitters.SimpleAST.FieldReference)"> + <summary> + Generates a parameters constructor that initializes the proxy + state with <see cref="T:Castle.DynamicProxy.StandardInterceptor"/> just to make it non-null. + <para> + This constructor is important to allow proxies to be XML serializable + </para> + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.InvocationTypeGenerator.GetBaseCtorArguments(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Reflection.ConstructorInfo@)"> + <summary> + Generates the constructor for the class that extends + <see cref="T:Castle.DynamicProxy.AbstractInvocation"/> + </summary> + <param name="targetFieldType"></param> + <param name="proxyGenerationOptions"></param> + <param name="baseConstructor"></param> + </member> + <member name="T:Castle.DynamicProxy.DefaultProxyBuilder"> + <summary> + Default implementation of <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> interface producing in-memory proxy assemblies. + </summary> + </member> + <member name="T:Castle.DynamicProxy.IProxyBuilder"> + <summary> + Abstracts the implementation of proxy type construction. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type for given <paramref name="classToProxy"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided. + </summary> + <param name="classToProxy">The class type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified class and interfaces. + Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.) + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.ClassProxyGenerator"/> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type that proxies calls to <paramref name="interfaceToProxy"/> members on <paramref name="targetType"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided. + </summary> + <param name="interfaceToProxy">The interface type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="targetType">Type implementing <paramref name="interfaceToProxy"/> on which calls to the interface members should be intercepted.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified interface that 'proceeds' executions to the specified target. + Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.) + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator"/> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type for given <paramref name="interfaceToProxy"/> and <parmaref name="additionalInterfacesToProxy"/> that delegates all calls to the provided interceptors and allows interceptors to switch the actual target of invocation. + </summary> + <param name="interfaceToProxy">The interface type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified interface(s) that delegate all executions to the specified interceptors + and uses an instance of the interface as their targets (i.e. <see cref="P:Castle.DynamicProxy.IInvocation.InvocationTarget"/>), rather than a class. All <see cref="T:Castle.DynamicProxy.IInvocation"/> classes should then implement <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface, + to allow interceptors to switch invocation target with instance of another type implementing called interface. + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetInterfaceGenerator"/> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type for given <paramref name="interfaceToProxy"/> that delegates all calls to the provided interceptors. + </summary> + <param name="interfaceToProxy">The interface type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified interface and additional interfaces that delegate all executions to the specified interceptors. + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithoutTargetGenerator"/> + </member> + <member name="P:Castle.DynamicProxy.IProxyBuilder.Logger"> + <summary> + Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> logs to. + </summary> + </member> + <member name="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope"> + <summary> + Gets the <see cref="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope"/> associated with this builder. + </summary> + <value>The module scope associated with this builder.</value> + </member> + <member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class with new <see cref="P:Castle.DynamicProxy.DefaultProxyBuilder.ModuleScope"/>. + </summary> + </member> + <member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor(Castle.DynamicProxy.ModuleScope)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class. + </summary> + <param name="scope">The module scope for generated proxy types.</param> + </member> + <member name="M:Castle.DynamicProxy.Internal.AttributeUtil.AddDisassembler``1(Castle.DynamicProxy.IAttributeDisassembler)"> + <summary> + Registers custom disassembler to handle disassembly of specified type of attributes. + </summary> + <typeparam name="TAttribute">Type of attributes to handle</typeparam> + <param name="disassembler">Disassembler converting existing instances of Attributes to CustomAttributeBuilders</param> + <remarks> + When disassembling an attribute Dynamic Proxy will first check if an custom disassembler has been registered to handle attributes of that type, + and if none is found, it'll use the <see cref="P:Castle.DynamicProxy.Internal.AttributeUtil.FallbackDisassembler"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Internal.AttributeUtil.ShouldSkipAttributeReplication(System.Type)"> + <summary> + Attributes should be replicated if they are non-inheritable, + but there are some special cases where the attributes means + something to the CLR, where they should be skipped. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Reflection.MemberInfo,System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class. + </summary> + <param name="target">Target element. This is either target type or target method for invocation types.</param> + <param name="type">The type of the proxy. This is base type for invocation types.</param> + <param name="interfaces">The interfaces.</param> + <param name="options">The options.</param> + </member> + <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class. + </summary> + <param name="target">Type of the target.</param> + <param name="interfaces">The interfaces.</param> + <param name="options">The options.</param> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.LdcOpCodesDictionary"> + <summary> + s + Provides appropriate Ldc.X opcode for the type of primitive value to be loaded. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.LdindOpCodesDictionary"> + <summary> + Provides appropriate Ldind.X opcode for + the type of primitive value to be loaded indirectly. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadIndirectOpCodeForType(System.Reflection.Emit.ILGenerator,System.Type)"> + <summary> + Emits a load indirect opcode of the appropriate type for a value or object reference. + Pops a pointer off the evaluation stack, dereferences it and loads + a value of the specified type. + </summary> + <param name = "gen"></param> + <param name = "type"></param> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadOpCodeForConstantValue(System.Reflection.Emit.ILGenerator,System.Object)"> + <summary> + Emits a load opcode of the appropriate kind for a constant string or + primitive value. + </summary> + <param name = "gen"></param> + <param name = "value"></param> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadOpCodeForDefaultValueOfType(System.Reflection.Emit.ILGenerator,System.Type)"> + <summary> + Emits a load opcode of the appropriate kind for the constant default value of a + type, such as 0 for value types and null for reference types. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitStoreIndirectOpCodeForType(System.Reflection.Emit.ILGenerator,System.Type)"> + <summary> + Emits a store indirectopcode of the appropriate type for a value or object reference. + Pops a value of the specified type and a pointer off the evaluation stack, and + stores the value. + </summary> + <param name = "gen"></param> + <param name = "type"></param> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.PropertiesCollection"> + <summary> + Summary description for PropertiesCollection. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.IndirectReference"> + <summary> + Wraps a reference that is passed + ByRef and provides indirect load/store support. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.NewArrayExpression"> + <summary> + Summary description for NewArrayExpression. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.ReferencesToObjectArrayExpression"> + <summary> + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.StindOpCodesDictionary"> + <summary> + Provides appropriate Stind.X opcode + for the type of primitive value to be stored indirectly. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.MetaEvent.#ctor(System.String,System.Type,System.Type,Castle.DynamicProxy.Generators.MetaMethod,Castle.DynamicProxy.Generators.MetaMethod,System.Reflection.EventAttributes)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.MetaEvent"/> class. + </summary> + <param name="name">The name.</param> + <param name="declaringType">Type declaring the original event being overriten, or null.</param> + <param name="eventDelegateType"></param> + <param name="adder">The add method.</param> + <param name="remover">The remove method.</param> + <param name="attributes">The attributes.</param> + </member> + <member name="T:Castle.DynamicProxy.Generators.INamingScope"> + <summary> + Represents the scope of uniquenes of names for types and their members + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)"> + <summary> + Gets a unique name based on <paramref name="suggestedName"/> + </summary> + <param name="suggestedName">Name suggested by the caller</param> + <returns>Unique name based on <paramref name="suggestedName"/>.</returns> + <remarks> + Implementers should provide name as closely resembling <paramref name="suggestedName"/> as possible. + Generally if no collision occurs it is suggested to return suggested name, otherwise append sequential suffix. + Implementers must return deterministic names, that is when <see cref="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)"/> is called twice + with the same suggested name, the same returned name should be provided each time. Non-deterministic return + values, like appending random suffices will break serialization of proxies. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Generators.INamingScope.SafeSubScope"> + <summary> + Returns new, disposable naming scope. It is responsibilty of the caller to make sure that no naming collision + with enclosing scope, or other subscopes is possible. + </summary> + <returns>New naming scope.</returns> + </member> + <member name="T:Castle.DynamicProxy.Generators.MethodFinder"> + <summary> + Returns the methods implemented by a type. Use this instead of Type.GetMethods() to work around a CLR issue + where duplicate MethodInfos are returned by Type.GetMethods() after a token of a generic type's method was loaded. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Internal.InternalsUtil.IsInternal(System.Reflection.MethodBase)"> + <summary> + Determines whether the specified method is internal. + </summary> + <param name = "method">The method.</param> + <returns> + <c>true</c> if the specified method is internal; otherwise, <c>false</c>. + </returns> + </member> + <member name="M:Castle.DynamicProxy.Internal.InternalsUtil.IsInternalToDynamicProxy(System.Reflection.Assembly)"> + <summary> + Determines whether this assembly has internals visible to dynamic proxy. + </summary> + <param name = "asm">The assembly to inspect.</param> + </member> + <member name="M:Castle.DynamicProxy.Internal.InternalsUtil.IsAccessible(System.Reflection.MethodBase)"> + <summary> + Checks if the method is public or protected. + </summary> + <param name = "method"></param> + <returns></returns> + </member> + <member name="M:Castle.DynamicProxy.MixinData.#ctor(System.Collections.Generic.IEnumerable{System.Object})"> + <summary> + Because we need to cache the types based on the mixed in mixins, we do the following here: + - Get all the mixin interfaces + - Sort them by full name + - Return them by position + + The idea is to have reproducible behavior for the case that mixins are registered in different orders. + This method is here because it is required + </summary> + </member> + <member name="T:Castle.DynamicProxy.ModuleScope"> + <summary> + Summary description for ModuleScope. + </summary> + </member> + <member name="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"> + <summary> + The default file name used when the assembly is saved using <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/>. + </summary> + </member> + <member name="F:Castle.DynamicProxy.ModuleScope.DEFAULT_ASSEMBLY_NAME"> + <summary> + The default assembly (simple) name used for the assemblies generated by a <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class; assemblies created by this instance will not be saved. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean,System.String,System.String,System.String,System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved and what simple names are to be assigned to them. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> + <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean,Castle.DynamicProxy.Generators.INamingScope,System.String,System.String,System.String,System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved and what simple names are to be assigned to them. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> + <param name="namingScope">Naming scope used to provide unique names to generated types and their members (usually via sub-scopes).</param> + <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.GetFromCache(Castle.DynamicProxy.Generators.CacheKey)"> + <summary> + Returns a type from this scope's type cache, or null if the key cannot be found. + </summary> + <param name = "key">The key to be looked up in the cache.</param> + <returns>The type from this scope's type cache matching the key, or null if the key cannot be found</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.RegisterInCache(Castle.DynamicProxy.Generators.CacheKey,System.Type)"> + <summary> + Registers a type in this scope's type cache. + </summary> + <param name = "key">The key to be associated with the type.</param> + <param name = "type">The type to be stored in the cache.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.GetKeyPair"> + <summary> + Gets the key pair used to sign the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>. + </summary> + <returns></returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModule(System.Boolean)"> + <summary> + Gets the specified module generated by this scope, creating a new one if none has yet been generated. + </summary> + <param name = "isStrongNamed">If set to true, a strong-named module is returned; otherwise, a weak-named module is returned.</param> + <returns>A strong-named or weak-named module generated by this scope, as specified by the <paramref + name = "isStrongNamed" /> parameter.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithStrongName"> + <summary> + Gets the strong-named module generated by this scope, creating a new one if none has yet been generated. + </summary> + <returns>A strong-named module generated by this scope.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithWeakName"> + <summary> + Gets the weak-named module generated by this scope, creating a new one if none has yet been generated. + </summary> + <returns>A weak-named module generated by this scope.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"> + <summary> + Saves the generated assembly with the name and directory information given when this <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance was created (or with + the <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/> and current directory if none was given). + </summary> + <remarks> + <para> + This method stores the generated assembly in the directory passed as part of the module information specified when this instance was + constructed (if any, else the current directory is used). If both a strong-named and a weak-named assembly + have been generated, it will throw an exception; in this case, use the <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly(System.Boolean)"/> overload. + </para> + <para> + If this <see cref="T:Castle.DynamicProxy.ModuleScope"/> was created without indicating that the assembly should be saved, this method does nothing. + </para> + </remarks> + <exception cref="T:System.InvalidOperationException">Both a strong-named and a weak-named assembly have been generated.</exception> + <returns>The path of the generated assembly file, or null if no file has been generated.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.SaveAssembly(System.Boolean)"> + <summary> + Saves the specified generated assembly with the name and directory information given when this <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance was created + (or with the <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/> and current directory if none was given). + </summary> + <param name="strongNamed">True if the generated assembly with a strong name should be saved (see <see cref="P:Castle.DynamicProxy.ModuleScope.StrongNamedModule"/>); + false if the generated assembly without a strong name should be saved (see <see cref="P:Castle.DynamicProxy.ModuleScope.WeakNamedModule"/>.</param> + <remarks> + <para> + This method stores the specified generated assembly in the directory passed as part of the module information specified when this instance was + constructed (if any, else the current directory is used). + </para> + <para> + If this <see cref="T:Castle.DynamicProxy.ModuleScope"/> was created without indicating that the assembly should be saved, this method does nothing. + </para> + </remarks> + <exception cref="T:System.InvalidOperationException">No assembly has been generated that matches the <paramref name="strongNamed"/> parameter. + </exception> + <returns>The path of the generated assembly file, or null if no file has been generated.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.LoadAssemblyIntoCache(System.Reflection.Assembly)"> + <summary> + Loads the generated types from the given assembly into this <see cref="T:Castle.DynamicProxy.ModuleScope"/>'s cache. + </summary> + <param name="assembly">The assembly to load types from. This assembly must have been saved via <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly(System.Boolean)"/> or + <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"/>, or it must have the <see cref="T:Castle.DynamicProxy.Serialization.CacheMappingsAttribute"/> manually applied.</param> + <remarks> + This method can be used to load previously generated and persisted proxy types from disk into this scope's type cache, eg. in order + to avoid the performance hit associated with proxy generation. + </remarks> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.Lock"> + <summary> + Users of this <see cref="T:Castle.DynamicProxy.ModuleScope"/> should use this lock when accessing the cache. + </summary> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModule"> + <summary> + Gets the strong-named module generated by this scope, or <see langword = "null" /> if none has yet been generated. + </summary> + <value>The strong-named module generated by this scope, or <see langword = "null" /> if none has yet been generated.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModuleName"> + <summary> + Gets the file name of the strongly named module generated by this scope. + </summary> + <value>The file name of the strongly named module generated by this scope.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModuleDirectory"> + <summary> + Gets the directory where the strongly named module generated by this scope will be saved, or <see langword="null"/> if the current directory + is used. + </summary> + <value>The directory where the strongly named module generated by this scope will be saved when <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"/> is called + (if this scope was created to save modules).</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModule"> + <summary> + Gets the weak-named module generated by this scope, or <see langword = "null" /> if none has yet been generated. + </summary> + <value>The weak-named module generated by this scope, or <see langword = "null" /> if none has yet been generated.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModuleName"> + <summary> + Gets the file name of the weakly named module generated by this scope. + </summary> + <value>The file name of the weakly named module generated by this scope.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModuleDirectory"> + <summary> + Gets the directory where the weakly named module generated by this scope will be saved, or <see langword="null"/> if the current directory + is used. + </summary> + <value>The directory where the weakly named module generated by this scope will be saved when <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"/> is called + (if this scope was created to save modules).</value> + </member> + <member name="T:Castle.DynamicProxy.PersistentProxyBuilder"> + <summary> + ProxyBuilder that persists the generated type. + </summary> + <remarks> + The saved assembly contains just the last generated type. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.PersistentProxyBuilder.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.PersistentProxyBuilder"/> class. + </summary> + </member> + <member name="M:Castle.DynamicProxy.PersistentProxyBuilder.SaveAssembly"> + <summary> + Saves the generated assembly to a physical file. Note that this renders the <see cref="T:Castle.DynamicProxy.PersistentProxyBuilder"/> unusable. + </summary> + <returns>The path of the generated assembly file, or null if no assembly has been generated.</returns> + <remarks> + This method does not support saving multiple files. If both a signed and an unsigned module have been generated, use the + respective methods of the <see cref="T:Castle.DynamicProxy.ModuleScope"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerationOptions.#ctor(Castle.DynamicProxy.IProxyGenerationHook)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/> class. + </summary> + <param name="hook">The hook.</param> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerationOptions.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/> class. + </summary> + </member> + <member name="T:Castle.DynamicProxy.ProxyGenerator"> + <summary> + Provides proxy objects for classes and interfaces. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor(Castle.DynamicProxy.IProxyBuilder)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. + </summary> + <param name="builder">Proxy types builder.</param> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor(System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. + </summary> + <param name="disableSignedModule">If <c>true</c> forces all types to be generated into an unsigned module.</param> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns>Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object.</returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/>is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/>is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor)"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptor"/>. + </summary> + <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> + <param name="interceptor">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.IInterceptor)"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptor"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="interceptor">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of <paramref name="additionalInterfacesToProxy"/> to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget``1(``0,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no parameterless constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy``1(Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no parameterless constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for class proxy with given <paramref name="classToProxy"/> class, implementing given <paramref name="additionalInterfacesToProxy"/> and using provided <paramref name="options"/>. + </summary> + <param name="classToProxy">The base class for proxy type.</param> + <param name="additionalInterfacesToProxy">The interfaces that proxy type should implement.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for interface proxy with target for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> on given <paramref name="targetType"/> and using provided <paramref name="options"/>. + </summary> + <param name="interfaceToProxy">The interface proxy type should implement.</param> + <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> + <param name="targetType">Actual type that the proxy type will encompass.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for interface proxy with target interface for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> on given <paramref name="interfaceToProxy"/> and using provided <paramref name="options"/>. + </summary> + <param name="interfaceToProxy">The interface proxy type should implement.</param> + <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for interface proxy without target for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> and using provided <paramref name="options"/>. + </summary> + <param name="interfaceToProxy">The interface proxy type should implement.</param> + <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="P:Castle.DynamicProxy.ProxyGenerator.Logger"> + <summary> + Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> log to. + </summary> + </member> + <member name="P:Castle.DynamicProxy.ProxyGenerator.ProxyBuilder"> + <summary> + Gets the proxy builder instance used to generate proxy types. + </summary> + <value>The proxy builder.</value> + </member> + <member name="M:Castle.DynamicProxy.Serialization.RemotableInvocation.Proceed"> + <summary> + </summary> + <returns></returns> + </member> + <member name="P:Castle.DynamicProxy.Serialization.RemotableInvocation.Method"> + <summary> + </summary> + </member> + <member name="P:Castle.DynamicProxy.Serialization.RemotableInvocation.MethodInvocationTarget"> + <summary> + For interface proxies, this will point to the + <see cref="T:System.Reflection.MethodInfo"/> on the target class + </summary> + </member> + <member name="T:Castle.DynamicProxy.Serialization.ProxyObjectReference"> + <summary> + Handles the deserialization of proxies. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.ResetScope"> + <summary> + Resets the <see cref="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"/> used for deserialization to a new scope. + </summary> + <remarks> + This is useful for test cases. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.SetScope(Castle.DynamicProxy.ModuleScope)"> + <summary> + Resets the <see cref="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"/> used for deserialization to a given <paramref name="scope"/>. + </summary> + <param name="scope"> The scope to be used for deserialization. </param> + <remarks> + By default, the deserialization process uses a different scope than the rest of the application, which can lead to multiple proxies + being generated for the same type. By explicitly setting the deserialization scope to the application's scope, this can be avoided. + </remarks> + </member> + <member name="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"> + <summary> + Gets the <see cref="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"/> used for deserialization. + </summary> + <value> As <see cref="T:Castle.DynamicProxy.Serialization.ProxyObjectReference"/> has no way of automatically determining the scope used by the application (and the application might use more than one scope at the same time), <see cref="T:Castle.DynamicProxy.Serialization.ProxyObjectReference"/> uses a dedicated scope instance for deserializing proxy types. This instance can be reset and set to a specific value via <see cref="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.ResetScope"/> and <see cref="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.SetScope(Castle.DynamicProxy.ModuleScope)"/> . </value> + </member> + <member name="T:Castle.DynamicProxy.Tokens.InvocationMethods"> + <summary> + Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:Castle.DynamicProxy.AbstractInvocation"/> class. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Tokens.SerializationInfoMethods"> + <summary> + Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:System.Runtime.Serialization.SerializationInfo"/> class. + </summary> + </member> + <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Bool"> + <summary> + <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Boolean)"/> + </summary> + </member> + <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Int32"> + <summary> + <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Int32)"/> + </summary> + </member> + <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Object"> + <summary> + <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Object)"/> + </summary> + </member> + <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.GetValue"> + <summary> + <see cref="M:System.Runtime.Serialization.SerializationInfo.GetValue(System.String,System.Type)"/> + </summary> + </member> + <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.SetType"> + <summary> + <see cref="M:System.Runtime.Serialization.SerializationInfo.SetType(System.Type)"/> + </summary> + </member> + <member name="T:Castle.DynamicProxy.IInterceptorSelector"> + <summary> + Provides an extension point that allows proxies to choose specific interceptors on + a per method basis. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IInterceptorSelector.SelectInterceptors(System.Type,System.Reflection.MethodInfo,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Selects the interceptors that should intercept calls to the given <paramref name="method"/>. + </summary> + <param name="type">The type declaring the method to intercept.</param> + <param name="method">The method that will be intercepted.</param> + <param name="interceptors">All interceptors registered with the proxy.</param> + <returns>An array of interceptors to invoke upon calling the <paramref name="method"/>.</returns> + <remarks> + This method is called only once per proxy instance, upon the first call to the + <paramref name="method"/>. Either an empty array or null are valid return values to indicate + that no interceptor should intercept calls to the method. Although it is not advised, it is + legal to return other <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations than these provided in + <paramref name="interceptors"/>. + </remarks> + </member> + <member name="M:Castle.Core.Internal.Lock.Create"> + <summary> + Creates a new lock. + </summary> + <returns></returns> + </member> + <member name="T:Castle.Core.IServiceProviderExAccessor"> + <summary> + This interface should be implemented by classes + that are available in a bigger context, exposing + the container to different areas in the same application. + <para> + For example, in Web application, the (global) HttpApplication + subclasses should implement this interface to expose + the configured container + </para> + </summary> + </member> + <member name="T:Castle.DynamicProxy.IChangeProxyTarget"> + <summary> + Exposes means to change target objects of proxies and invocations + </summary> + </member> + <member name="M:Castle.DynamicProxy.IChangeProxyTarget.ChangeInvocationTarget(System.Object)"> + <summary> + Changes the target object (<see cref="P:Castle.DynamicProxy.IInvocation.InvocationTarget"/>) of current <see cref="T:Castle.DynamicProxy.IInvocation"/>. + </summary> + <param name="target">The new value of target of invocation.</param> + <remarks> + Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to <see cref="P:Castle.DynamicProxy.IInvocation.TargetType"/>, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown. + Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws. + Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws. + </remarks> + <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception> + </member> + <member name="M:Castle.DynamicProxy.IChangeProxyTarget.ChangeProxyTarget(System.Object)"> + <summary> + Permanently changes the target object of the proxy. This does not affect target of the current invocation. + </summary> + <param name="target">The new value of target of the proxy.</param> + <remarks> + Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to proxy's target type, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown. + Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws. + Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws. + </remarks> + <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception> + </member> + <member name="T:Castle.DynamicProxy.IInterceptor"> + <summary> + New interface that is going to be used by DynamicProxy 2 + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyTargetAccessor.DynProxyGetTarget"> + <summary> + Get the proxy target (note that null is a valid target!) + </summary> + <returns></returns> + </member> + <member name="M:Castle.DynamicProxy.IProxyTargetAccessor.GetInterceptors"> + <summary> + Gets the interceptors for the proxy + </summary> + <returns></returns> + </member> + <member name="T:Castle.Core.IServiceEnabledComponent"> + <summary> + Defines that the implementation wants a + <see cref="T:System.IServiceProvider"/> in order to + access other components. The creator must be aware + that the component might (or might not) implement + the interface. + </summary> + <remarks> + Used by Castle Project components to, for example, + gather logging factories + </remarks> + </member> + <member name="T:Castle.Core.IServiceProviderEx"> + <summary> + Increments <c>IServiceProvider</c> with a generic service resolution operation. + </summary> + </member> + <member name="T:Castle.Core.Logging.IExtendedLoggerFactory"> + <summary> + Provides a factory that can produce either <see cref="T:Castle.Core.Logging.ILogger"/> or + <see cref="T:Castle.Core.Logging.IExtendedLogger"/> classes. + </summary> + </member> + <member name="T:Castle.Core.Logging.ILoggerFactory"> + <summary> + Manages the instantiation of <see cref="T:Castle.Core.Logging.ILogger"/>s. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.Type)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.String)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.Type)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.String)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.Type)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.String)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.Type)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.String)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.GetConfigFile(System.String)"> + <summary> + Gets the configuration file. + </summary> + <param name = "fileName">i.e. log4net.config</param> + <returns></returns> + </member> + <member name="T:Castle.Core.Logging.TraceLoggerFactory"> + <summary> + Used to create the TraceLogger implementation of ILogger interface. See <see cref="T:Castle.Core.Logging.TraceLogger"/>. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractLoggerFactory.GetConfigFile(System.String)"> + <summary> + Gets the configuration file. + </summary> + <param name = "fileName">i.e. log4net.config</param> + <returns></returns> + </member> + <member name="T:Castle.Core.Logging.IContextProperties"> + <summary> + Interface for Context Properties implementations + </summary> + <remarks> + <para> + This interface defines a basic property get set accessor. + </para> + <para> + Based on the ContextPropertiesBase of log4net, by Nicko Cadell. + </para> + </remarks> + </member> + <member name="P:Castle.Core.Logging.IContextProperties.Item(System.String)"> + <summary> + Gets or sets the value of a property + </summary> + <value> + The value for the property with the specified key + </value> + <remarks> + <para> + Gets or sets the value of a property + </para> + </remarks> + </member> + <member name="T:Castle.Core.Logging.NullLogFactory"> + <summary> + NullLogFactory used when logging is turned off. + </summary> + </member> + <member name="M:Castle.Core.Logging.NullLogFactory.Create(System.String)"> + <summary> + Creates an instance of ILogger with the specified name. + </summary> + <param name = "name">Name.</param> + <returns></returns> + </member> + <member name="M:Castle.Core.Logging.NullLogFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates an instance of ILogger with the specified name and LoggerLevel. + </summary> + <param name = "name">Name.</param> + <param name = "level">Level.</param> + <returns></returns> + </member> + <member name="T:Castle.Core.Logging.StreamLoggerFactory"> + <summary> + Creates <see cref="T:Castle.Core.Logging.StreamLogger"/> outputing + to files. The name of the file is derived from the log name + plus the 'log' extension. + </summary> + </member> + <member name="T:Castle.Core.Logging.IExtendedLogger"> + <summary> + Provides an interface that supports <see cref="T:Castle.Core.Logging.ILogger"/> and + allows the storage and retrieval of Contexts. These are supported in + both log4net and NLog. + </summary> + </member> + <member name="T:Castle.Core.Logging.ILogger"> + <summary> + Manages logging. + </summary> + <remarks> + This is a facade for the different logging subsystems. + It offers a simplified interface that follows IOC patterns + and a simplified priority/level/severity abstraction. + </remarks> + </member> + <member name="M:Castle.Core.Logging.ILogger.CreateChildLogger(System.String)"> + <summary> + Create a new child logger. + The name of the child logger is [current-loggers-name].[passed-in-name] + </summary> + <param name="loggerName">The Subname of this logger.</param> + <returns>The New ILogger instance.</returns> + <exception cref="T:System.ArgumentException">If the name has an empty element name.</exception> + </member> + <member name="M:Castle.Core.Logging.ILogger.Debug(System.String)"> + <summary> + Logs a debug message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Debug(System.Func{System.String})"> + <summary> + Logs a debug message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsDebugEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Debug(System.String,System.Exception)"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Error(System.String)"> + <summary> + Logs an error message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Error(System.Func{System.String})"> + <summary> + Logs an error message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsErrorEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Error(System.String,System.Exception)"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String)"> + <summary> + Logs a fatal message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Fatal(System.Func{System.String})"> + <summary> + Logs a fatal message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsFatalEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String,System.Exception)"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Info(System.String)"> + <summary> + Logs an info message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Info(System.Func{System.String})"> + <summary> + Logs a info message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsInfoEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Info(System.String,System.Exception)"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Warn(System.String)"> + <summary> + Logs a warn message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Warn(System.Func{System.String})"> + <summary> + Logs a warn message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsWarnEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Warn(System.String,System.Exception)"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsDebugEnabled"> + <summary> + Determines if messages of priority "debug" will be logged. + </summary> + <value>True if "debug" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsErrorEnabled"> + <summary> + Determines if messages of priority "error" will be logged. + </summary> + <value>True if "error" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsFatalEnabled"> + <summary> + Determines if messages of priority "fatal" will be logged. + </summary> + <value>True if "fatal" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsInfoEnabled"> + <summary> + Determines if messages of priority "info" will be logged. + </summary> + <value>True if "info" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsWarnEnabled"> + <summary> + Determines if messages of priority "warn" will be logged. + </summary> + <value>True if "warn" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.IExtendedLogger.GlobalProperties"> + <summary> + Exposes the Global Context of the extended logger. + </summary> + </member> + <member name="P:Castle.Core.Logging.IExtendedLogger.ThreadProperties"> + <summary> + Exposes the Thread Context of the extended logger. + </summary> + </member> + <member name="P:Castle.Core.Logging.IExtendedLogger.ThreadStacks"> + <summary> + Exposes the Thread Stack of the extended logger. + </summary> + </member> + <member name="T:Castle.Core.Logging.ConsoleLogger"> + <summary> + The Logger sending everything to the standard output streams. + This is mainly for the cases when you have a utility that + does not have a logger to supply. + </summary> + </member> + <member name="T:Castle.Core.Logging.LevelFilteredLogger"> + <summary> + The Level Filtered Logger class. This is a base clase which + provides a LogLevel attribute and reroutes all functions into + one Log method. + </summary> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.#ctor"> + <summary> + Creates a new <c>LevelFilteredLogger</c>. + </summary> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InitializeLifetimeService"> + <summary> + Keep the instance alive in a remoting scenario + </summary> + <returns></returns> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String)"> + <summary> + Logs a debug message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String,System.Exception)"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String)"> + <summary> + Logs an info message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String,System.Exception)"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String)"> + <summary> + Logs a warn message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String,System.Exception)"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String)"> + <summary> + Logs an error message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String,System.Exception)"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String)"> + <summary> + Logs a fatal message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String,System.Exception)"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Log(Castle.Core.Logging.LoggerLevel,System.String,System.String,System.Exception)"> + <summary> + Implementors output the log content by implementing this method only. + Note that exception can be null + </summary> + <param name = "loggerLevel"></param> + <param name = "loggerName"></param> + <param name = "message"></param> + <param name = "exception"></param> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.Level"> + <value> + The <c>LoggerLevel</c> that this logger + will be using. Defaults to <c>LoggerLevel.Off</c> + </value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.Name"> + <value> + The name that this logger will be using. + Defaults to <c>String.Empty</c> + </value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsDebugEnabled"> + <summary> + Determines if messages of priority "debug" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Debug"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsInfoEnabled"> + <summary> + Determines if messages of priority "info" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Info"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsWarnEnabled"> + <summary> + Determines if messages of priority "warn" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Warn"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsErrorEnabled"> + <summary> + Determines if messages of priority "error" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Error"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsFatalEnabled"> + <summary> + Determines if messages of priority "fatal" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Fatal"/> bit</value> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor"> + <summary> + Creates a new ConsoleLogger with the <c>Level</c> + set to <c>LoggerLevel.Debug</c> and the <c>Name</c> + set to <c>String.Empty</c>. + </summary> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new ConsoleLogger with the <c>Name</c> + set to <c>String.Empty</c>. + </summary> + <param name = "logLevel">The logs Level.</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(System.String)"> + <summary> + Creates a new ConsoleLogger with the <c>Level</c> + set to <c>LoggerLevel.Debug</c>. + </summary> + <param name = "name">The logs Name.</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new ConsoleLogger. + </summary> + <param name = "name">The logs Name.</param> + <param name = "logLevel">The logs Level.</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.Log(Castle.Core.Logging.LoggerLevel,System.String,System.String,System.Exception)"> + <summary> + A Common method to log. + </summary> + <param name = "loggerLevel">The level of logging</param> + <param name = "loggerName">The name of the logger</param> + <param name = "message">The Message</param> + <param name = "exception">The Exception</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.CreateChildLogger(System.String)"> + <summary> + Returns a new <c>ConsoleLogger</c> with the name + added after this loggers name, with a dot in between. + </summary> + <param name = "loggerName">The added hierarchical name.</param> + <returns>A new <c>ConsoleLogger</c>.</returns> + </member> + <member name="T:Castle.Core.Logging.DiagnosticsLogger"> + <summary> + The Logger using standart Diagnostics namespace. + </summary> + </member> + <member name="M:Castle.Core.Logging.DiagnosticsLogger.#ctor(System.String)"> + <summary> + Creates a logger based on <see cref="T:System.Diagnostics.EventLog"/>. + </summary> + <param name="logName"><see cref="P:System.Diagnostics.EventLog.Log"/></param> + </member> + <member name="M:Castle.Core.Logging.DiagnosticsLogger.#ctor(System.String,System.String)"> + <summary> + Creates a logger based on <see cref="T:System.Diagnostics.EventLog"/>. + </summary> + <param name="logName"><see cref="P:System.Diagnostics.EventLog.Log"/></param> + <param name="source"><see cref="P:System.Diagnostics.EventLog.Source"/></param> + </member> + <member name="M:Castle.Core.Logging.DiagnosticsLogger.#ctor(System.String,System.String,System.String)"> + <summary> + Creates a logger based on <see cref="T:System.Diagnostics.EventLog"/>. + </summary> + <param name="logName"><see cref="P:System.Diagnostics.EventLog.Log"/></param> + <param name="machineName"><see cref="P:System.Diagnostics.EventLog.MachineName"/></param> + <param name="source"><see cref="P:System.Diagnostics.EventLog.Source"/></param> + </member> + <member name="T:Castle.Core.Logging.NullLogger"> + <summary> + The Null Logger class. This is useful for implementations where you need + to provide a logger to a utility class, but do not want any output from it. + It also helps when you have a utility that does not have a logger to supply. + </summary> + </member> + <member name="M:Castle.Core.Logging.NullLogger.CreateChildLogger(System.String)"> + <summary> + Returns this <c>NullLogger</c>. + </summary> + <param name = "loggerName">Ignored</param> + <returns>This ILogger instance.</returns> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Error(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Error(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Info(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Info(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="P:Castle.Core.Logging.NullLogger.GlobalProperties"> + <summary> + Returns empty context properties. + </summary> + </member> + <member name="P:Castle.Core.Logging.NullLogger.ThreadProperties"> + <summary> + Returns empty context properties. + </summary> + </member> + <member name="P:Castle.Core.Logging.NullLogger.ThreadStacks"> + <summary> + Returns empty context stacks. + </summary> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsDebugEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsErrorEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsFatalEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsInfoEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsWarnEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="T:Castle.Core.Logging.StreamLogger"> + <summary> + The Stream Logger class. This class can stream log information + to any stream, it is suitable for storing a log file to disk, + or to a <c>MemoryStream</c> for testing your components. + </summary> + <remarks> + This logger is not thread safe. + </remarks> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream)"> + <summary> + Creates a new <c>StreamLogger</c> with default encoding + and buffer size. Initial Level is set to Debug. + </summary> + <param name = "name"> + The name of the log. + </param> + <param name = "stream"> + The stream that will be used for logging, + seeking while the logger is alive + </param> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream,System.Text.Encoding)"> + <summary> + Creates a new <c>StreamLogger</c> with default buffer size. + Initial Level is set to Debug. + </summary> + <param name="name"> + The name of the log. + </param> + <param name="stream"> + The stream that will be used for logging, + seeking while the logger is alive + </param> + <param name="encoding"> + The encoding that will be used for this stream. + <see cref="T:System.IO.StreamWriter"/> + </param> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream,System.Text.Encoding,System.Int32)"> + <summary> + Creates a new <c>StreamLogger</c>. + Initial Level is set to Debug. + </summary> + <param name="name"> + The name of the log. + </param> + <param name="stream"> + The stream that will be used for logging, + seeking while the logger is alive + </param> + <param name="encoding"> + The encoding that will be used for this stream. + <see cref="T:System.IO.StreamWriter"/> + </param> + <param name="bufferSize"> + The buffer size that will be used for this stream. + <see cref="T:System.IO.StreamWriter"/> + </param> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.StreamWriter)"> + <summary> + Creates a new <c>StreamLogger</c> with + Debug as default Level. + </summary> + <param name = "name">The name of the log.</param> + <param name = "writer">The <c>StreamWriter</c> the log will write to.</param> + </member> + <member name="T:Castle.Core.Logging.TraceLogger"> + <summary> + The TraceLogger sends all logging to the System.Diagnostics.TraceSource + built into the .net framework. + </summary> + <remarks> + Logging can be configured in the system.diagnostics configuration + section. + + If logger doesn't find a source name with a full match it will + use source names which match the namespace partially. For example you can + configure from all castle components by adding a source name with the + name "Castle". + + If no portion of the namespace matches the source named "Default" will + be used. + </remarks> + </member> + <member name="M:Castle.Core.Logging.TraceLogger.#ctor(System.String)"> + <summary> + Build a new trace logger based on the named TraceSource + </summary> + <param name="name">The name used to locate the best TraceSource. In most cases comes from the using type's fullname.</param> + </member> + <member name="M:Castle.Core.Logging.TraceLogger.#ctor(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Build a new trace logger based on the named TraceSource + </summary> + <param name="name">The name used to locate the best TraceSource. In most cases comes from the using type's fullname.</param> + <param name="level">The default logging level at which this source should write messages. In almost all cases this + default value will be overridden in the config file. </param> + </member> + <member name="M:Castle.Core.Logging.TraceLogger.CreateChildLogger(System.String)"> + <summary> + Create a new child logger. + The name of the child logger is [current-loggers-name].[passed-in-name] + </summary> + <param name="loggerName">The Subname of this logger.</param> + <returns>The New ILogger instance.</returns> + </member> + <member name="T:Castle.Core.Configuration.AbstractConfiguration"> + <summary> + This is an abstract <see cref="T:Castle.Core.Configuration.IConfiguration"/> implementation + that deals with methods that can be abstracted away + from underlying implementations. + </summary> + <remarks> + <para><b>AbstractConfiguration</b> makes easier to implementers + to create a new version of <see cref="T:Castle.Core.Configuration.IConfiguration"/></para> + </remarks> + </member> + <member name="T:Castle.Core.Configuration.IConfiguration"> + <summary> + <see cref="T:Castle.Core.Configuration.IConfiguration"/> is a interface encapsulating a configuration node + used to retrieve configuration values. + </summary> + </member> + <member name="M:Castle.Core.Configuration.IConfiguration.GetValue(System.Type,System.Object)"> + <summary> + Gets the value of the node and converts it + into specified <see cref="T:System.Type"/>. + </summary> + <param name="type">The <see cref="T:System.Type"/></param> + <param name="defaultValue"> + The Default value returned if the conversion fails. + </param> + <returns>The Value converted into the specified type.</returns> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Name"> + <summary> + Gets the name of the node. + </summary> + <value> + The Name of the node. + </value> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Value"> + <summary> + Gets the value of the node. + </summary> + <value> + The Value of the node. + </value> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Children"> + <summary> + Gets an <see cref="T:Castle.Core.Configuration.ConfigurationCollection"/> of <see cref="T:Castle.Core.Configuration.IConfiguration"/> + elements containing all node children. + </summary> + <value>The Collection of child nodes.</value> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Attributes"> + <summary> + Gets an <see cref="T:System.Collections.IDictionary"/> of the configuration attributes. + </summary> + </member> + <member name="M:Castle.Core.Configuration.AbstractConfiguration.GetValue(System.Type,System.Object)"> + <summary> + Gets the value of the node and converts it + into specified <see cref="T:System.Type"/>. + </summary> + <param name="type">The <see cref="T:System.Type"/></param> + <param name="defaultValue"> + The Default value returned if the conversion fails. + </param> + <returns>The Value converted into the specified type.</returns> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Attributes"> + <summary> + Gets node attributes. + </summary> + <value> + All attributes of the node. + </value> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Children"> + <summary> + Gets all child nodes. + </summary> + <value>The <see cref="T:Castle.Core.Configuration.ConfigurationCollection"/> of child nodes.</value> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Name"> + <summary> + Gets the name of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </summary> + <value> + The Name of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </value> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Value"> + <summary> + Gets the value of <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </summary> + <value> + The Value of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </value> + </member> + <member name="T:Castle.Core.Configuration.ConfigurationCollection"> + <summary> + A collection of <see cref="T:Castle.Core.Configuration.IConfiguration"/> objects. + </summary> + </member> + <member name="M:Castle.Core.Configuration.ConfigurationCollection.#ctor"> + <summary> + Creates a new instance of <c>ConfigurationCollection</c>. + </summary> + </member> + <member name="M:Castle.Core.Configuration.ConfigurationCollection.#ctor(System.Collections.Generic.IEnumerable{Castle.Core.Configuration.IConfiguration})"> + <summary> + Creates a new instance of <c>ConfigurationCollection</c>. + </summary> + </member> + <member name="T:Castle.Core.Configuration.MutableConfiguration"> + <summary> + Summary description for MutableConfiguration. + </summary> + </member> + <member name="M:Castle.Core.Configuration.MutableConfiguration.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Core.Configuration.MutableConfiguration"/> class. + </summary> + <param name="name">The name.</param> + </member> + <member name="P:Castle.Core.Configuration.MutableConfiguration.Value"> + <summary> + Gets the value of <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </summary> + <value> + The Value of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </value> + </member> + <member name="M:Castle.Core.Configuration.Xml.XmlConfigurationDeserializer.Deserialize(System.Xml.XmlNode)"> + <summary> + Deserializes the specified node into an abstract representation of configuration. + </summary> + <param name = "node">The node.</param> + <returns></returns> + </member> + <member name="M:Castle.Core.Configuration.Xml.XmlConfigurationDeserializer.GetConfigValue(System.String)"> + <summary> + If a config value is an empty string we return null, this is to keep + backward compatibility with old code + </summary> + </member> + <member name="T:Castle.Core.Pair`2"> + <summary> + General purpose class to represent a standard pair of values. + </summary> + <typeparam name="TFirst">Type of the first value</typeparam> + <typeparam name="TSecond">Type of the second value</typeparam> + </member> + <member name="M:Castle.Core.Pair`2.#ctor(`0,`1)"> + <summary> + Constructs a pair with its values + </summary> + <param name="first"></param> + <param name="second"></param> + </member> + <member name="T:Castle.Core.ProxyServices"> + <summary> + List of utility methods related to dynamic proxy operations + </summary> + </member> + <member name="M:Castle.Core.ProxyServices.IsDynamicProxy(System.Type)"> + <summary> + Determines whether the specified type is a proxy generated by + DynamicProxy (1 or 2). + </summary> + <param name="type">The type.</param> + <returns> + <c>true</c> if it is a proxy; otherwise, <c>false</c>. + </returns> + </member> + <member name="T:Castle.Core.ReflectionBasedDictionaryAdapter"> + <summary> + Readonly implementation of <see cref="T:System.Collections.IDictionary"/> which uses an anonymous object as its source. Uses names of properties as keys, and property values as... well - values. Keys are not case sensitive. + </summary> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.#ctor(System.Object)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Core.ReflectionBasedDictionaryAdapter"/> class. + </summary> + <param name="target">The target.</param> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Add(System.Object,System.Object)"> + <summary> + Adds an element with the provided key and value to the <see cref = "T:System.Collections.IDictionary" /> object. + </summary> + <param name = "key">The <see cref = "T:System.Object" /> to use as the key of the element to add.</param> + <param name = "value">The <see cref = "T:System.Object" /> to use as the value of the element to add.</param> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "key" /> is null. </exception> + <exception cref = "T:System.ArgumentException">An element with the same key already exists in the <see + cref = "T:System.Collections.IDictionary" /> object. </exception> + <exception cref = "T:System.NotSupportedException">The <see cref = "T:System.Collections.IDictionary" /> is read-only.-or- The <see + cref = "T:System.Collections.IDictionary" /> has a fixed size. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Clear"> + <summary> + Removes all elements from the <see cref = "T:System.Collections.IDictionary" /> object. + </summary> + <exception cref = "T:System.NotSupportedException">The <see cref = "T:System.Collections.IDictionary" /> object is read-only. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Contains(System.Object)"> + <summary> + Determines whether the <see cref = "T:System.Collections.IDictionary" /> object contains an element with the specified key. + </summary> + <param name = "key">The key to locate in the <see cref = "T:System.Collections.IDictionary" /> object.</param> + <returns> + true if the <see cref = "T:System.Collections.IDictionary" /> contains an element with the key; otherwise, false. + </returns> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "key" /> is null. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Remove(System.Object)"> + <summary> + Removes the element with the specified key from the <see cref = "T:System.Collections.IDictionary" /> object. + </summary> + <param name = "key">The key of the element to remove.</param> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "key" /> is null. </exception> + <exception cref = "T:System.NotSupportedException">The <see cref = "T:System.Collections.IDictionary" /> object is read-only.-or- The <see + cref = "T:System.Collections.IDictionary" /> has a fixed size. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.GetEnumerator"> + <summary> + Returns an enumerator that iterates through a collection. + </summary> + <returns> + An <see cref = "T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection. + </returns> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#ICollection#CopyTo(System.Array,System.Int32)"> + <summary> + Copies the elements of the <see cref = "T:System.Collections.ICollection" /> to an <see cref = "T:System.Array" />, starting at a particular <see + cref = "T:System.Array" /> index. + </summary> + <param name = "array">The one-dimensional <see cref = "T:System.Array" /> that is the destination of the elements copied from <see + cref = "T:System.Collections.ICollection" />. The <see cref = "T:System.Array" /> must have zero-based indexing.</param> + <param name = "index">The zero-based index in <paramref name = "array" /> at which copying begins.</param> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "array" /> is null. </exception> + <exception cref = "T:System.ArgumentOutOfRangeException"> + <paramref name = "index" /> is less than zero. </exception> + <exception cref = "T:System.ArgumentException"> + <paramref name = "array" /> is multidimensional.-or- <paramref name = "index" /> is equal to or greater than the length of <paramref + name = "array" />.-or- The number of elements in the source <see cref = "T:System.Collections.ICollection" /> is greater than the available space from <paramref + name = "index" /> to the end of the destination <paramref name = "array" />. </exception> + <exception cref = "T:System.ArgumentException">The type of the source <see cref = "T:System.Collections.ICollection" /> cannot be cast automatically to the type of the destination <paramref + name = "array" />. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#IDictionary#GetEnumerator"> + <summary> + Returns an <see cref = "T:System.Collections.IDictionaryEnumerator" /> object for the <see + cref = "T:System.Collections.IDictionary" /> object. + </summary> + <returns> + An <see cref = "T:System.Collections.IDictionaryEnumerator" /> object for the <see + cref = "T:System.Collections.IDictionary" /> object. + </returns> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Read(System.Collections.IDictionary,System.Object)"> + <summary> + Reads values of properties from <paramref name = "valuesAsAnonymousObject" /> and inserts them into <paramref + name = "targetDictionary" /> using property names as keys. + </summary> + <param name = "targetDictionary"></param> + <param name = "valuesAsAnonymousObject"></param> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Count"> + <summary> + Gets the number of elements contained in the <see cref = "T:System.Collections.ICollection" />. + </summary> + <value></value> + <returns>The number of elements contained in the <see cref = "T:System.Collections.ICollection" />.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.IsSynchronized"> + <summary> + Gets a value indicating whether access to the <see cref = "T:System.Collections.ICollection" /> is synchronized (thread safe). + </summary> + <value></value> + <returns>true if access to the <see cref = "T:System.Collections.ICollection" /> is synchronized (thread safe); otherwise, false.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the <see cref = "T:System.Collections.ICollection" />. + </summary> + <value></value> + <returns>An object that can be used to synchronize access to the <see cref = "T:System.Collections.ICollection" />.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.IsReadOnly"> + <summary> + Gets a value indicating whether the <see cref = "T:System.Collections.IDictionary" /> object is read-only. + </summary> + <value></value> + <returns>true if the <see cref = "T:System.Collections.IDictionary" /> object is read-only; otherwise, false.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Item(System.Object)"> + <summary> + Gets or sets the <see cref="T:System.Object"/> with the specified key. + </summary> + <value></value> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Keys"> + <summary> + Gets an <see cref = "T:System.Collections.ICollection" /> object containing the keys of the <see + cref = "T:System.Collections.IDictionary" /> object. + </summary> + <value></value> + <returns>An <see cref = "T:System.Collections.ICollection" /> object containing the keys of the <see + cref = "T:System.Collections.IDictionary" /> object.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Values"> + <summary> + Gets an <see cref = "T:System.Collections.ICollection" /> object containing the values in the <see + cref = "T:System.Collections.IDictionary" /> object. + </summary> + <value></value> + <returns>An <see cref = "T:System.Collections.ICollection" /> object containing the values in the <see + cref = "T:System.Collections.IDictionary" /> object.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#IDictionary#IsFixedSize"> + <summary> + Gets a value indicating whether the <see cref = "T:System.Collections.IDictionary" /> object has a fixed size. + </summary> + <value></value> + <returns>true if the <see cref = "T:System.Collections.IDictionary" /> object has a fixed size; otherwise, false.</returns> + </member> + <member name="T:Castle.Core.Resource.IResource"> + <summary> + Represents a 'streamable' resource. Can + be a file, a resource in an assembly. + </summary> + </member> + <member name="M:Castle.Core.Resource.IResource.GetStreamReader"> + <summary> + Returns a reader for the stream + </summary> + <remarks> + It's up to the caller to dispose the reader. + </remarks> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResource.GetStreamReader(System.Text.Encoding)"> + <summary> + Returns a reader for the stream + </summary> + <remarks> + It's up to the caller to dispose the reader. + </remarks> + <param name="encoding"></param> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResource.CreateRelative(System.String)"> + <summary> + Returns an instance of <see cref="T:Castle.Core.Resource.IResource"/> + created according to the <c>relativePath</c> + using itself as the root. + </summary> + <param name="relativePath"></param> + <returns></returns> + </member> + <member name="P:Castle.Core.Resource.IResource.FileBasePath"> + <summary> + + </summary> + <remarks> + Only valid for resources that + can be obtained through relative paths + </remarks> + </member> + <member name="T:Castle.Core.Resource.AbstractStreamResource"> + <summary> + + </summary> + </member> + <member name="F:Castle.Core.Resource.AbstractStreamResource.createStream"> + <summary> + This returns a new stream instance each time it is called. + It is the responsibility of the caller to dispose of this stream + </summary> + </member> + <member name="T:Castle.Core.Resource.IResourceFactory"> + <summary> + Depicts the contract for resource factories. + </summary> + </member> + <member name="M:Castle.Core.Resource.IResourceFactory.Accept(Castle.Core.Resource.CustomUri)"> + <summary> + Used to check whether the resource factory + is able to deal with the given resource + identifier. + </summary> + <remarks> + Implementors should return <c>true</c> + only if the given identifier is supported + by the resource factory + </remarks> + <param name="uri"></param> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResourceFactory.Create(Castle.Core.Resource.CustomUri)"> + <summary> + Creates an <see cref="T:Castle.Core.Resource.IResource"/> instance + for the given resource identifier + </summary> + <param name="uri"></param> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResourceFactory.Create(Castle.Core.Resource.CustomUri,System.String)"> + <summary> + Creates an <see cref="T:Castle.Core.Resource.IResource"/> instance + for the given resource identifier + </summary> + <param name="uri"></param> + <param name="basePath"></param> + <returns></returns> + </member> + <member name="T:Castle.Core.Resource.FileResource"> + <summary> + + </summary> + </member> + <member name="T:Castle.Core.Resource.FileResourceFactory"> + <summary> + + </summary> + </member> + <member name="T:Castle.Core.Resource.StaticContentResource"> + <summary> + Adapts a static string content as an <see cref="T:Castle.Core.Resource.IResource"/> + </summary> + </member> + <member name="T:Castle.Core.Resource.UncResource"> + <summary> + Enable access to files on network shares + </summary> + </member> + <member name="T:Castle.Core.Smtp.IEmailSender"> + <summary> + Email sender abstraction. + </summary> + </member> + <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.String,System.String,System.String,System.String)"> + <summary> + Sends a mail message. + </summary> + <param name="from">From field</param> + <param name="to">To field</param> + <param name="subject">E-mail's subject</param> + <param name="messageText">message's body</param> + </member> + <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.Net.Mail.MailMessage)"> + <summary> + Sends a <see cref="T:System.Net.Mail.MailMessage">message</see>. + </summary> + <param name="message"><see cref="T:System.Net.Mail.MailMessage">Message</see> instance</param> + </member> + <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.Collections.Generic.IEnumerable{System.Net.Mail.MailMessage})"> + <summary> + Sends multiple <see cref="T:System.Net.Mail.MailMessage">messages</see>. + </summary> + <param name="messages">List of <see cref="T:System.Net.Mail.MailMessage">messages</see></param> + </member> + <member name="T:Castle.Core.Smtp.DefaultSmtpSender"> + <summary> + Default <see cref="T:Castle.Core.Smtp.IEmailSender"/> implementation. + </summary> + </member> + <member name="M:Castle.Core.Smtp.DefaultSmtpSender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Core.Smtp.DefaultSmtpSender"/> class based on the <see cref="T:System.Net.Mail.SmtpClient"/> configuration provided in the application configuration file. + </summary> + <remarks> + This constructor is based on the default <see cref="T:System.Net.Mail.SmtpClient"/> configuration in the application configuration file. + </remarks> + </member> + <member name="M:Castle.Core.Smtp.DefaultSmtpSender.#ctor(System.String)"> + <summary> + This service implementation + requires a host name in order to work + </summary> + <param name="hostname">The smtp server name</param> + </member> + <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Send(System.String,System.String,System.String,System.String)"> + <summary> + Sends a message. + </summary> + <exception cref="T:System.ArgumentNullException">If any of the parameters is null</exception> + <param name="from">From field</param> + <param name="to">To field</param> + <param name="subject">e-mail's subject</param> + <param name="messageText">message's body</param> + </member> + <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Send(System.Net.Mail.MailMessage)"> + <summary> + Sends a message. + </summary> + <exception cref="T:System.ArgumentNullException">If the message is null</exception> + <param name="message">Message instance</param> + </member> + <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Configure(System.Net.Mail.SmtpClient)"> + <summary> + Configures the sender + with port information and eventual credential + informed + </summary> + <param name="smtpClient">Message instance</param> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Port"> + <summary> + Gets or sets the port used to + access the SMTP server + </summary> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Hostname"> + <summary> + Gets the hostname. + </summary> + <value>The hostname.</value> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.AsyncSend"> + <summary> + Gets or sets a value which is used to + configure if emails are going to be sent asynchronously or not. + </summary> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Timeout"> + <summary> + Gets or sets a value that specifies + the amount of time after which a synchronous Send call times out. + </summary> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.UseSsl"> + <summary> + Gets or sets a value indicating whether the email should be sent using + a secure communication channel. + </summary> + <value><c>true</c> if should use SSL; otherwise, <c>false</c>.</value> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Domain"> + <summary> + Gets or sets the domain. + </summary> + <value>The domain.</value> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.UserName"> + <summary> + Gets or sets the name of the user. + </summary> + <value>The name of the user.</value> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Password"> + <summary> + Gets or sets the password. + </summary> + <value>The password.</value> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.HasCredentials"> + <summary> + Gets a value indicating whether credentials were informed. + </summary> + <value> + <see langword="true"/> if this instance has credentials; otherwise, <see langword="false"/>. + </value> + </member> + </members> +</doc> diff --git a/packages/Castle.Core.3.2.1/lib/net40-client/Castle.Core.dll b/packages/Castle.Core.3.2.1/lib/net40-client/Castle.Core.dll new file mode 100644 index 000000000..31f643974 Binary files /dev/null and b/packages/Castle.Core.3.2.1/lib/net40-client/Castle.Core.dll differ diff --git a/packages/Castle.Core.3.2.1/lib/net40-client/Castle.Core.xml b/packages/Castle.Core.3.2.1/lib/net40-client/Castle.Core.xml new file mode 100644 index 000000000..6fa66c00b --- /dev/null +++ b/packages/Castle.Core.3.2.1/lib/net40-client/Castle.Core.xml @@ -0,0 +1,4754 @@ +<?xml version="1.0"?> +<doc> + <assembly> + <name>Castle.Core</name> + </assembly> + <members> + <member name="T:Castle.Components.DictionaryAdapter.ReferenceAttribute"> + <summary> + Specifies assignment by reference rather than by copying. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IfExistsAttribute"> + <summary> + Suppresses any on-demand behaviors. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.RemoveIfEmptyAttribute"> + <summary> + Removes a property if null or empty string, guid or collection. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.RemoveIfAttribute"> + <summary> + Removes a property if matches value. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryBehaviorAttribute"> + <summary> + Assigns a specific dictionary key. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryBehavior"> + <summary> + Defines the contract for customizing dictionary access. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryBehavior.Copy"> + <summary> + Copies the dictionary behavior. + </summary> + <returns>null if should not be copied. Otherwise copy.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.IDictionaryBehavior.ExecutionOrder"> + <summary> + Determines relative order to apply related behaviors. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter"> + <summary> + Defines the contract for updating dictionary values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Sets the stored dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="value">The stored value.</param> + <param name="property">The property.</param> + <returns>true if the property should be stored.</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.ICondition"> + <summary> + Contract for value matching. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.VolatileAttribute"> + <summary> + Indicates that underlying values are changeable and should not be cached. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryInitializer"> + <summary> + Contract for dictionary initialization. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryInitializer.Initialize(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.Object[])"> + <summary> + Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="behaviors">The dictionary behaviors.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapterVisitor"> + <summary> + Abstract implementation of <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"/>. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"> + <summary> + Conract for traversing a <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryCreate"> + <summary> + Contract for creating additional Dictionary adapters. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"> + <summary> + Contract for manipulating the Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryEdit"> + <summary> + Contract for editing the Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryNotify"> + <summary> + Contract for managing Dictionary adapter notifications. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryValidate"> + <summary> + Contract for validating Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder"> + <summary> + Defines the contract for building <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryBehavior"/>s. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder.BuildBehaviors"> + <summary> + Builds the dictionary behaviors. + </summary> + <returns></returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter"> + <summary> + Abstract adapter for the <see cref="T:System.Collections.IDictionary"/> support + needed by the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory"/> + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Add(System.Object,System.Object)"> + <summary> + Adds an element with the provided key and value to the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <param name="key">The <see cref="T:System.Object"></see> to use as the key of the element to add.</param> + <param name="value">The <see cref="T:System.Object"></see> to use as the value of the element to add.</param> + <exception cref="T:System.ArgumentException">An element with the same key already exists in the <see cref="T:System.Collections.IDictionary"></see> object. </exception> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Clear"> + <summary> + Removes all elements from the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Contains(System.Object)"> + <summary> + Determines whether the <see cref="T:System.Collections.IDictionary"></see> object contains an element with the specified key. + </summary> + <param name="key">The key to locate in the <see cref="T:System.Collections.IDictionary"></see> object.</param> + <returns> + true if the <see cref="T:System.Collections.IDictionary"></see> contains an element with the key; otherwise, false. + </returns> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.GetEnumerator"> + <summary> + Returns an <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <returns> + An <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object. + </returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Remove(System.Object)"> + <summary> + Removes the element with the specified key from the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <param name="key">The key of the element to remove.</param> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.CopyTo(System.Array,System.Int32)"> + <summary> + Copies the elements of the <see cref="T:System.Collections.ICollection"></see> to an <see cref="T:System.Array"></see>, starting at a particular <see cref="T:System.Array"></see> index. + </summary> + <param name="array">The one-dimensional <see cref="T:System.Array"></see> that is the destination of the elements copied from <see cref="T:System.Collections.ICollection"></see>. The <see cref="T:System.Array"></see> must have zero-based indexing.</param> + <param name="index">The zero-based index in array at which copying begins.</param> + <exception cref="T:System.ArgumentNullException">array is null. </exception> + <exception cref="T:System.ArgumentException">The type of the source <see cref="T:System.Collections.ICollection"></see> cannot be cast automatically to the type of the destination array. </exception> + <exception cref="T:System.ArgumentOutOfRangeException">index is less than zero. </exception> + <exception cref="T:System.ArgumentException">array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source <see cref="T:System.Collections.ICollection"></see> is greater than the available space from index to the end of the destination array. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.System#Collections#IEnumerable#GetEnumerator"> + <summary> + Returns an enumerator that iterates through a collection. + </summary> + <returns> + An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection. + </returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsFixedSize"> + <summary> + Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size. + </summary> + <value></value> + <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size; otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsReadOnly"> + <summary> + Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object is read-only. + </summary> + <value></value> + <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object is read-only; otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Keys"> + <summary> + Gets an <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <value></value> + <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Values"> + <summary> + Gets an <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <value></value> + <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Item(System.Object)"> + <summary> + Gets or sets the <see cref="T:System.Object"/> with the specified key. + </summary> + <value></value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Count"> + <summary> + Gets the number of elements contained in the <see cref="T:System.Collections.ICollection"></see>. + </summary> + <value></value> + <returns>The number of elements contained in the <see cref="T:System.Collections.ICollection"></see>.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsSynchronized"> + <summary> + Gets a value indicating whether access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe). + </summary> + <value></value> + <returns>true if access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe); otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>. + </summary> + <value></value> + <returns>An object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>.</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.BindingList`1"> + <summary> + Provides a generic collection that supports data binding. + </summary> + <remarks> + This class wraps the CLR <see cref="T:System.ComponentModel.BindingList`1"/> + in order to implement the Castle-specific <see cref="T:Castle.Components.DictionaryAdapter.IBindingList`1"/>. + </remarks> + <typeparam name="T">The type of elements in the list.</typeparam> + </member> + <member name="M:Castle.Components.DictionaryAdapter.BindingList`1.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.BindingList`1"/> class + using default values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.BindingList`1.#ctor(System.Collections.Generic.IList{`0})"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.BindingList`1"/> class + with the specified list. + </summary> + <param name="list"> + An <see cref="T:System.Collections.Generic.IList`1"/> of items + to be contained in the <see cref="T:Castle.Components.DictionaryAdapter.BindingList`1"/>. + </param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.BindingList`1.#ctor(System.ComponentModel.BindingList{`0})"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.BindingList`1"/> class + wrapping the specified <see cref="T:System.ComponentModel.BindingList`1"/> instance. + </summary> + <param name="list"> + A <see cref="T:System.ComponentModel.BindingList`1"/> + to be wrapped by the <see cref="T:Castle.Components.DictionaryAdapter.BindingList`1"/>. + </param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter"> + <summary> + Defines the contract for retrieving dictionary values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the effective dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="property">The property.</param> + <param name="ifExists">true if return only existing.</param> + <returns>The effective property value.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.Xml.XmlAdapter.#ctor(Castle.Components.DictionaryAdapter.Xml.IXmlNode,Castle.Components.DictionaryAdapter.Xml.XmlReferenceManager)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.Xml.XmlAdapter"/> class + that represents a child object in a larger object graph. + </summary> + <param name="node"></param> + <param name="references"></param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer"> + <summary> + Contract for dictionary meta-data initialization. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer.Initialize(Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> + <summary> + Initializes the given <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> object. + </summary> + <param name="factory">The dictionary adapter factory.</param> + <param name="dictionaryMeta">The dictionary adapter meta.</param> + + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer.ShouldHaveBehavior(System.Object)"> + <summary> + Determines whether the given behavior should be included in a new + <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> object. + </summary> + <param name="behavior">A dictionary behavior or annotation.</param> + <returns>True if the behavior should be included; otherwise, false.</returns> + <remarks> + <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer"/> behaviors are always included, + regardless of the result of this method. + </remarks> + + </member> + <member name="M:Castle.Core.Internal.CollectionExtensions.IsNullOrEmpty(System.Collections.IEnumerable)"> + <summary> + Checks whether or not collection is null or empty. Assumes colleciton can be safely enumerated multiple times. + </summary> + <param name = "this"></param> + <returns></returns> + </member> + <member name="F:Castle.Core.Internal.InternalsVisible.ToCastleCore"> + <summary> + Constant to use when making assembly internals visible to Castle.Core + <c>[assembly: InternalsVisibleTo(CoreInternalsVisible.ToCastleCore)]</c> + </summary> + </member> + <member name="F:Castle.Core.Internal.InternalsVisible.ToDynamicProxyGenAssembly2"> + <summary> + Constant to use when making assembly internals visible to proxy types generated by DynamicProxy. Required when proxying internal types. + <c>[assembly: InternalsVisibleTo(CoreInternalsVisible.ToDynamicProxyGenAssembly2)]</c> + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.ComponentAttribute"> + <summary> + Identifies a property should be represented as a nested component. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder"> + <summary> + Defines the contract for building typed dictionary keys. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Builds the specified key. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The current key.</param> + <param name="property">The property.</param> + <returns>The updated key</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.NoPrefix"> + <summary> + Applies no prefix. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.Prefix"> + <summary> + Gets or sets the prefix. + </summary> + <value>The prefix.</value> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterAttribute"> + <summary> + Identifies the dictionary adapter types. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.FetchAttribute"> + <summary> + Identifies an interface or property to be pre-fetched. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor"> + <summary> + Instructs fetching to occur. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor(System.Boolean)"> + <summary> + Instructs fetching according to <paramref name="fetch"/> + </summary> + <param name="fetch"></param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.FetchAttribute.Fetch"> + <summary> + Gets whether or not fetching should occur. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.GroupAttribute"> + <summary> + Assigns a property to a group. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object)"> + <summary> + Constructs a group assignment. + </summary> + <param name="group">The group name.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object[])"> + <summary> + Constructs a group assignment. + </summary> + <param name="group">The group name.</param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.GroupAttribute.Group"> + <summary> + Gets the group the property is assigned to. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeyAttribute"> + <summary> + Assigns a specific dictionary key. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class. + </summary> + <param name="key">The key.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String[])"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class. + </summary> + <param name="keys">The compound key.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"> + <summary> + Assigns a prefix to the keyed properties of an interface. + </summary> + <remarks> + Key prefixes are not inherited by sub-interfaces. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor"> + <summary> + Initializes a default instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class. + </summary> + <param name="keyPrefix">The prefix for the keyed properties of the interface.</param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.KeyPrefix"> + <summary> + Gets the prefix key added to the properties of the interface. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute"> + <summary> + Substitutes part of key with another string. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute.#ctor(System.String,System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute"/> class. + </summary> + <param name="oldValue">The old value.</param> + <param name="newValue">The new value.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.MultiLevelEditAttribute"> + <summary> + Requests support for multi-level editing. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.NewGuidAttribute"> + <summary> + Generates a new GUID on demand. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.OnDemandAttribute"> + <summary> + Support for on-demand value resolution. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.StringFormatAttribute"> + <summary> + Provides simple string formatting from existing properties. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Format"> + <summary> + Gets the string format. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Properties"> + <summary> + Gets the format properties. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.StringListAttribute"> + <summary> + Identifies a property should be represented as a delimited string value. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringListAttribute.Separator"> + <summary> + Gets the separator. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.StringValuesAttribute"> + <summary> + Converts all properties to strings. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringValuesAttribute.Format"> + <summary> + Gets or sets the format. + </summary> + <value>The format.</value> + </member> + <member name="T:Castle.Components.DictionaryAdapter.SuppressNotificationsAttribute"> + <summary> + Suppress property change notifications. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer"> + <summary> + Contract for property descriptor initialization. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer.Initialize(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Object[])"> + <summary> + Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="propertyDescriptor">The property descriptor.</param> + <param name="behaviors">The property behaviors.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.TypeKeyPrefixAttribute"> + <summary> + Assigns a prefix to the keyed properties using the interface name. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter"> + <summary> + Manages conversion between property values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.#ctor(System.ComponentModel.TypeConverter)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter"/> class. + </summary> + <param name="converter">The converter.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the effective dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="property">The property.</param> + <param name="ifExists">true if return only existing.</param> + <returns>The effective property value.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.ExecutionOrder"> + <summary> + + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory"> + <summary> + Uses Reflection.Emit to expose the properties of a dictionary + through a dynamic implementation of a typed interface. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory"> + <summary> + Defines the contract for building typed dictionary adapters. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <typeparam name="T">The typed interface.</typeparam> + <param name="dictionary">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="dictionary">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="dictionary">The underlying source of properties.</param> + <param name="descriptor">The property descriptor.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Collections.Specialized.NameValueCollection)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.Specialized.NameValueCollection"/>. + </summary> + <typeparam name="T">The typed interface.</typeparam> + <param name="nameValues">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the namedValues.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.Specialized.NameValueCollection)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.Specialized.NameValueCollection"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="nameValues">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the namedValues.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Xml.XmlNode)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Xml.XmlNode"/>. + </summary> + <typeparam name="T">The typed interface.</typeparam> + <param name="xmlNode">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the <see cref="T:System.Xml.XmlNode"/>.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Xml.XmlNode)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Xml.XmlNode"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="xmlNode">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the <see cref="T:System.Xml.XmlNode"/>.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <param name="descriptor">The property descriptor.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <param name="other">Another <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> from which to copy behaviors.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``2(System.Collections.Generic.IDictionary{System.String,``1})"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Type,System.Collections.Generic.IDictionary{System.String,``0})"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Collections.Specialized.NameValueCollection)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.Specialized.NameValueCollection)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Xml.XmlNode)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Xml.XmlNode)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> + <inheritdoc /> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryValidator"> + <summary> + Contract for dictionary validation. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.IsValid(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> + <summary> + Determines if <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> is valid. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <returns>true if valid.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Validate(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> + <summary> + Validates the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <returns>The error summary information.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Validate(Castle.Components.DictionaryAdapter.IDictionaryAdapter,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Validates the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> for a property. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="property">The property to validate.</param> + <returns>The property summary information.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Invalidate(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> + <summary> + Invalidates any results cached by the validator. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter"> + <summary> + + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.#ctor(System.Collections.Specialized.NameValueCollection)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter"/> class. + </summary> + <param name="nameValues">The name values.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.Contains(System.Object)"> + <summary> + Determines whether the <see cref="T:System.Collections.IDictionary"></see> object contains an element with the specified key. + </summary> + <param name="key">The key to locate in the <see cref="T:System.Collections.IDictionary"></see> object.</param> + <returns> + true if the <see cref="T:System.Collections.IDictionary"></see> contains an element with the key; otherwise, false. + </returns> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.Adapt(System.Collections.Specialized.NameValueCollection)"> + <summary> + Adapts the specified name values. + </summary> + <param name="nameValues">The name values.</param> + <returns></returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.IsReadOnly"> + <summary> + Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object is read-only. + </summary> + <value></value> + <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object is read-only; otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.Item(System.Object)"> + <summary> + Gets or sets the <see cref="T:System.Object"/> with the specified key. + </summary> + <value></value> + </member> + <member name="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"> + <summary> + Describes a dictionary property. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor"> + <summary> + Initializes an empty <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(System.Reflection.PropertyInfo,System.Object[])"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + <param name="property">The property.</param> + <param name="annotations">The annotations.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(System.Object[])"> + <summary> + Initializes a new instance <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Copies an existinginstance of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + <param name="source"></param> + <param name="copyBehaviors"></param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets the key. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="descriptor">The descriptor.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the property value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="descriptor">The descriptor.</param> + <param name="ifExists">true if return only existing.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Sets the property value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="value">The value.</param> + <param name="descriptor">The descriptor.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehavior(Castle.Components.DictionaryAdapter.IDictionaryBehavior)"> + <summary> + Adds a single behavior. + </summary> + <param name="behavior">The behavior.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehaviors(Castle.Components.DictionaryAdapter.IDictionaryBehavior[])"> + <summary> + Adds the behaviors. + </summary> + <param name="behaviors">The behaviors.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehaviors(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryBehavior})"> + <summary> + Adds the behaviors. + </summary> + <param name="behaviors">The behaviors.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyBehaviors(Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Copies the behaviors to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="other"></param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.Copy"> + <summary> + Copies the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <returns></returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.ExecutionOrder"> + <summary> + + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyName"> + <summary> + Gets the property name. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyType"> + <summary> + Gets the property type. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Property"> + <summary> + Gets the property. + </summary> + <value>The property.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.IsDynamicProperty"> + <summary> + Returns true if the property is dynamic. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.State"> + <summary> + Gets additional state. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Fetch"> + <summary> + Determines if property should be fetched. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.IfExists"> + <summary> + Determines if property must exist first. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.SuppressNotifications"> + <summary> + Determines if notifications should occur. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Annotations"> + <summary> + Gets the property behaviors. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.TypeConverter"> + <summary> + Gets the type converter. + </summary> + <value>The type converter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.ExtendedProperties"> + <summary> + Gets the extended properties. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Behaviors"> + <summary> + Gets the setter. + </summary> + <value>The setter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.KeyBuilders"> + <summary> + Gets the key builders. + </summary> + <value>The key builders.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Setters"> + <summary> + Gets the setter. + </summary> + <value>The setter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Getters"> + <summary> + Gets the getter. + </summary> + <value>The getter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Initializers"> + <summary> + Gets the initializers. + </summary> + <value>The initializers.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.MetaInitializers"> + <summary> + Gets the meta-data initializers. + </summary> + <value>The meta-data initializers.</value> + </member> + <member name="T:Castle.Core.Internal.AttributesUtil"> + <summary> + Helper class for retrieving attributes. + </summary> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetAttribute``1(System.Reflection.ICustomAttributeProvider)"> + <summary> + Gets the attribute. + </summary> + <param name = "member">The member.</param> + <returns>The member attribute.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetAttributes``1(System.Reflection.ICustomAttributeProvider)"> + <summary> + Gets the attributes. Does not consider inherited attributes! + </summary> + <param name = "member">The member.</param> + <returns>The member attributes.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeAttribute``1(System.Type)"> + <summary> + Gets the type attribute. + </summary> + <param name = "type">The type.</param> + <returns>The type attribute.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeAttributes``1(System.Type)"> + <summary> + Gets the type attributes. + </summary> + <param name = "type">The type.</param> + <returns>The type attributes.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeConverter(System.Reflection.MemberInfo)"> + <summary> + Gets the type converter. + </summary> + <param name = "member">The member.</param> + <returns></returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.HasAttribute``1(System.Reflection.ICustomAttributeProvider)"> + <summary> + Gets the attribute. + </summary> + <param name = "member">The member.</param> + <returns>The member attribute.</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDynamicValue`1"> + <summary> + Contract for typed dynamic value resolution. + </summary> + <typeparam name="T"></typeparam> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDynamicValue"> + <summary> + Contract for dynamic value resolution. + </summary> + </member> + <member name="T:Castle.Core.Logging.LoggerLevel"> + <summary> + Supporting Logger levels. + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Off"> + <summary> + Logging will be off + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Fatal"> + <summary> + Fatal logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Error"> + <summary> + Error logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Warn"> + <summary> + Warn logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Info"> + <summary> + Info logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Debug"> + <summary> + Debug logging level + </summary> + </member> + <member name="T:Castle.DynamicProxy.IInvocation"> + <summary> + Encapsulates an invocation of a proxied method. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.GetArgumentValue(System.Int32)"> + <summary> + Gets the value of the argument at the specified <paramref name = "index" />. + </summary> + <param name = "index">The index.</param> + <returns>The value of the argument at the specified <paramref name = "index" />.</returns> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.GetConcreteMethod"> + <summary> + Returns the concrete instantiation of the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> on the proxy, with any generic + parameters bound to real types. + </summary> + <returns> + The concrete instantiation of the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> on the proxy, or the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> if + not a generic method. + </returns> + <remarks> + Can be slower than calling <see cref="P:Castle.DynamicProxy.IInvocation.Method"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.GetConcreteMethodInvocationTarget"> + <summary> + Returns the concrete instantiation of <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>, with any + generic parameters bound to real types. + For interface proxies, this will point to the <see cref="T:System.Reflection.MethodInfo"/> on the target class. + </summary> + <returns>The concrete instantiation of <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>, or + <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/> if not a generic method.</returns> + <remarks> + In debug builds this can be slower than calling <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.Proceed"> + <summary> + Proceeds the call to the next interceptor in line, and ultimately to the target method. + </summary> + <remarks> + Since interface proxies without a target don't have the target implementation to proceed to, + it is important, that the last interceptor does not call this method, otherwise a + <see cref="T:System.NotImplementedException"/> will be thrown. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.SetArgumentValue(System.Int32,System.Object)"> + <summary> + Overrides the value of an argument at the given <paramref name="index"/> with the + new <paramref name="value"/> provided. + </summary> + <remarks> + This method accepts an <see cref="T:System.Object"/>, however the value provided must be compatible + with the type of the argument defined on the method, otherwise an exception will be thrown. + </remarks> + <param name="index">The index of the argument to override.</param> + <param name="value">The new value for the argument.</param> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.Arguments"> + <summary> + Gets the arguments that the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> has been invoked with. + </summary> + <value>The arguments the method was invoked with.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.GenericArguments"> + <summary> + Gets the generic arguments of the method. + </summary> + <value>The generic arguments, or null if not a generic method.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.InvocationTarget"> + <summary> + Gets the object on which the invocation is performed. This is different from proxy object + because most of the time this will be the proxy target object. + </summary> + <seealso cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> + <value>The invocation target.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.Method"> + <summary> + Gets the <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked on the proxy. + </summary> + <value>The <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"> + <summary> + For interface proxies, this will point to the <see cref="T:System.Reflection.MethodInfo"/> on the target class. + </summary> + <value>The method invocation target.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.Proxy"> + <summary> + Gets the proxy object on which the intercepted method is invoked. + </summary> + <value>Proxy object on which the intercepted method is invoked.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.ReturnValue"> + <summary> + Gets or sets the return value of the method. + </summary> + <value>The return value of the method.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.TargetType"> + <summary> + Gets the type of the target object for the intercepted method. + </summary> + <value>The type of the target object.</value> + </member> + <member name="T:Castle.DynamicProxy.IProxyGenerationHook"> + <summary> + Used during the target type inspection process. Implementors have a chance to customize the + proxy generation process. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyGenerationHook.MethodsInspected"> + <summary> + Invoked by the generation process to notify that the whole process has completed. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyGenerationHook.NonProxyableMemberNotification(System.Type,System.Reflection.MemberInfo)"> + <summary> + Invoked by the generation process to notify that a member was not marked as virtual. + </summary> + <param name = "type">The type which declares the non-virtual member.</param> + <param name = "memberInfo">The non-virtual member.</param> + <remarks> + This method gives an opportunity to inspect any non-proxyable member of a type that has + been requested to be proxied, and if appropriate - throw an exception to notify the caller. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IProxyGenerationHook.ShouldInterceptMethod(System.Type,System.Reflection.MethodInfo)"> + <summary> + Invoked by the generation process to determine if the specified method should be proxied. + </summary> + <param name = "type">The type which declares the given method.</param> + <param name = "methodInfo">The method to inspect.</param> + <returns>True if the given method should be proxied; false otherwise.</returns> + </member> + <member name="T:Castle.DynamicProxy.Contributors.ITypeContributor"> + <summary> + Interface describing elements composing generated type + </summary> + </member> + <member name="M:Castle.DynamicProxy.Contributors.MembersCollector.AcceptMethod(System.Reflection.MethodInfo,System.Boolean,Castle.DynamicProxy.IProxyGenerationHook)"> + <summary> + Performs some basic screening and invokes the <see cref="T:Castle.DynamicProxy.IProxyGenerationHook"/> + to select methods. + </summary> + <param name="method"></param> + <param name="onlyVirtuals"></param> + <param name="hook"></param> + <returns></returns> + </member> + <member name="T:Castle.DynamicProxy.IAttributeDisassembler"> + <summary> + Provides functionality for disassembling instances of attributes to CustomAttributeBuilder form, during the process of emiting new types by Dynamic Proxy. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IAttributeDisassembler.Disassemble(System.Attribute)"> + <summary> + Disassembles given attribute instance back to corresponding CustomAttributeBuilder. + </summary> + <param name="attribute">An instance of attribute to disassemble</param> + <returns><see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> corresponding 1 to 1 to given attribute instance, or null reference.</returns> + <remarks> + Implementers should return <see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> that corresponds to given attribute instance 1 to 1, + that is after calling specified constructor with specified arguments, and setting specified properties and fields with values specified + we should be able to get an attribute instance identical to the one passed in <paramref name="attribute"/>. Implementer can return null + if it wishes to opt out of replicating the attribute. Notice however, that for some cases, like attributes passed explicitly by the user + it is illegal to return null, and doing so will result in exception. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.HandleError(System.Type,System.Exception)"> + <summary> + Handles error during disassembly process + </summary> + <param name = "attributeType">Type of the attribute being disassembled</param> + <param name = "exception">Exception thrown during the process</param> + <returns>usually null, or (re)throws the exception</returns> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.InitializeConstructorArgs(System.Type,System.Attribute,System.Reflection.ParameterInfo[])"> + <summary> + Here we try to match a constructor argument to its value. + Since we can't get the values from the assembly, we use some heuristics to get it. + a/ we first try to match all the properties on the attributes by name (case insensitive) to the argument + b/ if we fail we try to match them by property type, with some smarts about convertions (i,e: can use Guid for string). + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ReplaceIfBetterMatch(System.Reflection.ParameterInfo,System.Reflection.PropertyInfo,System.Reflection.PropertyInfo)"> + <summary> + We have the following rules here. + Try to find a matching type, failing that, if the parameter is string, get the first property (under the assumption that + we can convert it. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ConvertValue(System.Object,System.Type)"> + <summary> + Attributes can only accept simple types, so we return null for null, + if the value is passed as string we call to string (should help with converting), + otherwise, we use the value as is (enums, integer, etc). + </summary> + </member> + <member name="M:Castle.DynamicProxy.Internal.TypeUtil.GetAllInterfaces(System.Type[])"> + <summary> + Returns list of all unique interfaces implemented given types, including their base interfaces. + </summary> + <param name="types"> </param> + <returns> </returns> + </member> + <member name="T:Castle.DynamicProxy.Serialization.CacheMappingsAttribute"> + <summary> + Applied to the assemblies saved by <see cref="T:Castle.DynamicProxy.ModuleScope"/> in order to persist the cache data included in the persisted assembly. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.BaseProxyGenerator"> + <summary> + Base class that exposes the common functionalities + to proxy generation. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.AddMappingNoCheck(System.Type,Castle.DynamicProxy.Contributors.ITypeContributor,System.Collections.Generic.IDictionary{System.Type,Castle.DynamicProxy.Contributors.ITypeContributor})"> + <summary> + It is safe to add mapping (no mapping for the interface exists) + </summary> + <param name = "implementer"></param> + <param name = "interface"></param> + <param name = "mapping"></param> + </member> + <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.GenerateParameterlessConstructor(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Type,Castle.DynamicProxy.Generators.Emitters.SimpleAST.FieldReference)"> + <summary> + Generates a parameters constructor that initializes the proxy + state with <see cref="T:Castle.DynamicProxy.StandardInterceptor"/> just to make it non-null. + <para> + This constructor is important to allow proxies to be XML serializable + </para> + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.InvocationTypeGenerator.GetBaseCtorArguments(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Reflection.ConstructorInfo@)"> + <summary> + Generates the constructor for the class that extends + <see cref="T:Castle.DynamicProxy.AbstractInvocation"/> + </summary> + <param name="targetFieldType"></param> + <param name="proxyGenerationOptions"></param> + <param name="baseConstructor"></param> + </member> + <member name="T:Castle.DynamicProxy.DefaultProxyBuilder"> + <summary> + Default implementation of <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> interface producing in-memory proxy assemblies. + </summary> + </member> + <member name="T:Castle.DynamicProxy.IProxyBuilder"> + <summary> + Abstracts the implementation of proxy type construction. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type for given <paramref name="classToProxy"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided. + </summary> + <param name="classToProxy">The class type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified class and interfaces. + Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.) + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.ClassProxyGenerator"/> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type that proxies calls to <paramref name="interfaceToProxy"/> members on <paramref name="targetType"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided. + </summary> + <param name="interfaceToProxy">The interface type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="targetType">Type implementing <paramref name="interfaceToProxy"/> on which calls to the interface members should be intercepted.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified interface that 'proceeds' executions to the specified target. + Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.) + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator"/> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type for given <paramref name="interfaceToProxy"/> and <parmaref name="additionalInterfacesToProxy"/> that delegates all calls to the provided interceptors and allows interceptors to switch the actual target of invocation. + </summary> + <param name="interfaceToProxy">The interface type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified interface(s) that delegate all executions to the specified interceptors + and uses an instance of the interface as their targets (i.e. <see cref="P:Castle.DynamicProxy.IInvocation.InvocationTarget"/>), rather than a class. All <see cref="T:Castle.DynamicProxy.IInvocation"/> classes should then implement <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface, + to allow interceptors to switch invocation target with instance of another type implementing called interface. + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetInterfaceGenerator"/> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type for given <paramref name="interfaceToProxy"/> that delegates all calls to the provided interceptors. + </summary> + <param name="interfaceToProxy">The interface type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified interface and additional interfaces that delegate all executions to the specified interceptors. + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithoutTargetGenerator"/> + </member> + <member name="P:Castle.DynamicProxy.IProxyBuilder.Logger"> + <summary> + Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> logs to. + </summary> + </member> + <member name="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope"> + <summary> + Gets the <see cref="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope"/> associated with this builder. + </summary> + <value>The module scope associated with this builder.</value> + </member> + <member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class with new <see cref="P:Castle.DynamicProxy.DefaultProxyBuilder.ModuleScope"/>. + </summary> + </member> + <member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor(Castle.DynamicProxy.ModuleScope)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class. + </summary> + <param name="scope">The module scope for generated proxy types.</param> + </member> + <member name="M:Castle.DynamicProxy.Internal.AttributeUtil.AddDisassembler``1(Castle.DynamicProxy.IAttributeDisassembler)"> + <summary> + Registers custom disassembler to handle disassembly of specified type of attributes. + </summary> + <typeparam name="TAttribute">Type of attributes to handle</typeparam> + <param name="disassembler">Disassembler converting existing instances of Attributes to CustomAttributeBuilders</param> + <remarks> + When disassembling an attribute Dynamic Proxy will first check if an custom disassembler has been registered to handle attributes of that type, + and if none is found, it'll use the <see cref="P:Castle.DynamicProxy.Internal.AttributeUtil.FallbackDisassembler"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Internal.AttributeUtil.ShouldSkipAttributeReplication(System.Type)"> + <summary> + Attributes should be replicated if they are non-inheritable, + but there are some special cases where the attributes means + something to the CLR, where they should be skipped. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Reflection.MemberInfo,System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class. + </summary> + <param name="target">Target element. This is either target type or target method for invocation types.</param> + <param name="type">The type of the proxy. This is base type for invocation types.</param> + <param name="interfaces">The interfaces.</param> + <param name="options">The options.</param> + </member> + <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class. + </summary> + <param name="target">Type of the target.</param> + <param name="interfaces">The interfaces.</param> + <param name="options">The options.</param> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.LdcOpCodesDictionary"> + <summary> + s + Provides appropriate Ldc.X opcode for the type of primitive value to be loaded. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.LdindOpCodesDictionary"> + <summary> + Provides appropriate Ldind.X opcode for + the type of primitive value to be loaded indirectly. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadIndirectOpCodeForType(System.Reflection.Emit.ILGenerator,System.Type)"> + <summary> + Emits a load indirect opcode of the appropriate type for a value or object reference. + Pops a pointer off the evaluation stack, dereferences it and loads + a value of the specified type. + </summary> + <param name = "gen"></param> + <param name = "type"></param> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadOpCodeForConstantValue(System.Reflection.Emit.ILGenerator,System.Object)"> + <summary> + Emits a load opcode of the appropriate kind for a constant string or + primitive value. + </summary> + <param name = "gen"></param> + <param name = "value"></param> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadOpCodeForDefaultValueOfType(System.Reflection.Emit.ILGenerator,System.Type)"> + <summary> + Emits a load opcode of the appropriate kind for the constant default value of a + type, such as 0 for value types and null for reference types. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitStoreIndirectOpCodeForType(System.Reflection.Emit.ILGenerator,System.Type)"> + <summary> + Emits a store indirectopcode of the appropriate type for a value or object reference. + Pops a value of the specified type and a pointer off the evaluation stack, and + stores the value. + </summary> + <param name = "gen"></param> + <param name = "type"></param> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.PropertiesCollection"> + <summary> + Summary description for PropertiesCollection. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.IndirectReference"> + <summary> + Wraps a reference that is passed + ByRef and provides indirect load/store support. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.NewArrayExpression"> + <summary> + Summary description for NewArrayExpression. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.ReferencesToObjectArrayExpression"> + <summary> + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.StindOpCodesDictionary"> + <summary> + Provides appropriate Stind.X opcode + for the type of primitive value to be stored indirectly. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.MetaEvent.#ctor(System.String,System.Type,System.Type,Castle.DynamicProxy.Generators.MetaMethod,Castle.DynamicProxy.Generators.MetaMethod,System.Reflection.EventAttributes)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.MetaEvent"/> class. + </summary> + <param name="name">The name.</param> + <param name="declaringType">Type declaring the original event being overriten, or null.</param> + <param name="eventDelegateType"></param> + <param name="adder">The add method.</param> + <param name="remover">The remove method.</param> + <param name="attributes">The attributes.</param> + </member> + <member name="T:Castle.DynamicProxy.Generators.INamingScope"> + <summary> + Represents the scope of uniquenes of names for types and their members + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)"> + <summary> + Gets a unique name based on <paramref name="suggestedName"/> + </summary> + <param name="suggestedName">Name suggested by the caller</param> + <returns>Unique name based on <paramref name="suggestedName"/>.</returns> + <remarks> + Implementers should provide name as closely resembling <paramref name="suggestedName"/> as possible. + Generally if no collision occurs it is suggested to return suggested name, otherwise append sequential suffix. + Implementers must return deterministic names, that is when <see cref="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)"/> is called twice + with the same suggested name, the same returned name should be provided each time. Non-deterministic return + values, like appending random suffices will break serialization of proxies. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Generators.INamingScope.SafeSubScope"> + <summary> + Returns new, disposable naming scope. It is responsibilty of the caller to make sure that no naming collision + with enclosing scope, or other subscopes is possible. + </summary> + <returns>New naming scope.</returns> + </member> + <member name="T:Castle.DynamicProxy.Generators.MethodFinder"> + <summary> + Returns the methods implemented by a type. Use this instead of Type.GetMethods() to work around a CLR issue + where duplicate MethodInfos are returned by Type.GetMethods() after a token of a generic type's method was loaded. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Internal.InternalsUtil.IsInternal(System.Reflection.MethodBase)"> + <summary> + Determines whether the specified method is internal. + </summary> + <param name = "method">The method.</param> + <returns> + <c>true</c> if the specified method is internal; otherwise, <c>false</c>. + </returns> + </member> + <member name="M:Castle.DynamicProxy.Internal.InternalsUtil.IsInternalToDynamicProxy(System.Reflection.Assembly)"> + <summary> + Determines whether this assembly has internals visible to dynamic proxy. + </summary> + <param name = "asm">The assembly to inspect.</param> + </member> + <member name="M:Castle.DynamicProxy.Internal.InternalsUtil.IsAccessible(System.Reflection.MethodBase)"> + <summary> + Checks if the method is public or protected. + </summary> + <param name = "method"></param> + <returns></returns> + </member> + <member name="M:Castle.DynamicProxy.MixinData.#ctor(System.Collections.Generic.IEnumerable{System.Object})"> + <summary> + Because we need to cache the types based on the mixed in mixins, we do the following here: + - Get all the mixin interfaces + - Sort them by full name + - Return them by position + + The idea is to have reproducible behavior for the case that mixins are registered in different orders. + This method is here because it is required + </summary> + </member> + <member name="T:Castle.DynamicProxy.ModuleScope"> + <summary> + Summary description for ModuleScope. + </summary> + </member> + <member name="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"> + <summary> + The default file name used when the assembly is saved using <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/>. + </summary> + </member> + <member name="F:Castle.DynamicProxy.ModuleScope.DEFAULT_ASSEMBLY_NAME"> + <summary> + The default assembly (simple) name used for the assemblies generated by a <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class; assemblies created by this instance will not be saved. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean,System.String,System.String,System.String,System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved and what simple names are to be assigned to them. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> + <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean,Castle.DynamicProxy.Generators.INamingScope,System.String,System.String,System.String,System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved and what simple names are to be assigned to them. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> + <param name="namingScope">Naming scope used to provide unique names to generated types and their members (usually via sub-scopes).</param> + <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.GetFromCache(Castle.DynamicProxy.Generators.CacheKey)"> + <summary> + Returns a type from this scope's type cache, or null if the key cannot be found. + </summary> + <param name = "key">The key to be looked up in the cache.</param> + <returns>The type from this scope's type cache matching the key, or null if the key cannot be found</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.RegisterInCache(Castle.DynamicProxy.Generators.CacheKey,System.Type)"> + <summary> + Registers a type in this scope's type cache. + </summary> + <param name = "key">The key to be associated with the type.</param> + <param name = "type">The type to be stored in the cache.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.GetKeyPair"> + <summary> + Gets the key pair used to sign the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>. + </summary> + <returns></returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModule(System.Boolean)"> + <summary> + Gets the specified module generated by this scope, creating a new one if none has yet been generated. + </summary> + <param name = "isStrongNamed">If set to true, a strong-named module is returned; otherwise, a weak-named module is returned.</param> + <returns>A strong-named or weak-named module generated by this scope, as specified by the <paramref + name = "isStrongNamed" /> parameter.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithStrongName"> + <summary> + Gets the strong-named module generated by this scope, creating a new one if none has yet been generated. + </summary> + <returns>A strong-named module generated by this scope.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithWeakName"> + <summary> + Gets the weak-named module generated by this scope, creating a new one if none has yet been generated. + </summary> + <returns>A weak-named module generated by this scope.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"> + <summary> + Saves the generated assembly with the name and directory information given when this <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance was created (or with + the <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/> and current directory if none was given). + </summary> + <remarks> + <para> + This method stores the generated assembly in the directory passed as part of the module information specified when this instance was + constructed (if any, else the current directory is used). If both a strong-named and a weak-named assembly + have been generated, it will throw an exception; in this case, use the <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly(System.Boolean)"/> overload. + </para> + <para> + If this <see cref="T:Castle.DynamicProxy.ModuleScope"/> was created without indicating that the assembly should be saved, this method does nothing. + </para> + </remarks> + <exception cref="T:System.InvalidOperationException">Both a strong-named and a weak-named assembly have been generated.</exception> + <returns>The path of the generated assembly file, or null if no file has been generated.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.SaveAssembly(System.Boolean)"> + <summary> + Saves the specified generated assembly with the name and directory information given when this <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance was created + (or with the <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/> and current directory if none was given). + </summary> + <param name="strongNamed">True if the generated assembly with a strong name should be saved (see <see cref="P:Castle.DynamicProxy.ModuleScope.StrongNamedModule"/>); + false if the generated assembly without a strong name should be saved (see <see cref="P:Castle.DynamicProxy.ModuleScope.WeakNamedModule"/>.</param> + <remarks> + <para> + This method stores the specified generated assembly in the directory passed as part of the module information specified when this instance was + constructed (if any, else the current directory is used). + </para> + <para> + If this <see cref="T:Castle.DynamicProxy.ModuleScope"/> was created without indicating that the assembly should be saved, this method does nothing. + </para> + </remarks> + <exception cref="T:System.InvalidOperationException">No assembly has been generated that matches the <paramref name="strongNamed"/> parameter. + </exception> + <returns>The path of the generated assembly file, or null if no file has been generated.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.LoadAssemblyIntoCache(System.Reflection.Assembly)"> + <summary> + Loads the generated types from the given assembly into this <see cref="T:Castle.DynamicProxy.ModuleScope"/>'s cache. + </summary> + <param name="assembly">The assembly to load types from. This assembly must have been saved via <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly(System.Boolean)"/> or + <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"/>, or it must have the <see cref="T:Castle.DynamicProxy.Serialization.CacheMappingsAttribute"/> manually applied.</param> + <remarks> + This method can be used to load previously generated and persisted proxy types from disk into this scope's type cache, eg. in order + to avoid the performance hit associated with proxy generation. + </remarks> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.Lock"> + <summary> + Users of this <see cref="T:Castle.DynamicProxy.ModuleScope"/> should use this lock when accessing the cache. + </summary> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModule"> + <summary> + Gets the strong-named module generated by this scope, or <see langword = "null" /> if none has yet been generated. + </summary> + <value>The strong-named module generated by this scope, or <see langword = "null" /> if none has yet been generated.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModuleName"> + <summary> + Gets the file name of the strongly named module generated by this scope. + </summary> + <value>The file name of the strongly named module generated by this scope.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModuleDirectory"> + <summary> + Gets the directory where the strongly named module generated by this scope will be saved, or <see langword="null"/> if the current directory + is used. + </summary> + <value>The directory where the strongly named module generated by this scope will be saved when <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"/> is called + (if this scope was created to save modules).</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModule"> + <summary> + Gets the weak-named module generated by this scope, or <see langword = "null" /> if none has yet been generated. + </summary> + <value>The weak-named module generated by this scope, or <see langword = "null" /> if none has yet been generated.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModuleName"> + <summary> + Gets the file name of the weakly named module generated by this scope. + </summary> + <value>The file name of the weakly named module generated by this scope.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModuleDirectory"> + <summary> + Gets the directory where the weakly named module generated by this scope will be saved, or <see langword="null"/> if the current directory + is used. + </summary> + <value>The directory where the weakly named module generated by this scope will be saved when <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"/> is called + (if this scope was created to save modules).</value> + </member> + <member name="T:Castle.DynamicProxy.PersistentProxyBuilder"> + <summary> + ProxyBuilder that persists the generated type. + </summary> + <remarks> + The saved assembly contains just the last generated type. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.PersistentProxyBuilder.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.PersistentProxyBuilder"/> class. + </summary> + </member> + <member name="M:Castle.DynamicProxy.PersistentProxyBuilder.SaveAssembly"> + <summary> + Saves the generated assembly to a physical file. Note that this renders the <see cref="T:Castle.DynamicProxy.PersistentProxyBuilder"/> unusable. + </summary> + <returns>The path of the generated assembly file, or null if no assembly has been generated.</returns> + <remarks> + This method does not support saving multiple files. If both a signed and an unsigned module have been generated, use the + respective methods of the <see cref="T:Castle.DynamicProxy.ModuleScope"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerationOptions.#ctor(Castle.DynamicProxy.IProxyGenerationHook)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/> class. + </summary> + <param name="hook">The hook.</param> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerationOptions.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/> class. + </summary> + </member> + <member name="T:Castle.DynamicProxy.ProxyGenerator"> + <summary> + Provides proxy objects for classes and interfaces. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor(Castle.DynamicProxy.IProxyBuilder)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. + </summary> + <param name="builder">Proxy types builder.</param> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor(System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. + </summary> + <param name="disableSignedModule">If <c>true</c> forces all types to be generated into an unsigned module.</param> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns>Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object.</returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/>is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/>is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor)"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptor"/>. + </summary> + <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> + <param name="interceptor">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.IInterceptor)"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptor"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="interceptor">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of <paramref name="additionalInterfacesToProxy"/> to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget``1(``0,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no parameterless constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy``1(Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no parameterless constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for class proxy with given <paramref name="classToProxy"/> class, implementing given <paramref name="additionalInterfacesToProxy"/> and using provided <paramref name="options"/>. + </summary> + <param name="classToProxy">The base class for proxy type.</param> + <param name="additionalInterfacesToProxy">The interfaces that proxy type should implement.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for interface proxy with target for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> on given <paramref name="targetType"/> and using provided <paramref name="options"/>. + </summary> + <param name="interfaceToProxy">The interface proxy type should implement.</param> + <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> + <param name="targetType">Actual type that the proxy type will encompass.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for interface proxy with target interface for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> on given <paramref name="interfaceToProxy"/> and using provided <paramref name="options"/>. + </summary> + <param name="interfaceToProxy">The interface proxy type should implement.</param> + <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for interface proxy without target for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> and using provided <paramref name="options"/>. + </summary> + <param name="interfaceToProxy">The interface proxy type should implement.</param> + <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="P:Castle.DynamicProxy.ProxyGenerator.Logger"> + <summary> + Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> log to. + </summary> + </member> + <member name="P:Castle.DynamicProxy.ProxyGenerator.ProxyBuilder"> + <summary> + Gets the proxy builder instance used to generate proxy types. + </summary> + <value>The proxy builder.</value> + </member> + <member name="M:Castle.DynamicProxy.Serialization.RemotableInvocation.Proceed"> + <summary> + </summary> + <returns></returns> + </member> + <member name="P:Castle.DynamicProxy.Serialization.RemotableInvocation.Method"> + <summary> + </summary> + </member> + <member name="P:Castle.DynamicProxy.Serialization.RemotableInvocation.MethodInvocationTarget"> + <summary> + For interface proxies, this will point to the + <see cref="T:System.Reflection.MethodInfo"/> on the target class + </summary> + </member> + <member name="T:Castle.DynamicProxy.Serialization.ProxyObjectReference"> + <summary> + Handles the deserialization of proxies. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.ResetScope"> + <summary> + Resets the <see cref="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"/> used for deserialization to a new scope. + </summary> + <remarks> + This is useful for test cases. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.SetScope(Castle.DynamicProxy.ModuleScope)"> + <summary> + Resets the <see cref="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"/> used for deserialization to a given <paramref name="scope"/>. + </summary> + <param name="scope"> The scope to be used for deserialization. </param> + <remarks> + By default, the deserialization process uses a different scope than the rest of the application, which can lead to multiple proxies + being generated for the same type. By explicitly setting the deserialization scope to the application's scope, this can be avoided. + </remarks> + </member> + <member name="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"> + <summary> + Gets the <see cref="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"/> used for deserialization. + </summary> + <value> As <see cref="T:Castle.DynamicProxy.Serialization.ProxyObjectReference"/> has no way of automatically determining the scope used by the application (and the application might use more than one scope at the same time), <see cref="T:Castle.DynamicProxy.Serialization.ProxyObjectReference"/> uses a dedicated scope instance for deserializing proxy types. This instance can be reset and set to a specific value via <see cref="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.ResetScope"/> and <see cref="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.SetScope(Castle.DynamicProxy.ModuleScope)"/> . </value> + </member> + <member name="T:Castle.DynamicProxy.Tokens.InvocationMethods"> + <summary> + Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:Castle.DynamicProxy.AbstractInvocation"/> class. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Tokens.SerializationInfoMethods"> + <summary> + Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:System.Runtime.Serialization.SerializationInfo"/> class. + </summary> + </member> + <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Bool"> + <summary> + <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Boolean)"/> + </summary> + </member> + <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Int32"> + <summary> + <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Int32)"/> + </summary> + </member> + <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Object"> + <summary> + <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Object)"/> + </summary> + </member> + <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.GetValue"> + <summary> + <see cref="M:System.Runtime.Serialization.SerializationInfo.GetValue(System.String,System.Type)"/> + </summary> + </member> + <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.SetType"> + <summary> + <see cref="M:System.Runtime.Serialization.SerializationInfo.SetType(System.Type)"/> + </summary> + </member> + <member name="T:Castle.DynamicProxy.IInterceptorSelector"> + <summary> + Provides an extension point that allows proxies to choose specific interceptors on + a per method basis. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IInterceptorSelector.SelectInterceptors(System.Type,System.Reflection.MethodInfo,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Selects the interceptors that should intercept calls to the given <paramref name="method"/>. + </summary> + <param name="type">The type declaring the method to intercept.</param> + <param name="method">The method that will be intercepted.</param> + <param name="interceptors">All interceptors registered with the proxy.</param> + <returns>An array of interceptors to invoke upon calling the <paramref name="method"/>.</returns> + <remarks> + This method is called only once per proxy instance, upon the first call to the + <paramref name="method"/>. Either an empty array or null are valid return values to indicate + that no interceptor should intercept calls to the method. Although it is not advised, it is + legal to return other <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations than these provided in + <paramref name="interceptors"/>. + </remarks> + </member> + <member name="M:Castle.Core.Internal.Lock.Create"> + <summary> + Creates a new lock. + </summary> + <returns></returns> + </member> + <member name="T:Castle.Core.IServiceProviderExAccessor"> + <summary> + This interface should be implemented by classes + that are available in a bigger context, exposing + the container to different areas in the same application. + <para> + For example, in Web application, the (global) HttpApplication + subclasses should implement this interface to expose + the configured container + </para> + </summary> + </member> + <member name="T:Castle.DynamicProxy.IChangeProxyTarget"> + <summary> + Exposes means to change target objects of proxies and invocations + </summary> + </member> + <member name="M:Castle.DynamicProxy.IChangeProxyTarget.ChangeInvocationTarget(System.Object)"> + <summary> + Changes the target object (<see cref="P:Castle.DynamicProxy.IInvocation.InvocationTarget"/>) of current <see cref="T:Castle.DynamicProxy.IInvocation"/>. + </summary> + <param name="target">The new value of target of invocation.</param> + <remarks> + Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to <see cref="P:Castle.DynamicProxy.IInvocation.TargetType"/>, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown. + Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws. + Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws. + </remarks> + <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception> + </member> + <member name="M:Castle.DynamicProxy.IChangeProxyTarget.ChangeProxyTarget(System.Object)"> + <summary> + Permanently changes the target object of the proxy. This does not affect target of the current invocation. + </summary> + <param name="target">The new value of target of the proxy.</param> + <remarks> + Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to proxy's target type, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown. + Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws. + Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws. + </remarks> + <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception> + </member> + <member name="T:Castle.DynamicProxy.IInterceptor"> + <summary> + New interface that is going to be used by DynamicProxy 2 + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyTargetAccessor.DynProxyGetTarget"> + <summary> + Get the proxy target (note that null is a valid target!) + </summary> + <returns></returns> + </member> + <member name="M:Castle.DynamicProxy.IProxyTargetAccessor.GetInterceptors"> + <summary> + Gets the interceptors for the proxy + </summary> + <returns></returns> + </member> + <member name="T:Castle.Core.IServiceEnabledComponent"> + <summary> + Defines that the implementation wants a + <see cref="T:System.IServiceProvider"/> in order to + access other components. The creator must be aware + that the component might (or might not) implement + the interface. + </summary> + <remarks> + Used by Castle Project components to, for example, + gather logging factories + </remarks> + </member> + <member name="T:Castle.Core.IServiceProviderEx"> + <summary> + Increments <c>IServiceProvider</c> with a generic service resolution operation. + </summary> + </member> + <member name="T:Castle.Core.Logging.IExtendedLoggerFactory"> + <summary> + Provides a factory that can produce either <see cref="T:Castle.Core.Logging.ILogger"/> or + <see cref="T:Castle.Core.Logging.IExtendedLogger"/> classes. + </summary> + </member> + <member name="T:Castle.Core.Logging.ILoggerFactory"> + <summary> + Manages the instantiation of <see cref="T:Castle.Core.Logging.ILogger"/>s. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.Type)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.String)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.Type)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.String)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.Type)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.String)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.Type)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.String)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.GetConfigFile(System.String)"> + <summary> + Gets the configuration file. + </summary> + <param name = "fileName">i.e. log4net.config</param> + <returns></returns> + </member> + <member name="T:Castle.Core.Logging.TraceLoggerFactory"> + <summary> + Used to create the TraceLogger implementation of ILogger interface. See <see cref="T:Castle.Core.Logging.TraceLogger"/>. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractLoggerFactory.GetConfigFile(System.String)"> + <summary> + Gets the configuration file. + </summary> + <param name = "fileName">i.e. log4net.config</param> + <returns></returns> + </member> + <member name="T:Castle.Core.Logging.IContextProperties"> + <summary> + Interface for Context Properties implementations + </summary> + <remarks> + <para> + This interface defines a basic property get set accessor. + </para> + <para> + Based on the ContextPropertiesBase of log4net, by Nicko Cadell. + </para> + </remarks> + </member> + <member name="P:Castle.Core.Logging.IContextProperties.Item(System.String)"> + <summary> + Gets or sets the value of a property + </summary> + <value> + The value for the property with the specified key + </value> + <remarks> + <para> + Gets or sets the value of a property + </para> + </remarks> + </member> + <member name="T:Castle.Core.Logging.NullLogFactory"> + <summary> + NullLogFactory used when logging is turned off. + </summary> + </member> + <member name="M:Castle.Core.Logging.NullLogFactory.Create(System.String)"> + <summary> + Creates an instance of ILogger with the specified name. + </summary> + <param name = "name">Name.</param> + <returns></returns> + </member> + <member name="M:Castle.Core.Logging.NullLogFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates an instance of ILogger with the specified name and LoggerLevel. + </summary> + <param name = "name">Name.</param> + <param name = "level">Level.</param> + <returns></returns> + </member> + <member name="T:Castle.Core.Logging.StreamLoggerFactory"> + <summary> + Creates <see cref="T:Castle.Core.Logging.StreamLogger"/> outputing + to files. The name of the file is derived from the log name + plus the 'log' extension. + </summary> + </member> + <member name="T:Castle.Core.Logging.IExtendedLogger"> + <summary> + Provides an interface that supports <see cref="T:Castle.Core.Logging.ILogger"/> and + allows the storage and retrieval of Contexts. These are supported in + both log4net and NLog. + </summary> + </member> + <member name="T:Castle.Core.Logging.ILogger"> + <summary> + Manages logging. + </summary> + <remarks> + This is a facade for the different logging subsystems. + It offers a simplified interface that follows IOC patterns + and a simplified priority/level/severity abstraction. + </remarks> + </member> + <member name="M:Castle.Core.Logging.ILogger.CreateChildLogger(System.String)"> + <summary> + Create a new child logger. + The name of the child logger is [current-loggers-name].[passed-in-name] + </summary> + <param name="loggerName">The Subname of this logger.</param> + <returns>The New ILogger instance.</returns> + <exception cref="T:System.ArgumentException">If the name has an empty element name.</exception> + </member> + <member name="M:Castle.Core.Logging.ILogger.Debug(System.String)"> + <summary> + Logs a debug message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Debug(System.Func{System.String})"> + <summary> + Logs a debug message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsDebugEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Debug(System.String,System.Exception)"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Error(System.String)"> + <summary> + Logs an error message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Error(System.Func{System.String})"> + <summary> + Logs an error message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsErrorEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Error(System.String,System.Exception)"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String)"> + <summary> + Logs a fatal message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Fatal(System.Func{System.String})"> + <summary> + Logs a fatal message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsFatalEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String,System.Exception)"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Info(System.String)"> + <summary> + Logs an info message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Info(System.Func{System.String})"> + <summary> + Logs a info message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsInfoEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Info(System.String,System.Exception)"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Warn(System.String)"> + <summary> + Logs a warn message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Warn(System.Func{System.String})"> + <summary> + Logs a warn message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsWarnEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Warn(System.String,System.Exception)"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsDebugEnabled"> + <summary> + Determines if messages of priority "debug" will be logged. + </summary> + <value>True if "debug" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsErrorEnabled"> + <summary> + Determines if messages of priority "error" will be logged. + </summary> + <value>True if "error" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsFatalEnabled"> + <summary> + Determines if messages of priority "fatal" will be logged. + </summary> + <value>True if "fatal" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsInfoEnabled"> + <summary> + Determines if messages of priority "info" will be logged. + </summary> + <value>True if "info" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsWarnEnabled"> + <summary> + Determines if messages of priority "warn" will be logged. + </summary> + <value>True if "warn" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.IExtendedLogger.GlobalProperties"> + <summary> + Exposes the Global Context of the extended logger. + </summary> + </member> + <member name="P:Castle.Core.Logging.IExtendedLogger.ThreadProperties"> + <summary> + Exposes the Thread Context of the extended logger. + </summary> + </member> + <member name="P:Castle.Core.Logging.IExtendedLogger.ThreadStacks"> + <summary> + Exposes the Thread Stack of the extended logger. + </summary> + </member> + <member name="T:Castle.Core.Logging.ConsoleLogger"> + <summary> + The Logger sending everything to the standard output streams. + This is mainly for the cases when you have a utility that + does not have a logger to supply. + </summary> + </member> + <member name="T:Castle.Core.Logging.LevelFilteredLogger"> + <summary> + The Level Filtered Logger class. This is a base clase which + provides a LogLevel attribute and reroutes all functions into + one Log method. + </summary> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.#ctor"> + <summary> + Creates a new <c>LevelFilteredLogger</c>. + </summary> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InitializeLifetimeService"> + <summary> + Keep the instance alive in a remoting scenario + </summary> + <returns></returns> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String)"> + <summary> + Logs a debug message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String,System.Exception)"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String)"> + <summary> + Logs an info message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String,System.Exception)"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String)"> + <summary> + Logs a warn message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String,System.Exception)"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String)"> + <summary> + Logs an error message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String,System.Exception)"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String)"> + <summary> + Logs a fatal message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String,System.Exception)"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Log(Castle.Core.Logging.LoggerLevel,System.String,System.String,System.Exception)"> + <summary> + Implementors output the log content by implementing this method only. + Note that exception can be null + </summary> + <param name = "loggerLevel"></param> + <param name = "loggerName"></param> + <param name = "message"></param> + <param name = "exception"></param> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.Level"> + <value> + The <c>LoggerLevel</c> that this logger + will be using. Defaults to <c>LoggerLevel.Off</c> + </value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.Name"> + <value> + The name that this logger will be using. + Defaults to <c>String.Empty</c> + </value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsDebugEnabled"> + <summary> + Determines if messages of priority "debug" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Debug"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsInfoEnabled"> + <summary> + Determines if messages of priority "info" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Info"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsWarnEnabled"> + <summary> + Determines if messages of priority "warn" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Warn"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsErrorEnabled"> + <summary> + Determines if messages of priority "error" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Error"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsFatalEnabled"> + <summary> + Determines if messages of priority "fatal" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Fatal"/> bit</value> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor"> + <summary> + Creates a new ConsoleLogger with the <c>Level</c> + set to <c>LoggerLevel.Debug</c> and the <c>Name</c> + set to <c>String.Empty</c>. + </summary> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new ConsoleLogger with the <c>Name</c> + set to <c>String.Empty</c>. + </summary> + <param name = "logLevel">The logs Level.</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(System.String)"> + <summary> + Creates a new ConsoleLogger with the <c>Level</c> + set to <c>LoggerLevel.Debug</c>. + </summary> + <param name = "name">The logs Name.</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new ConsoleLogger. + </summary> + <param name = "name">The logs Name.</param> + <param name = "logLevel">The logs Level.</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.Log(Castle.Core.Logging.LoggerLevel,System.String,System.String,System.Exception)"> + <summary> + A Common method to log. + </summary> + <param name = "loggerLevel">The level of logging</param> + <param name = "loggerName">The name of the logger</param> + <param name = "message">The Message</param> + <param name = "exception">The Exception</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.CreateChildLogger(System.String)"> + <summary> + Returns a new <c>ConsoleLogger</c> with the name + added after this loggers name, with a dot in between. + </summary> + <param name = "loggerName">The added hierarchical name.</param> + <returns>A new <c>ConsoleLogger</c>.</returns> + </member> + <member name="T:Castle.Core.Logging.DiagnosticsLogger"> + <summary> + The Logger using standart Diagnostics namespace. + </summary> + </member> + <member name="M:Castle.Core.Logging.DiagnosticsLogger.#ctor(System.String)"> + <summary> + Creates a logger based on <see cref="T:System.Diagnostics.EventLog"/>. + </summary> + <param name="logName"><see cref="P:System.Diagnostics.EventLog.Log"/></param> + </member> + <member name="M:Castle.Core.Logging.DiagnosticsLogger.#ctor(System.String,System.String)"> + <summary> + Creates a logger based on <see cref="T:System.Diagnostics.EventLog"/>. + </summary> + <param name="logName"><see cref="P:System.Diagnostics.EventLog.Log"/></param> + <param name="source"><see cref="P:System.Diagnostics.EventLog.Source"/></param> + </member> + <member name="M:Castle.Core.Logging.DiagnosticsLogger.#ctor(System.String,System.String,System.String)"> + <summary> + Creates a logger based on <see cref="T:System.Diagnostics.EventLog"/>. + </summary> + <param name="logName"><see cref="P:System.Diagnostics.EventLog.Log"/></param> + <param name="machineName"><see cref="P:System.Diagnostics.EventLog.MachineName"/></param> + <param name="source"><see cref="P:System.Diagnostics.EventLog.Source"/></param> + </member> + <member name="T:Castle.Core.Logging.NullLogger"> + <summary> + The Null Logger class. This is useful for implementations where you need + to provide a logger to a utility class, but do not want any output from it. + It also helps when you have a utility that does not have a logger to supply. + </summary> + </member> + <member name="M:Castle.Core.Logging.NullLogger.CreateChildLogger(System.String)"> + <summary> + Returns this <c>NullLogger</c>. + </summary> + <param name = "loggerName">Ignored</param> + <returns>This ILogger instance.</returns> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Error(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Error(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Info(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Info(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="P:Castle.Core.Logging.NullLogger.GlobalProperties"> + <summary> + Returns empty context properties. + </summary> + </member> + <member name="P:Castle.Core.Logging.NullLogger.ThreadProperties"> + <summary> + Returns empty context properties. + </summary> + </member> + <member name="P:Castle.Core.Logging.NullLogger.ThreadStacks"> + <summary> + Returns empty context stacks. + </summary> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsDebugEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsErrorEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsFatalEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsInfoEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsWarnEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="T:Castle.Core.Logging.StreamLogger"> + <summary> + The Stream Logger class. This class can stream log information + to any stream, it is suitable for storing a log file to disk, + or to a <c>MemoryStream</c> for testing your components. + </summary> + <remarks> + This logger is not thread safe. + </remarks> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream)"> + <summary> + Creates a new <c>StreamLogger</c> with default encoding + and buffer size. Initial Level is set to Debug. + </summary> + <param name = "name"> + The name of the log. + </param> + <param name = "stream"> + The stream that will be used for logging, + seeking while the logger is alive + </param> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream,System.Text.Encoding)"> + <summary> + Creates a new <c>StreamLogger</c> with default buffer size. + Initial Level is set to Debug. + </summary> + <param name="name"> + The name of the log. + </param> + <param name="stream"> + The stream that will be used for logging, + seeking while the logger is alive + </param> + <param name="encoding"> + The encoding that will be used for this stream. + <see cref="T:System.IO.StreamWriter"/> + </param> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream,System.Text.Encoding,System.Int32)"> + <summary> + Creates a new <c>StreamLogger</c>. + Initial Level is set to Debug. + </summary> + <param name="name"> + The name of the log. + </param> + <param name="stream"> + The stream that will be used for logging, + seeking while the logger is alive + </param> + <param name="encoding"> + The encoding that will be used for this stream. + <see cref="T:System.IO.StreamWriter"/> + </param> + <param name="bufferSize"> + The buffer size that will be used for this stream. + <see cref="T:System.IO.StreamWriter"/> + </param> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.StreamWriter)"> + <summary> + Creates a new <c>StreamLogger</c> with + Debug as default Level. + </summary> + <param name = "name">The name of the log.</param> + <param name = "writer">The <c>StreamWriter</c> the log will write to.</param> + </member> + <member name="T:Castle.Core.Logging.TraceLogger"> + <summary> + The TraceLogger sends all logging to the System.Diagnostics.TraceSource + built into the .net framework. + </summary> + <remarks> + Logging can be configured in the system.diagnostics configuration + section. + + If logger doesn't find a source name with a full match it will + use source names which match the namespace partially. For example you can + configure from all castle components by adding a source name with the + name "Castle". + + If no portion of the namespace matches the source named "Default" will + be used. + </remarks> + </member> + <member name="M:Castle.Core.Logging.TraceLogger.#ctor(System.String)"> + <summary> + Build a new trace logger based on the named TraceSource + </summary> + <param name="name">The name used to locate the best TraceSource. In most cases comes from the using type's fullname.</param> + </member> + <member name="M:Castle.Core.Logging.TraceLogger.#ctor(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Build a new trace logger based on the named TraceSource + </summary> + <param name="name">The name used to locate the best TraceSource. In most cases comes from the using type's fullname.</param> + <param name="level">The default logging level at which this source should write messages. In almost all cases this + default value will be overridden in the config file. </param> + </member> + <member name="M:Castle.Core.Logging.TraceLogger.CreateChildLogger(System.String)"> + <summary> + Create a new child logger. + The name of the child logger is [current-loggers-name].[passed-in-name] + </summary> + <param name="loggerName">The Subname of this logger.</param> + <returns>The New ILogger instance.</returns> + </member> + <member name="T:Castle.Core.Configuration.AbstractConfiguration"> + <summary> + This is an abstract <see cref="T:Castle.Core.Configuration.IConfiguration"/> implementation + that deals with methods that can be abstracted away + from underlying implementations. + </summary> + <remarks> + <para><b>AbstractConfiguration</b> makes easier to implementers + to create a new version of <see cref="T:Castle.Core.Configuration.IConfiguration"/></para> + </remarks> + </member> + <member name="T:Castle.Core.Configuration.IConfiguration"> + <summary> + <see cref="T:Castle.Core.Configuration.IConfiguration"/> is a interface encapsulating a configuration node + used to retrieve configuration values. + </summary> + </member> + <member name="M:Castle.Core.Configuration.IConfiguration.GetValue(System.Type,System.Object)"> + <summary> + Gets the value of the node and converts it + into specified <see cref="T:System.Type"/>. + </summary> + <param name="type">The <see cref="T:System.Type"/></param> + <param name="defaultValue"> + The Default value returned if the conversion fails. + </param> + <returns>The Value converted into the specified type.</returns> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Name"> + <summary> + Gets the name of the node. + </summary> + <value> + The Name of the node. + </value> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Value"> + <summary> + Gets the value of the node. + </summary> + <value> + The Value of the node. + </value> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Children"> + <summary> + Gets an <see cref="T:Castle.Core.Configuration.ConfigurationCollection"/> of <see cref="T:Castle.Core.Configuration.IConfiguration"/> + elements containing all node children. + </summary> + <value>The Collection of child nodes.</value> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Attributes"> + <summary> + Gets an <see cref="T:System.Collections.IDictionary"/> of the configuration attributes. + </summary> + </member> + <member name="M:Castle.Core.Configuration.AbstractConfiguration.GetValue(System.Type,System.Object)"> + <summary> + Gets the value of the node and converts it + into specified <see cref="T:System.Type"/>. + </summary> + <param name="type">The <see cref="T:System.Type"/></param> + <param name="defaultValue"> + The Default value returned if the conversion fails. + </param> + <returns>The Value converted into the specified type.</returns> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Attributes"> + <summary> + Gets node attributes. + </summary> + <value> + All attributes of the node. + </value> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Children"> + <summary> + Gets all child nodes. + </summary> + <value>The <see cref="T:Castle.Core.Configuration.ConfigurationCollection"/> of child nodes.</value> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Name"> + <summary> + Gets the name of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </summary> + <value> + The Name of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </value> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Value"> + <summary> + Gets the value of <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </summary> + <value> + The Value of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </value> + </member> + <member name="T:Castle.Core.Configuration.ConfigurationCollection"> + <summary> + A collection of <see cref="T:Castle.Core.Configuration.IConfiguration"/> objects. + </summary> + </member> + <member name="M:Castle.Core.Configuration.ConfigurationCollection.#ctor"> + <summary> + Creates a new instance of <c>ConfigurationCollection</c>. + </summary> + </member> + <member name="M:Castle.Core.Configuration.ConfigurationCollection.#ctor(System.Collections.Generic.IEnumerable{Castle.Core.Configuration.IConfiguration})"> + <summary> + Creates a new instance of <c>ConfigurationCollection</c>. + </summary> + </member> + <member name="T:Castle.Core.Configuration.MutableConfiguration"> + <summary> + Summary description for MutableConfiguration. + </summary> + </member> + <member name="M:Castle.Core.Configuration.MutableConfiguration.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Core.Configuration.MutableConfiguration"/> class. + </summary> + <param name="name">The name.</param> + </member> + <member name="P:Castle.Core.Configuration.MutableConfiguration.Value"> + <summary> + Gets the value of <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </summary> + <value> + The Value of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </value> + </member> + <member name="M:Castle.Core.Configuration.Xml.XmlConfigurationDeserializer.Deserialize(System.Xml.XmlNode)"> + <summary> + Deserializes the specified node into an abstract representation of configuration. + </summary> + <param name = "node">The node.</param> + <returns></returns> + </member> + <member name="M:Castle.Core.Configuration.Xml.XmlConfigurationDeserializer.GetConfigValue(System.String)"> + <summary> + If a config value is an empty string we return null, this is to keep + backward compatibility with old code + </summary> + </member> + <member name="T:Castle.Core.Pair`2"> + <summary> + General purpose class to represent a standard pair of values. + </summary> + <typeparam name="TFirst">Type of the first value</typeparam> + <typeparam name="TSecond">Type of the second value</typeparam> + </member> + <member name="M:Castle.Core.Pair`2.#ctor(`0,`1)"> + <summary> + Constructs a pair with its values + </summary> + <param name="first"></param> + <param name="second"></param> + </member> + <member name="T:Castle.Core.ProxyServices"> + <summary> + List of utility methods related to dynamic proxy operations + </summary> + </member> + <member name="M:Castle.Core.ProxyServices.IsDynamicProxy(System.Type)"> + <summary> + Determines whether the specified type is a proxy generated by + DynamicProxy (1 or 2). + </summary> + <param name="type">The type.</param> + <returns> + <c>true</c> if it is a proxy; otherwise, <c>false</c>. + </returns> + </member> + <member name="T:Castle.Core.ReflectionBasedDictionaryAdapter"> + <summary> + Readonly implementation of <see cref="T:System.Collections.IDictionary"/> which uses an anonymous object as its source. Uses names of properties as keys, and property values as... well - values. Keys are not case sensitive. + </summary> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.#ctor(System.Object)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Core.ReflectionBasedDictionaryAdapter"/> class. + </summary> + <param name="target">The target.</param> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Add(System.Object,System.Object)"> + <summary> + Adds an element with the provided key and value to the <see cref = "T:System.Collections.IDictionary" /> object. + </summary> + <param name = "key">The <see cref = "T:System.Object" /> to use as the key of the element to add.</param> + <param name = "value">The <see cref = "T:System.Object" /> to use as the value of the element to add.</param> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "key" /> is null. </exception> + <exception cref = "T:System.ArgumentException">An element with the same key already exists in the <see + cref = "T:System.Collections.IDictionary" /> object. </exception> + <exception cref = "T:System.NotSupportedException">The <see cref = "T:System.Collections.IDictionary" /> is read-only.-or- The <see + cref = "T:System.Collections.IDictionary" /> has a fixed size. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Clear"> + <summary> + Removes all elements from the <see cref = "T:System.Collections.IDictionary" /> object. + </summary> + <exception cref = "T:System.NotSupportedException">The <see cref = "T:System.Collections.IDictionary" /> object is read-only. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Contains(System.Object)"> + <summary> + Determines whether the <see cref = "T:System.Collections.IDictionary" /> object contains an element with the specified key. + </summary> + <param name = "key">The key to locate in the <see cref = "T:System.Collections.IDictionary" /> object.</param> + <returns> + true if the <see cref = "T:System.Collections.IDictionary" /> contains an element with the key; otherwise, false. + </returns> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "key" /> is null. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Remove(System.Object)"> + <summary> + Removes the element with the specified key from the <see cref = "T:System.Collections.IDictionary" /> object. + </summary> + <param name = "key">The key of the element to remove.</param> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "key" /> is null. </exception> + <exception cref = "T:System.NotSupportedException">The <see cref = "T:System.Collections.IDictionary" /> object is read-only.-or- The <see + cref = "T:System.Collections.IDictionary" /> has a fixed size. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.GetEnumerator"> + <summary> + Returns an enumerator that iterates through a collection. + </summary> + <returns> + An <see cref = "T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection. + </returns> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#ICollection#CopyTo(System.Array,System.Int32)"> + <summary> + Copies the elements of the <see cref = "T:System.Collections.ICollection" /> to an <see cref = "T:System.Array" />, starting at a particular <see + cref = "T:System.Array" /> index. + </summary> + <param name = "array">The one-dimensional <see cref = "T:System.Array" /> that is the destination of the elements copied from <see + cref = "T:System.Collections.ICollection" />. The <see cref = "T:System.Array" /> must have zero-based indexing.</param> + <param name = "index">The zero-based index in <paramref name = "array" /> at which copying begins.</param> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "array" /> is null. </exception> + <exception cref = "T:System.ArgumentOutOfRangeException"> + <paramref name = "index" /> is less than zero. </exception> + <exception cref = "T:System.ArgumentException"> + <paramref name = "array" /> is multidimensional.-or- <paramref name = "index" /> is equal to or greater than the length of <paramref + name = "array" />.-or- The number of elements in the source <see cref = "T:System.Collections.ICollection" /> is greater than the available space from <paramref + name = "index" /> to the end of the destination <paramref name = "array" />. </exception> + <exception cref = "T:System.ArgumentException">The type of the source <see cref = "T:System.Collections.ICollection" /> cannot be cast automatically to the type of the destination <paramref + name = "array" />. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#IDictionary#GetEnumerator"> + <summary> + Returns an <see cref = "T:System.Collections.IDictionaryEnumerator" /> object for the <see + cref = "T:System.Collections.IDictionary" /> object. + </summary> + <returns> + An <see cref = "T:System.Collections.IDictionaryEnumerator" /> object for the <see + cref = "T:System.Collections.IDictionary" /> object. + </returns> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Read(System.Collections.IDictionary,System.Object)"> + <summary> + Reads values of properties from <paramref name = "valuesAsAnonymousObject" /> and inserts them into <paramref + name = "targetDictionary" /> using property names as keys. + </summary> + <param name = "targetDictionary"></param> + <param name = "valuesAsAnonymousObject"></param> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Count"> + <summary> + Gets the number of elements contained in the <see cref = "T:System.Collections.ICollection" />. + </summary> + <value></value> + <returns>The number of elements contained in the <see cref = "T:System.Collections.ICollection" />.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.IsSynchronized"> + <summary> + Gets a value indicating whether access to the <see cref = "T:System.Collections.ICollection" /> is synchronized (thread safe). + </summary> + <value></value> + <returns>true if access to the <see cref = "T:System.Collections.ICollection" /> is synchronized (thread safe); otherwise, false.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the <see cref = "T:System.Collections.ICollection" />. + </summary> + <value></value> + <returns>An object that can be used to synchronize access to the <see cref = "T:System.Collections.ICollection" />.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.IsReadOnly"> + <summary> + Gets a value indicating whether the <see cref = "T:System.Collections.IDictionary" /> object is read-only. + </summary> + <value></value> + <returns>true if the <see cref = "T:System.Collections.IDictionary" /> object is read-only; otherwise, false.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Item(System.Object)"> + <summary> + Gets or sets the <see cref="T:System.Object"/> with the specified key. + </summary> + <value></value> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Keys"> + <summary> + Gets an <see cref = "T:System.Collections.ICollection" /> object containing the keys of the <see + cref = "T:System.Collections.IDictionary" /> object. + </summary> + <value></value> + <returns>An <see cref = "T:System.Collections.ICollection" /> object containing the keys of the <see + cref = "T:System.Collections.IDictionary" /> object.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Values"> + <summary> + Gets an <see cref = "T:System.Collections.ICollection" /> object containing the values in the <see + cref = "T:System.Collections.IDictionary" /> object. + </summary> + <value></value> + <returns>An <see cref = "T:System.Collections.ICollection" /> object containing the values in the <see + cref = "T:System.Collections.IDictionary" /> object.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#IDictionary#IsFixedSize"> + <summary> + Gets a value indicating whether the <see cref = "T:System.Collections.IDictionary" /> object has a fixed size. + </summary> + <value></value> + <returns>true if the <see cref = "T:System.Collections.IDictionary" /> object has a fixed size; otherwise, false.</returns> + </member> + <member name="T:Castle.Core.Resource.IResource"> + <summary> + Represents a 'streamable' resource. Can + be a file, a resource in an assembly. + </summary> + </member> + <member name="M:Castle.Core.Resource.IResource.GetStreamReader"> + <summary> + Returns a reader for the stream + </summary> + <remarks> + It's up to the caller to dispose the reader. + </remarks> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResource.GetStreamReader(System.Text.Encoding)"> + <summary> + Returns a reader for the stream + </summary> + <remarks> + It's up to the caller to dispose the reader. + </remarks> + <param name="encoding"></param> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResource.CreateRelative(System.String)"> + <summary> + Returns an instance of <see cref="T:Castle.Core.Resource.IResource"/> + created according to the <c>relativePath</c> + using itself as the root. + </summary> + <param name="relativePath"></param> + <returns></returns> + </member> + <member name="P:Castle.Core.Resource.IResource.FileBasePath"> + <summary> + + </summary> + <remarks> + Only valid for resources that + can be obtained through relative paths + </remarks> + </member> + <member name="T:Castle.Core.Resource.AbstractStreamResource"> + <summary> + + </summary> + </member> + <member name="F:Castle.Core.Resource.AbstractStreamResource.createStream"> + <summary> + This returns a new stream instance each time it is called. + It is the responsibility of the caller to dispose of this stream + </summary> + </member> + <member name="T:Castle.Core.Resource.IResourceFactory"> + <summary> + Depicts the contract for resource factories. + </summary> + </member> + <member name="M:Castle.Core.Resource.IResourceFactory.Accept(Castle.Core.Resource.CustomUri)"> + <summary> + Used to check whether the resource factory + is able to deal with the given resource + identifier. + </summary> + <remarks> + Implementors should return <c>true</c> + only if the given identifier is supported + by the resource factory + </remarks> + <param name="uri"></param> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResourceFactory.Create(Castle.Core.Resource.CustomUri)"> + <summary> + Creates an <see cref="T:Castle.Core.Resource.IResource"/> instance + for the given resource identifier + </summary> + <param name="uri"></param> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResourceFactory.Create(Castle.Core.Resource.CustomUri,System.String)"> + <summary> + Creates an <see cref="T:Castle.Core.Resource.IResource"/> instance + for the given resource identifier + </summary> + <param name="uri"></param> + <param name="basePath"></param> + <returns></returns> + </member> + <member name="T:Castle.Core.Resource.FileResource"> + <summary> + + </summary> + </member> + <member name="T:Castle.Core.Resource.FileResourceFactory"> + <summary> + + </summary> + </member> + <member name="T:Castle.Core.Resource.StaticContentResource"> + <summary> + Adapts a static string content as an <see cref="T:Castle.Core.Resource.IResource"/> + </summary> + </member> + <member name="T:Castle.Core.Resource.UncResource"> + <summary> + Enable access to files on network shares + </summary> + </member> + <member name="T:Castle.Core.Smtp.IEmailSender"> + <summary> + Email sender abstraction. + </summary> + </member> + <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.String,System.String,System.String,System.String)"> + <summary> + Sends a mail message. + </summary> + <param name="from">From field</param> + <param name="to">To field</param> + <param name="subject">E-mail's subject</param> + <param name="messageText">message's body</param> + </member> + <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.Net.Mail.MailMessage)"> + <summary> + Sends a <see cref="T:System.Net.Mail.MailMessage">message</see>. + </summary> + <param name="message"><see cref="T:System.Net.Mail.MailMessage">Message</see> instance</param> + </member> + <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.Collections.Generic.IEnumerable{System.Net.Mail.MailMessage})"> + <summary> + Sends multiple <see cref="T:System.Net.Mail.MailMessage">messages</see>. + </summary> + <param name="messages">List of <see cref="T:System.Net.Mail.MailMessage">messages</see></param> + </member> + <member name="T:Castle.Core.Smtp.DefaultSmtpSender"> + <summary> + Default <see cref="T:Castle.Core.Smtp.IEmailSender"/> implementation. + </summary> + </member> + <member name="M:Castle.Core.Smtp.DefaultSmtpSender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Core.Smtp.DefaultSmtpSender"/> class based on the <see cref="T:System.Net.Mail.SmtpClient"/> configuration provided in the application configuration file. + </summary> + <remarks> + This constructor is based on the default <see cref="T:System.Net.Mail.SmtpClient"/> configuration in the application configuration file. + </remarks> + </member> + <member name="M:Castle.Core.Smtp.DefaultSmtpSender.#ctor(System.String)"> + <summary> + This service implementation + requires a host name in order to work + </summary> + <param name="hostname">The smtp server name</param> + </member> + <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Send(System.String,System.String,System.String,System.String)"> + <summary> + Sends a message. + </summary> + <exception cref="T:System.ArgumentNullException">If any of the parameters is null</exception> + <param name="from">From field</param> + <param name="to">To field</param> + <param name="subject">e-mail's subject</param> + <param name="messageText">message's body</param> + </member> + <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Send(System.Net.Mail.MailMessage)"> + <summary> + Sends a message. + </summary> + <exception cref="T:System.ArgumentNullException">If the message is null</exception> + <param name="message">Message instance</param> + </member> + <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Configure(System.Net.Mail.SmtpClient)"> + <summary> + Configures the sender + with port information and eventual credential + informed + </summary> + <param name="smtpClient">Message instance</param> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Port"> + <summary> + Gets or sets the port used to + access the SMTP server + </summary> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Hostname"> + <summary> + Gets the hostname. + </summary> + <value>The hostname.</value> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.AsyncSend"> + <summary> + Gets or sets a value which is used to + configure if emails are going to be sent asynchronously or not. + </summary> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Timeout"> + <summary> + Gets or sets a value that specifies + the amount of time after which a synchronous Send call times out. + </summary> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.UseSsl"> + <summary> + Gets or sets a value indicating whether the email should be sent using + a secure communication channel. + </summary> + <value><c>true</c> if should use SSL; otherwise, <c>false</c>.</value> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Domain"> + <summary> + Gets or sets the domain. + </summary> + <value>The domain.</value> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.UserName"> + <summary> + Gets or sets the name of the user. + </summary> + <value>The name of the user.</value> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Password"> + <summary> + Gets or sets the password. + </summary> + <value>The password.</value> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.HasCredentials"> + <summary> + Gets a value indicating whether credentials were informed. + </summary> + <value> + <see langword="true"/> if this instance has credentials; otherwise, <see langword="false"/>. + </value> + </member> + </members> +</doc> diff --git a/packages/Castle.Core.3.2.1/lib/net45/Castle.Core.dll b/packages/Castle.Core.3.2.1/lib/net45/Castle.Core.dll new file mode 100644 index 000000000..ae363be03 Binary files /dev/null and b/packages/Castle.Core.3.2.1/lib/net45/Castle.Core.dll differ diff --git a/packages/Castle.Core.3.2.1/lib/net45/Castle.Core.xml b/packages/Castle.Core.3.2.1/lib/net45/Castle.Core.xml new file mode 100644 index 000000000..6fa66c00b --- /dev/null +++ b/packages/Castle.Core.3.2.1/lib/net45/Castle.Core.xml @@ -0,0 +1,4754 @@ +<?xml version="1.0"?> +<doc> + <assembly> + <name>Castle.Core</name> + </assembly> + <members> + <member name="T:Castle.Components.DictionaryAdapter.ReferenceAttribute"> + <summary> + Specifies assignment by reference rather than by copying. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IfExistsAttribute"> + <summary> + Suppresses any on-demand behaviors. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.RemoveIfEmptyAttribute"> + <summary> + Removes a property if null or empty string, guid or collection. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.RemoveIfAttribute"> + <summary> + Removes a property if matches value. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryBehaviorAttribute"> + <summary> + Assigns a specific dictionary key. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryBehavior"> + <summary> + Defines the contract for customizing dictionary access. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryBehavior.Copy"> + <summary> + Copies the dictionary behavior. + </summary> + <returns>null if should not be copied. Otherwise copy.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.IDictionaryBehavior.ExecutionOrder"> + <summary> + Determines relative order to apply related behaviors. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter"> + <summary> + Defines the contract for updating dictionary values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Sets the stored dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="value">The stored value.</param> + <param name="property">The property.</param> + <returns>true if the property should be stored.</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.ICondition"> + <summary> + Contract for value matching. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.VolatileAttribute"> + <summary> + Indicates that underlying values are changeable and should not be cached. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryInitializer"> + <summary> + Contract for dictionary initialization. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryInitializer.Initialize(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.Object[])"> + <summary> + Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="behaviors">The dictionary behaviors.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapterVisitor"> + <summary> + Abstract implementation of <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"/>. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"> + <summary> + Conract for traversing a <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryCreate"> + <summary> + Contract for creating additional Dictionary adapters. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"> + <summary> + Contract for manipulating the Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryEdit"> + <summary> + Contract for editing the Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryNotify"> + <summary> + Contract for managing Dictionary adapter notifications. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryValidate"> + <summary> + Contract for validating Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder"> + <summary> + Defines the contract for building <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryBehavior"/>s. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder.BuildBehaviors"> + <summary> + Builds the dictionary behaviors. + </summary> + <returns></returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter"> + <summary> + Abstract adapter for the <see cref="T:System.Collections.IDictionary"/> support + needed by the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory"/> + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Add(System.Object,System.Object)"> + <summary> + Adds an element with the provided key and value to the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <param name="key">The <see cref="T:System.Object"></see> to use as the key of the element to add.</param> + <param name="value">The <see cref="T:System.Object"></see> to use as the value of the element to add.</param> + <exception cref="T:System.ArgumentException">An element with the same key already exists in the <see cref="T:System.Collections.IDictionary"></see> object. </exception> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Clear"> + <summary> + Removes all elements from the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Contains(System.Object)"> + <summary> + Determines whether the <see cref="T:System.Collections.IDictionary"></see> object contains an element with the specified key. + </summary> + <param name="key">The key to locate in the <see cref="T:System.Collections.IDictionary"></see> object.</param> + <returns> + true if the <see cref="T:System.Collections.IDictionary"></see> contains an element with the key; otherwise, false. + </returns> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.GetEnumerator"> + <summary> + Returns an <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <returns> + An <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object. + </returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Remove(System.Object)"> + <summary> + Removes the element with the specified key from the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <param name="key">The key of the element to remove.</param> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.CopyTo(System.Array,System.Int32)"> + <summary> + Copies the elements of the <see cref="T:System.Collections.ICollection"></see> to an <see cref="T:System.Array"></see>, starting at a particular <see cref="T:System.Array"></see> index. + </summary> + <param name="array">The one-dimensional <see cref="T:System.Array"></see> that is the destination of the elements copied from <see cref="T:System.Collections.ICollection"></see>. The <see cref="T:System.Array"></see> must have zero-based indexing.</param> + <param name="index">The zero-based index in array at which copying begins.</param> + <exception cref="T:System.ArgumentNullException">array is null. </exception> + <exception cref="T:System.ArgumentException">The type of the source <see cref="T:System.Collections.ICollection"></see> cannot be cast automatically to the type of the destination array. </exception> + <exception cref="T:System.ArgumentOutOfRangeException">index is less than zero. </exception> + <exception cref="T:System.ArgumentException">array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source <see cref="T:System.Collections.ICollection"></see> is greater than the available space from index to the end of the destination array. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.System#Collections#IEnumerable#GetEnumerator"> + <summary> + Returns an enumerator that iterates through a collection. + </summary> + <returns> + An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection. + </returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsFixedSize"> + <summary> + Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size. + </summary> + <value></value> + <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size; otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsReadOnly"> + <summary> + Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object is read-only. + </summary> + <value></value> + <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object is read-only; otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Keys"> + <summary> + Gets an <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <value></value> + <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Values"> + <summary> + Gets an <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <value></value> + <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Item(System.Object)"> + <summary> + Gets or sets the <see cref="T:System.Object"/> with the specified key. + </summary> + <value></value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Count"> + <summary> + Gets the number of elements contained in the <see cref="T:System.Collections.ICollection"></see>. + </summary> + <value></value> + <returns>The number of elements contained in the <see cref="T:System.Collections.ICollection"></see>.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsSynchronized"> + <summary> + Gets a value indicating whether access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe). + </summary> + <value></value> + <returns>true if access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe); otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>. + </summary> + <value></value> + <returns>An object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>.</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.BindingList`1"> + <summary> + Provides a generic collection that supports data binding. + </summary> + <remarks> + This class wraps the CLR <see cref="T:System.ComponentModel.BindingList`1"/> + in order to implement the Castle-specific <see cref="T:Castle.Components.DictionaryAdapter.IBindingList`1"/>. + </remarks> + <typeparam name="T">The type of elements in the list.</typeparam> + </member> + <member name="M:Castle.Components.DictionaryAdapter.BindingList`1.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.BindingList`1"/> class + using default values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.BindingList`1.#ctor(System.Collections.Generic.IList{`0})"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.BindingList`1"/> class + with the specified list. + </summary> + <param name="list"> + An <see cref="T:System.Collections.Generic.IList`1"/> of items + to be contained in the <see cref="T:Castle.Components.DictionaryAdapter.BindingList`1"/>. + </param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.BindingList`1.#ctor(System.ComponentModel.BindingList{`0})"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.BindingList`1"/> class + wrapping the specified <see cref="T:System.ComponentModel.BindingList`1"/> instance. + </summary> + <param name="list"> + A <see cref="T:System.ComponentModel.BindingList`1"/> + to be wrapped by the <see cref="T:Castle.Components.DictionaryAdapter.BindingList`1"/>. + </param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter"> + <summary> + Defines the contract for retrieving dictionary values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the effective dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="property">The property.</param> + <param name="ifExists">true if return only existing.</param> + <returns>The effective property value.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.Xml.XmlAdapter.#ctor(Castle.Components.DictionaryAdapter.Xml.IXmlNode,Castle.Components.DictionaryAdapter.Xml.XmlReferenceManager)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.Xml.XmlAdapter"/> class + that represents a child object in a larger object graph. + </summary> + <param name="node"></param> + <param name="references"></param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer"> + <summary> + Contract for dictionary meta-data initialization. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer.Initialize(Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> + <summary> + Initializes the given <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> object. + </summary> + <param name="factory">The dictionary adapter factory.</param> + <param name="dictionaryMeta">The dictionary adapter meta.</param> + + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer.ShouldHaveBehavior(System.Object)"> + <summary> + Determines whether the given behavior should be included in a new + <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> object. + </summary> + <param name="behavior">A dictionary behavior or annotation.</param> + <returns>True if the behavior should be included; otherwise, false.</returns> + <remarks> + <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer"/> behaviors are always included, + regardless of the result of this method. + </remarks> + + </member> + <member name="M:Castle.Core.Internal.CollectionExtensions.IsNullOrEmpty(System.Collections.IEnumerable)"> + <summary> + Checks whether or not collection is null or empty. Assumes colleciton can be safely enumerated multiple times. + </summary> + <param name = "this"></param> + <returns></returns> + </member> + <member name="F:Castle.Core.Internal.InternalsVisible.ToCastleCore"> + <summary> + Constant to use when making assembly internals visible to Castle.Core + <c>[assembly: InternalsVisibleTo(CoreInternalsVisible.ToCastleCore)]</c> + </summary> + </member> + <member name="F:Castle.Core.Internal.InternalsVisible.ToDynamicProxyGenAssembly2"> + <summary> + Constant to use when making assembly internals visible to proxy types generated by DynamicProxy. Required when proxying internal types. + <c>[assembly: InternalsVisibleTo(CoreInternalsVisible.ToDynamicProxyGenAssembly2)]</c> + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.ComponentAttribute"> + <summary> + Identifies a property should be represented as a nested component. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder"> + <summary> + Defines the contract for building typed dictionary keys. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Builds the specified key. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The current key.</param> + <param name="property">The property.</param> + <returns>The updated key</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.NoPrefix"> + <summary> + Applies no prefix. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.Prefix"> + <summary> + Gets or sets the prefix. + </summary> + <value>The prefix.</value> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterAttribute"> + <summary> + Identifies the dictionary adapter types. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.FetchAttribute"> + <summary> + Identifies an interface or property to be pre-fetched. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor"> + <summary> + Instructs fetching to occur. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor(System.Boolean)"> + <summary> + Instructs fetching according to <paramref name="fetch"/> + </summary> + <param name="fetch"></param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.FetchAttribute.Fetch"> + <summary> + Gets whether or not fetching should occur. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.GroupAttribute"> + <summary> + Assigns a property to a group. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object)"> + <summary> + Constructs a group assignment. + </summary> + <param name="group">The group name.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object[])"> + <summary> + Constructs a group assignment. + </summary> + <param name="group">The group name.</param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.GroupAttribute.Group"> + <summary> + Gets the group the property is assigned to. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeyAttribute"> + <summary> + Assigns a specific dictionary key. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class. + </summary> + <param name="key">The key.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String[])"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class. + </summary> + <param name="keys">The compound key.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"> + <summary> + Assigns a prefix to the keyed properties of an interface. + </summary> + <remarks> + Key prefixes are not inherited by sub-interfaces. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor"> + <summary> + Initializes a default instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class. + </summary> + <param name="keyPrefix">The prefix for the keyed properties of the interface.</param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.KeyPrefix"> + <summary> + Gets the prefix key added to the properties of the interface. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute"> + <summary> + Substitutes part of key with another string. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute.#ctor(System.String,System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute"/> class. + </summary> + <param name="oldValue">The old value.</param> + <param name="newValue">The new value.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.MultiLevelEditAttribute"> + <summary> + Requests support for multi-level editing. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.NewGuidAttribute"> + <summary> + Generates a new GUID on demand. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.OnDemandAttribute"> + <summary> + Support for on-demand value resolution. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.StringFormatAttribute"> + <summary> + Provides simple string formatting from existing properties. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Format"> + <summary> + Gets the string format. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Properties"> + <summary> + Gets the format properties. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.StringListAttribute"> + <summary> + Identifies a property should be represented as a delimited string value. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringListAttribute.Separator"> + <summary> + Gets the separator. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.StringValuesAttribute"> + <summary> + Converts all properties to strings. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringValuesAttribute.Format"> + <summary> + Gets or sets the format. + </summary> + <value>The format.</value> + </member> + <member name="T:Castle.Components.DictionaryAdapter.SuppressNotificationsAttribute"> + <summary> + Suppress property change notifications. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer"> + <summary> + Contract for property descriptor initialization. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer.Initialize(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Object[])"> + <summary> + Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="propertyDescriptor">The property descriptor.</param> + <param name="behaviors">The property behaviors.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.TypeKeyPrefixAttribute"> + <summary> + Assigns a prefix to the keyed properties using the interface name. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter"> + <summary> + Manages conversion between property values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.#ctor(System.ComponentModel.TypeConverter)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter"/> class. + </summary> + <param name="converter">The converter.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the effective dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="property">The property.</param> + <param name="ifExists">true if return only existing.</param> + <returns>The effective property value.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.ExecutionOrder"> + <summary> + + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory"> + <summary> + Uses Reflection.Emit to expose the properties of a dictionary + through a dynamic implementation of a typed interface. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory"> + <summary> + Defines the contract for building typed dictionary adapters. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <typeparam name="T">The typed interface.</typeparam> + <param name="dictionary">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="dictionary">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="dictionary">The underlying source of properties.</param> + <param name="descriptor">The property descriptor.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Collections.Specialized.NameValueCollection)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.Specialized.NameValueCollection"/>. + </summary> + <typeparam name="T">The typed interface.</typeparam> + <param name="nameValues">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the namedValues.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.Specialized.NameValueCollection)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.Specialized.NameValueCollection"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="nameValues">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the namedValues.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Xml.XmlNode)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Xml.XmlNode"/>. + </summary> + <typeparam name="T">The typed interface.</typeparam> + <param name="xmlNode">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the <see cref="T:System.Xml.XmlNode"/>.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Xml.XmlNode)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Xml.XmlNode"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="xmlNode">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the <see cref="T:System.Xml.XmlNode"/>.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <param name="descriptor">The property descriptor.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <param name="other">Another <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> from which to copy behaviors.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``2(System.Collections.Generic.IDictionary{System.String,``1})"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Type,System.Collections.Generic.IDictionary{System.String,``0})"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Collections.Specialized.NameValueCollection)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.Specialized.NameValueCollection)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Xml.XmlNode)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Xml.XmlNode)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> + <inheritdoc /> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryValidator"> + <summary> + Contract for dictionary validation. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.IsValid(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> + <summary> + Determines if <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> is valid. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <returns>true if valid.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Validate(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> + <summary> + Validates the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <returns>The error summary information.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Validate(Castle.Components.DictionaryAdapter.IDictionaryAdapter,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Validates the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> for a property. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="property">The property to validate.</param> + <returns>The property summary information.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Invalidate(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> + <summary> + Invalidates any results cached by the validator. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter"> + <summary> + + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.#ctor(System.Collections.Specialized.NameValueCollection)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter"/> class. + </summary> + <param name="nameValues">The name values.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.Contains(System.Object)"> + <summary> + Determines whether the <see cref="T:System.Collections.IDictionary"></see> object contains an element with the specified key. + </summary> + <param name="key">The key to locate in the <see cref="T:System.Collections.IDictionary"></see> object.</param> + <returns> + true if the <see cref="T:System.Collections.IDictionary"></see> contains an element with the key; otherwise, false. + </returns> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.Adapt(System.Collections.Specialized.NameValueCollection)"> + <summary> + Adapts the specified name values. + </summary> + <param name="nameValues">The name values.</param> + <returns></returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.IsReadOnly"> + <summary> + Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object is read-only. + </summary> + <value></value> + <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object is read-only; otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.Item(System.Object)"> + <summary> + Gets or sets the <see cref="T:System.Object"/> with the specified key. + </summary> + <value></value> + </member> + <member name="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"> + <summary> + Describes a dictionary property. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor"> + <summary> + Initializes an empty <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(System.Reflection.PropertyInfo,System.Object[])"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + <param name="property">The property.</param> + <param name="annotations">The annotations.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(System.Object[])"> + <summary> + Initializes a new instance <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Copies an existinginstance of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + <param name="source"></param> + <param name="copyBehaviors"></param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets the key. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="descriptor">The descriptor.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the property value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="descriptor">The descriptor.</param> + <param name="ifExists">true if return only existing.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Sets the property value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="value">The value.</param> + <param name="descriptor">The descriptor.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehavior(Castle.Components.DictionaryAdapter.IDictionaryBehavior)"> + <summary> + Adds a single behavior. + </summary> + <param name="behavior">The behavior.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehaviors(Castle.Components.DictionaryAdapter.IDictionaryBehavior[])"> + <summary> + Adds the behaviors. + </summary> + <param name="behaviors">The behaviors.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehaviors(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryBehavior})"> + <summary> + Adds the behaviors. + </summary> + <param name="behaviors">The behaviors.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyBehaviors(Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Copies the behaviors to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="other"></param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.Copy"> + <summary> + Copies the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <returns></returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.ExecutionOrder"> + <summary> + + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyName"> + <summary> + Gets the property name. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyType"> + <summary> + Gets the property type. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Property"> + <summary> + Gets the property. + </summary> + <value>The property.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.IsDynamicProperty"> + <summary> + Returns true if the property is dynamic. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.State"> + <summary> + Gets additional state. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Fetch"> + <summary> + Determines if property should be fetched. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.IfExists"> + <summary> + Determines if property must exist first. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.SuppressNotifications"> + <summary> + Determines if notifications should occur. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Annotations"> + <summary> + Gets the property behaviors. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.TypeConverter"> + <summary> + Gets the type converter. + </summary> + <value>The type converter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.ExtendedProperties"> + <summary> + Gets the extended properties. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Behaviors"> + <summary> + Gets the setter. + </summary> + <value>The setter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.KeyBuilders"> + <summary> + Gets the key builders. + </summary> + <value>The key builders.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Setters"> + <summary> + Gets the setter. + </summary> + <value>The setter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Getters"> + <summary> + Gets the getter. + </summary> + <value>The getter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Initializers"> + <summary> + Gets the initializers. + </summary> + <value>The initializers.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.MetaInitializers"> + <summary> + Gets the meta-data initializers. + </summary> + <value>The meta-data initializers.</value> + </member> + <member name="T:Castle.Core.Internal.AttributesUtil"> + <summary> + Helper class for retrieving attributes. + </summary> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetAttribute``1(System.Reflection.ICustomAttributeProvider)"> + <summary> + Gets the attribute. + </summary> + <param name = "member">The member.</param> + <returns>The member attribute.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetAttributes``1(System.Reflection.ICustomAttributeProvider)"> + <summary> + Gets the attributes. Does not consider inherited attributes! + </summary> + <param name = "member">The member.</param> + <returns>The member attributes.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeAttribute``1(System.Type)"> + <summary> + Gets the type attribute. + </summary> + <param name = "type">The type.</param> + <returns>The type attribute.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeAttributes``1(System.Type)"> + <summary> + Gets the type attributes. + </summary> + <param name = "type">The type.</param> + <returns>The type attributes.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeConverter(System.Reflection.MemberInfo)"> + <summary> + Gets the type converter. + </summary> + <param name = "member">The member.</param> + <returns></returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.HasAttribute``1(System.Reflection.ICustomAttributeProvider)"> + <summary> + Gets the attribute. + </summary> + <param name = "member">The member.</param> + <returns>The member attribute.</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDynamicValue`1"> + <summary> + Contract for typed dynamic value resolution. + </summary> + <typeparam name="T"></typeparam> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDynamicValue"> + <summary> + Contract for dynamic value resolution. + </summary> + </member> + <member name="T:Castle.Core.Logging.LoggerLevel"> + <summary> + Supporting Logger levels. + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Off"> + <summary> + Logging will be off + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Fatal"> + <summary> + Fatal logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Error"> + <summary> + Error logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Warn"> + <summary> + Warn logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Info"> + <summary> + Info logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Debug"> + <summary> + Debug logging level + </summary> + </member> + <member name="T:Castle.DynamicProxy.IInvocation"> + <summary> + Encapsulates an invocation of a proxied method. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.GetArgumentValue(System.Int32)"> + <summary> + Gets the value of the argument at the specified <paramref name = "index" />. + </summary> + <param name = "index">The index.</param> + <returns>The value of the argument at the specified <paramref name = "index" />.</returns> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.GetConcreteMethod"> + <summary> + Returns the concrete instantiation of the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> on the proxy, with any generic + parameters bound to real types. + </summary> + <returns> + The concrete instantiation of the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> on the proxy, or the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> if + not a generic method. + </returns> + <remarks> + Can be slower than calling <see cref="P:Castle.DynamicProxy.IInvocation.Method"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.GetConcreteMethodInvocationTarget"> + <summary> + Returns the concrete instantiation of <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>, with any + generic parameters bound to real types. + For interface proxies, this will point to the <see cref="T:System.Reflection.MethodInfo"/> on the target class. + </summary> + <returns>The concrete instantiation of <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>, or + <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/> if not a generic method.</returns> + <remarks> + In debug builds this can be slower than calling <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.Proceed"> + <summary> + Proceeds the call to the next interceptor in line, and ultimately to the target method. + </summary> + <remarks> + Since interface proxies without a target don't have the target implementation to proceed to, + it is important, that the last interceptor does not call this method, otherwise a + <see cref="T:System.NotImplementedException"/> will be thrown. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.SetArgumentValue(System.Int32,System.Object)"> + <summary> + Overrides the value of an argument at the given <paramref name="index"/> with the + new <paramref name="value"/> provided. + </summary> + <remarks> + This method accepts an <see cref="T:System.Object"/>, however the value provided must be compatible + with the type of the argument defined on the method, otherwise an exception will be thrown. + </remarks> + <param name="index">The index of the argument to override.</param> + <param name="value">The new value for the argument.</param> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.Arguments"> + <summary> + Gets the arguments that the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> has been invoked with. + </summary> + <value>The arguments the method was invoked with.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.GenericArguments"> + <summary> + Gets the generic arguments of the method. + </summary> + <value>The generic arguments, or null if not a generic method.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.InvocationTarget"> + <summary> + Gets the object on which the invocation is performed. This is different from proxy object + because most of the time this will be the proxy target object. + </summary> + <seealso cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> + <value>The invocation target.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.Method"> + <summary> + Gets the <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked on the proxy. + </summary> + <value>The <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"> + <summary> + For interface proxies, this will point to the <see cref="T:System.Reflection.MethodInfo"/> on the target class. + </summary> + <value>The method invocation target.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.Proxy"> + <summary> + Gets the proxy object on which the intercepted method is invoked. + </summary> + <value>Proxy object on which the intercepted method is invoked.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.ReturnValue"> + <summary> + Gets or sets the return value of the method. + </summary> + <value>The return value of the method.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.TargetType"> + <summary> + Gets the type of the target object for the intercepted method. + </summary> + <value>The type of the target object.</value> + </member> + <member name="T:Castle.DynamicProxy.IProxyGenerationHook"> + <summary> + Used during the target type inspection process. Implementors have a chance to customize the + proxy generation process. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyGenerationHook.MethodsInspected"> + <summary> + Invoked by the generation process to notify that the whole process has completed. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyGenerationHook.NonProxyableMemberNotification(System.Type,System.Reflection.MemberInfo)"> + <summary> + Invoked by the generation process to notify that a member was not marked as virtual. + </summary> + <param name = "type">The type which declares the non-virtual member.</param> + <param name = "memberInfo">The non-virtual member.</param> + <remarks> + This method gives an opportunity to inspect any non-proxyable member of a type that has + been requested to be proxied, and if appropriate - throw an exception to notify the caller. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IProxyGenerationHook.ShouldInterceptMethod(System.Type,System.Reflection.MethodInfo)"> + <summary> + Invoked by the generation process to determine if the specified method should be proxied. + </summary> + <param name = "type">The type which declares the given method.</param> + <param name = "methodInfo">The method to inspect.</param> + <returns>True if the given method should be proxied; false otherwise.</returns> + </member> + <member name="T:Castle.DynamicProxy.Contributors.ITypeContributor"> + <summary> + Interface describing elements composing generated type + </summary> + </member> + <member name="M:Castle.DynamicProxy.Contributors.MembersCollector.AcceptMethod(System.Reflection.MethodInfo,System.Boolean,Castle.DynamicProxy.IProxyGenerationHook)"> + <summary> + Performs some basic screening and invokes the <see cref="T:Castle.DynamicProxy.IProxyGenerationHook"/> + to select methods. + </summary> + <param name="method"></param> + <param name="onlyVirtuals"></param> + <param name="hook"></param> + <returns></returns> + </member> + <member name="T:Castle.DynamicProxy.IAttributeDisassembler"> + <summary> + Provides functionality for disassembling instances of attributes to CustomAttributeBuilder form, during the process of emiting new types by Dynamic Proxy. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IAttributeDisassembler.Disassemble(System.Attribute)"> + <summary> + Disassembles given attribute instance back to corresponding CustomAttributeBuilder. + </summary> + <param name="attribute">An instance of attribute to disassemble</param> + <returns><see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> corresponding 1 to 1 to given attribute instance, or null reference.</returns> + <remarks> + Implementers should return <see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> that corresponds to given attribute instance 1 to 1, + that is after calling specified constructor with specified arguments, and setting specified properties and fields with values specified + we should be able to get an attribute instance identical to the one passed in <paramref name="attribute"/>. Implementer can return null + if it wishes to opt out of replicating the attribute. Notice however, that for some cases, like attributes passed explicitly by the user + it is illegal to return null, and doing so will result in exception. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.HandleError(System.Type,System.Exception)"> + <summary> + Handles error during disassembly process + </summary> + <param name = "attributeType">Type of the attribute being disassembled</param> + <param name = "exception">Exception thrown during the process</param> + <returns>usually null, or (re)throws the exception</returns> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.InitializeConstructorArgs(System.Type,System.Attribute,System.Reflection.ParameterInfo[])"> + <summary> + Here we try to match a constructor argument to its value. + Since we can't get the values from the assembly, we use some heuristics to get it. + a/ we first try to match all the properties on the attributes by name (case insensitive) to the argument + b/ if we fail we try to match them by property type, with some smarts about convertions (i,e: can use Guid for string). + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ReplaceIfBetterMatch(System.Reflection.ParameterInfo,System.Reflection.PropertyInfo,System.Reflection.PropertyInfo)"> + <summary> + We have the following rules here. + Try to find a matching type, failing that, if the parameter is string, get the first property (under the assumption that + we can convert it. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ConvertValue(System.Object,System.Type)"> + <summary> + Attributes can only accept simple types, so we return null for null, + if the value is passed as string we call to string (should help with converting), + otherwise, we use the value as is (enums, integer, etc). + </summary> + </member> + <member name="M:Castle.DynamicProxy.Internal.TypeUtil.GetAllInterfaces(System.Type[])"> + <summary> + Returns list of all unique interfaces implemented given types, including their base interfaces. + </summary> + <param name="types"> </param> + <returns> </returns> + </member> + <member name="T:Castle.DynamicProxy.Serialization.CacheMappingsAttribute"> + <summary> + Applied to the assemblies saved by <see cref="T:Castle.DynamicProxy.ModuleScope"/> in order to persist the cache data included in the persisted assembly. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.BaseProxyGenerator"> + <summary> + Base class that exposes the common functionalities + to proxy generation. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.AddMappingNoCheck(System.Type,Castle.DynamicProxy.Contributors.ITypeContributor,System.Collections.Generic.IDictionary{System.Type,Castle.DynamicProxy.Contributors.ITypeContributor})"> + <summary> + It is safe to add mapping (no mapping for the interface exists) + </summary> + <param name = "implementer"></param> + <param name = "interface"></param> + <param name = "mapping"></param> + </member> + <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.GenerateParameterlessConstructor(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Type,Castle.DynamicProxy.Generators.Emitters.SimpleAST.FieldReference)"> + <summary> + Generates a parameters constructor that initializes the proxy + state with <see cref="T:Castle.DynamicProxy.StandardInterceptor"/> just to make it non-null. + <para> + This constructor is important to allow proxies to be XML serializable + </para> + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.InvocationTypeGenerator.GetBaseCtorArguments(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Reflection.ConstructorInfo@)"> + <summary> + Generates the constructor for the class that extends + <see cref="T:Castle.DynamicProxy.AbstractInvocation"/> + </summary> + <param name="targetFieldType"></param> + <param name="proxyGenerationOptions"></param> + <param name="baseConstructor"></param> + </member> + <member name="T:Castle.DynamicProxy.DefaultProxyBuilder"> + <summary> + Default implementation of <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> interface producing in-memory proxy assemblies. + </summary> + </member> + <member name="T:Castle.DynamicProxy.IProxyBuilder"> + <summary> + Abstracts the implementation of proxy type construction. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type for given <paramref name="classToProxy"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided. + </summary> + <param name="classToProxy">The class type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified class and interfaces. + Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.) + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.ClassProxyGenerator"/> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type that proxies calls to <paramref name="interfaceToProxy"/> members on <paramref name="targetType"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided. + </summary> + <param name="interfaceToProxy">The interface type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="targetType">Type implementing <paramref name="interfaceToProxy"/> on which calls to the interface members should be intercepted.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified interface that 'proceeds' executions to the specified target. + Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.) + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator"/> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type for given <paramref name="interfaceToProxy"/> and <parmaref name="additionalInterfacesToProxy"/> that delegates all calls to the provided interceptors and allows interceptors to switch the actual target of invocation. + </summary> + <param name="interfaceToProxy">The interface type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified interface(s) that delegate all executions to the specified interceptors + and uses an instance of the interface as their targets (i.e. <see cref="P:Castle.DynamicProxy.IInvocation.InvocationTarget"/>), rather than a class. All <see cref="T:Castle.DynamicProxy.IInvocation"/> classes should then implement <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface, + to allow interceptors to switch invocation target with instance of another type implementing called interface. + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetInterfaceGenerator"/> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type for given <paramref name="interfaceToProxy"/> that delegates all calls to the provided interceptors. + </summary> + <param name="interfaceToProxy">The interface type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified interface and additional interfaces that delegate all executions to the specified interceptors. + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithoutTargetGenerator"/> + </member> + <member name="P:Castle.DynamicProxy.IProxyBuilder.Logger"> + <summary> + Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> logs to. + </summary> + </member> + <member name="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope"> + <summary> + Gets the <see cref="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope"/> associated with this builder. + </summary> + <value>The module scope associated with this builder.</value> + </member> + <member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class with new <see cref="P:Castle.DynamicProxy.DefaultProxyBuilder.ModuleScope"/>. + </summary> + </member> + <member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor(Castle.DynamicProxy.ModuleScope)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class. + </summary> + <param name="scope">The module scope for generated proxy types.</param> + </member> + <member name="M:Castle.DynamicProxy.Internal.AttributeUtil.AddDisassembler``1(Castle.DynamicProxy.IAttributeDisassembler)"> + <summary> + Registers custom disassembler to handle disassembly of specified type of attributes. + </summary> + <typeparam name="TAttribute">Type of attributes to handle</typeparam> + <param name="disassembler">Disassembler converting existing instances of Attributes to CustomAttributeBuilders</param> + <remarks> + When disassembling an attribute Dynamic Proxy will first check if an custom disassembler has been registered to handle attributes of that type, + and if none is found, it'll use the <see cref="P:Castle.DynamicProxy.Internal.AttributeUtil.FallbackDisassembler"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Internal.AttributeUtil.ShouldSkipAttributeReplication(System.Type)"> + <summary> + Attributes should be replicated if they are non-inheritable, + but there are some special cases where the attributes means + something to the CLR, where they should be skipped. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Reflection.MemberInfo,System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class. + </summary> + <param name="target">Target element. This is either target type or target method for invocation types.</param> + <param name="type">The type of the proxy. This is base type for invocation types.</param> + <param name="interfaces">The interfaces.</param> + <param name="options">The options.</param> + </member> + <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class. + </summary> + <param name="target">Type of the target.</param> + <param name="interfaces">The interfaces.</param> + <param name="options">The options.</param> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.LdcOpCodesDictionary"> + <summary> + s + Provides appropriate Ldc.X opcode for the type of primitive value to be loaded. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.LdindOpCodesDictionary"> + <summary> + Provides appropriate Ldind.X opcode for + the type of primitive value to be loaded indirectly. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadIndirectOpCodeForType(System.Reflection.Emit.ILGenerator,System.Type)"> + <summary> + Emits a load indirect opcode of the appropriate type for a value or object reference. + Pops a pointer off the evaluation stack, dereferences it and loads + a value of the specified type. + </summary> + <param name = "gen"></param> + <param name = "type"></param> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadOpCodeForConstantValue(System.Reflection.Emit.ILGenerator,System.Object)"> + <summary> + Emits a load opcode of the appropriate kind for a constant string or + primitive value. + </summary> + <param name = "gen"></param> + <param name = "value"></param> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadOpCodeForDefaultValueOfType(System.Reflection.Emit.ILGenerator,System.Type)"> + <summary> + Emits a load opcode of the appropriate kind for the constant default value of a + type, such as 0 for value types and null for reference types. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitStoreIndirectOpCodeForType(System.Reflection.Emit.ILGenerator,System.Type)"> + <summary> + Emits a store indirectopcode of the appropriate type for a value or object reference. + Pops a value of the specified type and a pointer off the evaluation stack, and + stores the value. + </summary> + <param name = "gen"></param> + <param name = "type"></param> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.PropertiesCollection"> + <summary> + Summary description for PropertiesCollection. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.IndirectReference"> + <summary> + Wraps a reference that is passed + ByRef and provides indirect load/store support. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.NewArrayExpression"> + <summary> + Summary description for NewArrayExpression. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.ReferencesToObjectArrayExpression"> + <summary> + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.StindOpCodesDictionary"> + <summary> + Provides appropriate Stind.X opcode + for the type of primitive value to be stored indirectly. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.MetaEvent.#ctor(System.String,System.Type,System.Type,Castle.DynamicProxy.Generators.MetaMethod,Castle.DynamicProxy.Generators.MetaMethod,System.Reflection.EventAttributes)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.MetaEvent"/> class. + </summary> + <param name="name">The name.</param> + <param name="declaringType">Type declaring the original event being overriten, or null.</param> + <param name="eventDelegateType"></param> + <param name="adder">The add method.</param> + <param name="remover">The remove method.</param> + <param name="attributes">The attributes.</param> + </member> + <member name="T:Castle.DynamicProxy.Generators.INamingScope"> + <summary> + Represents the scope of uniquenes of names for types and their members + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)"> + <summary> + Gets a unique name based on <paramref name="suggestedName"/> + </summary> + <param name="suggestedName">Name suggested by the caller</param> + <returns>Unique name based on <paramref name="suggestedName"/>.</returns> + <remarks> + Implementers should provide name as closely resembling <paramref name="suggestedName"/> as possible. + Generally if no collision occurs it is suggested to return suggested name, otherwise append sequential suffix. + Implementers must return deterministic names, that is when <see cref="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)"/> is called twice + with the same suggested name, the same returned name should be provided each time. Non-deterministic return + values, like appending random suffices will break serialization of proxies. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Generators.INamingScope.SafeSubScope"> + <summary> + Returns new, disposable naming scope. It is responsibilty of the caller to make sure that no naming collision + with enclosing scope, or other subscopes is possible. + </summary> + <returns>New naming scope.</returns> + </member> + <member name="T:Castle.DynamicProxy.Generators.MethodFinder"> + <summary> + Returns the methods implemented by a type. Use this instead of Type.GetMethods() to work around a CLR issue + where duplicate MethodInfos are returned by Type.GetMethods() after a token of a generic type's method was loaded. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Internal.InternalsUtil.IsInternal(System.Reflection.MethodBase)"> + <summary> + Determines whether the specified method is internal. + </summary> + <param name = "method">The method.</param> + <returns> + <c>true</c> if the specified method is internal; otherwise, <c>false</c>. + </returns> + </member> + <member name="M:Castle.DynamicProxy.Internal.InternalsUtil.IsInternalToDynamicProxy(System.Reflection.Assembly)"> + <summary> + Determines whether this assembly has internals visible to dynamic proxy. + </summary> + <param name = "asm">The assembly to inspect.</param> + </member> + <member name="M:Castle.DynamicProxy.Internal.InternalsUtil.IsAccessible(System.Reflection.MethodBase)"> + <summary> + Checks if the method is public or protected. + </summary> + <param name = "method"></param> + <returns></returns> + </member> + <member name="M:Castle.DynamicProxy.MixinData.#ctor(System.Collections.Generic.IEnumerable{System.Object})"> + <summary> + Because we need to cache the types based on the mixed in mixins, we do the following here: + - Get all the mixin interfaces + - Sort them by full name + - Return them by position + + The idea is to have reproducible behavior for the case that mixins are registered in different orders. + This method is here because it is required + </summary> + </member> + <member name="T:Castle.DynamicProxy.ModuleScope"> + <summary> + Summary description for ModuleScope. + </summary> + </member> + <member name="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"> + <summary> + The default file name used when the assembly is saved using <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/>. + </summary> + </member> + <member name="F:Castle.DynamicProxy.ModuleScope.DEFAULT_ASSEMBLY_NAME"> + <summary> + The default assembly (simple) name used for the assemblies generated by a <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class; assemblies created by this instance will not be saved. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean,System.String,System.String,System.String,System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved and what simple names are to be assigned to them. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> + <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean,Castle.DynamicProxy.Generators.INamingScope,System.String,System.String,System.String,System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved and what simple names are to be assigned to them. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> + <param name="namingScope">Naming scope used to provide unique names to generated types and their members (usually via sub-scopes).</param> + <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.GetFromCache(Castle.DynamicProxy.Generators.CacheKey)"> + <summary> + Returns a type from this scope's type cache, or null if the key cannot be found. + </summary> + <param name = "key">The key to be looked up in the cache.</param> + <returns>The type from this scope's type cache matching the key, or null if the key cannot be found</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.RegisterInCache(Castle.DynamicProxy.Generators.CacheKey,System.Type)"> + <summary> + Registers a type in this scope's type cache. + </summary> + <param name = "key">The key to be associated with the type.</param> + <param name = "type">The type to be stored in the cache.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.GetKeyPair"> + <summary> + Gets the key pair used to sign the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>. + </summary> + <returns></returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModule(System.Boolean)"> + <summary> + Gets the specified module generated by this scope, creating a new one if none has yet been generated. + </summary> + <param name = "isStrongNamed">If set to true, a strong-named module is returned; otherwise, a weak-named module is returned.</param> + <returns>A strong-named or weak-named module generated by this scope, as specified by the <paramref + name = "isStrongNamed" /> parameter.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithStrongName"> + <summary> + Gets the strong-named module generated by this scope, creating a new one if none has yet been generated. + </summary> + <returns>A strong-named module generated by this scope.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithWeakName"> + <summary> + Gets the weak-named module generated by this scope, creating a new one if none has yet been generated. + </summary> + <returns>A weak-named module generated by this scope.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"> + <summary> + Saves the generated assembly with the name and directory information given when this <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance was created (or with + the <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/> and current directory if none was given). + </summary> + <remarks> + <para> + This method stores the generated assembly in the directory passed as part of the module information specified when this instance was + constructed (if any, else the current directory is used). If both a strong-named and a weak-named assembly + have been generated, it will throw an exception; in this case, use the <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly(System.Boolean)"/> overload. + </para> + <para> + If this <see cref="T:Castle.DynamicProxy.ModuleScope"/> was created without indicating that the assembly should be saved, this method does nothing. + </para> + </remarks> + <exception cref="T:System.InvalidOperationException">Both a strong-named and a weak-named assembly have been generated.</exception> + <returns>The path of the generated assembly file, or null if no file has been generated.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.SaveAssembly(System.Boolean)"> + <summary> + Saves the specified generated assembly with the name and directory information given when this <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance was created + (or with the <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/> and current directory if none was given). + </summary> + <param name="strongNamed">True if the generated assembly with a strong name should be saved (see <see cref="P:Castle.DynamicProxy.ModuleScope.StrongNamedModule"/>); + false if the generated assembly without a strong name should be saved (see <see cref="P:Castle.DynamicProxy.ModuleScope.WeakNamedModule"/>.</param> + <remarks> + <para> + This method stores the specified generated assembly in the directory passed as part of the module information specified when this instance was + constructed (if any, else the current directory is used). + </para> + <para> + If this <see cref="T:Castle.DynamicProxy.ModuleScope"/> was created without indicating that the assembly should be saved, this method does nothing. + </para> + </remarks> + <exception cref="T:System.InvalidOperationException">No assembly has been generated that matches the <paramref name="strongNamed"/> parameter. + </exception> + <returns>The path of the generated assembly file, or null if no file has been generated.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.LoadAssemblyIntoCache(System.Reflection.Assembly)"> + <summary> + Loads the generated types from the given assembly into this <see cref="T:Castle.DynamicProxy.ModuleScope"/>'s cache. + </summary> + <param name="assembly">The assembly to load types from. This assembly must have been saved via <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly(System.Boolean)"/> or + <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"/>, or it must have the <see cref="T:Castle.DynamicProxy.Serialization.CacheMappingsAttribute"/> manually applied.</param> + <remarks> + This method can be used to load previously generated and persisted proxy types from disk into this scope's type cache, eg. in order + to avoid the performance hit associated with proxy generation. + </remarks> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.Lock"> + <summary> + Users of this <see cref="T:Castle.DynamicProxy.ModuleScope"/> should use this lock when accessing the cache. + </summary> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModule"> + <summary> + Gets the strong-named module generated by this scope, or <see langword = "null" /> if none has yet been generated. + </summary> + <value>The strong-named module generated by this scope, or <see langword = "null" /> if none has yet been generated.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModuleName"> + <summary> + Gets the file name of the strongly named module generated by this scope. + </summary> + <value>The file name of the strongly named module generated by this scope.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModuleDirectory"> + <summary> + Gets the directory where the strongly named module generated by this scope will be saved, or <see langword="null"/> if the current directory + is used. + </summary> + <value>The directory where the strongly named module generated by this scope will be saved when <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"/> is called + (if this scope was created to save modules).</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModule"> + <summary> + Gets the weak-named module generated by this scope, or <see langword = "null" /> if none has yet been generated. + </summary> + <value>The weak-named module generated by this scope, or <see langword = "null" /> if none has yet been generated.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModuleName"> + <summary> + Gets the file name of the weakly named module generated by this scope. + </summary> + <value>The file name of the weakly named module generated by this scope.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModuleDirectory"> + <summary> + Gets the directory where the weakly named module generated by this scope will be saved, or <see langword="null"/> if the current directory + is used. + </summary> + <value>The directory where the weakly named module generated by this scope will be saved when <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"/> is called + (if this scope was created to save modules).</value> + </member> + <member name="T:Castle.DynamicProxy.PersistentProxyBuilder"> + <summary> + ProxyBuilder that persists the generated type. + </summary> + <remarks> + The saved assembly contains just the last generated type. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.PersistentProxyBuilder.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.PersistentProxyBuilder"/> class. + </summary> + </member> + <member name="M:Castle.DynamicProxy.PersistentProxyBuilder.SaveAssembly"> + <summary> + Saves the generated assembly to a physical file. Note that this renders the <see cref="T:Castle.DynamicProxy.PersistentProxyBuilder"/> unusable. + </summary> + <returns>The path of the generated assembly file, or null if no assembly has been generated.</returns> + <remarks> + This method does not support saving multiple files. If both a signed and an unsigned module have been generated, use the + respective methods of the <see cref="T:Castle.DynamicProxy.ModuleScope"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerationOptions.#ctor(Castle.DynamicProxy.IProxyGenerationHook)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/> class. + </summary> + <param name="hook">The hook.</param> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerationOptions.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/> class. + </summary> + </member> + <member name="T:Castle.DynamicProxy.ProxyGenerator"> + <summary> + Provides proxy objects for classes and interfaces. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor(Castle.DynamicProxy.IProxyBuilder)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. + </summary> + <param name="builder">Proxy types builder.</param> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor(System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. + </summary> + <param name="disableSignedModule">If <c>true</c> forces all types to be generated into an unsigned module.</param> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns>Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object.</returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/>is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/>is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor)"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptor"/>. + </summary> + <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> + <param name="interceptor">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.IInterceptor)"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptor"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="interceptor">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of <paramref name="additionalInterfacesToProxy"/> to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget``1(``0,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no parameterless constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy``1(Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no parameterless constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for class proxy with given <paramref name="classToProxy"/> class, implementing given <paramref name="additionalInterfacesToProxy"/> and using provided <paramref name="options"/>. + </summary> + <param name="classToProxy">The base class for proxy type.</param> + <param name="additionalInterfacesToProxy">The interfaces that proxy type should implement.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for interface proxy with target for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> on given <paramref name="targetType"/> and using provided <paramref name="options"/>. + </summary> + <param name="interfaceToProxy">The interface proxy type should implement.</param> + <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> + <param name="targetType">Actual type that the proxy type will encompass.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for interface proxy with target interface for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> on given <paramref name="interfaceToProxy"/> and using provided <paramref name="options"/>. + </summary> + <param name="interfaceToProxy">The interface proxy type should implement.</param> + <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for interface proxy without target for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> and using provided <paramref name="options"/>. + </summary> + <param name="interfaceToProxy">The interface proxy type should implement.</param> + <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="P:Castle.DynamicProxy.ProxyGenerator.Logger"> + <summary> + Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> log to. + </summary> + </member> + <member name="P:Castle.DynamicProxy.ProxyGenerator.ProxyBuilder"> + <summary> + Gets the proxy builder instance used to generate proxy types. + </summary> + <value>The proxy builder.</value> + </member> + <member name="M:Castle.DynamicProxy.Serialization.RemotableInvocation.Proceed"> + <summary> + </summary> + <returns></returns> + </member> + <member name="P:Castle.DynamicProxy.Serialization.RemotableInvocation.Method"> + <summary> + </summary> + </member> + <member name="P:Castle.DynamicProxy.Serialization.RemotableInvocation.MethodInvocationTarget"> + <summary> + For interface proxies, this will point to the + <see cref="T:System.Reflection.MethodInfo"/> on the target class + </summary> + </member> + <member name="T:Castle.DynamicProxy.Serialization.ProxyObjectReference"> + <summary> + Handles the deserialization of proxies. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.ResetScope"> + <summary> + Resets the <see cref="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"/> used for deserialization to a new scope. + </summary> + <remarks> + This is useful for test cases. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.SetScope(Castle.DynamicProxy.ModuleScope)"> + <summary> + Resets the <see cref="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"/> used for deserialization to a given <paramref name="scope"/>. + </summary> + <param name="scope"> The scope to be used for deserialization. </param> + <remarks> + By default, the deserialization process uses a different scope than the rest of the application, which can lead to multiple proxies + being generated for the same type. By explicitly setting the deserialization scope to the application's scope, this can be avoided. + </remarks> + </member> + <member name="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"> + <summary> + Gets the <see cref="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"/> used for deserialization. + </summary> + <value> As <see cref="T:Castle.DynamicProxy.Serialization.ProxyObjectReference"/> has no way of automatically determining the scope used by the application (and the application might use more than one scope at the same time), <see cref="T:Castle.DynamicProxy.Serialization.ProxyObjectReference"/> uses a dedicated scope instance for deserializing proxy types. This instance can be reset and set to a specific value via <see cref="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.ResetScope"/> and <see cref="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.SetScope(Castle.DynamicProxy.ModuleScope)"/> . </value> + </member> + <member name="T:Castle.DynamicProxy.Tokens.InvocationMethods"> + <summary> + Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:Castle.DynamicProxy.AbstractInvocation"/> class. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Tokens.SerializationInfoMethods"> + <summary> + Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:System.Runtime.Serialization.SerializationInfo"/> class. + </summary> + </member> + <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Bool"> + <summary> + <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Boolean)"/> + </summary> + </member> + <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Int32"> + <summary> + <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Int32)"/> + </summary> + </member> + <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Object"> + <summary> + <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Object)"/> + </summary> + </member> + <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.GetValue"> + <summary> + <see cref="M:System.Runtime.Serialization.SerializationInfo.GetValue(System.String,System.Type)"/> + </summary> + </member> + <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.SetType"> + <summary> + <see cref="M:System.Runtime.Serialization.SerializationInfo.SetType(System.Type)"/> + </summary> + </member> + <member name="T:Castle.DynamicProxy.IInterceptorSelector"> + <summary> + Provides an extension point that allows proxies to choose specific interceptors on + a per method basis. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IInterceptorSelector.SelectInterceptors(System.Type,System.Reflection.MethodInfo,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Selects the interceptors that should intercept calls to the given <paramref name="method"/>. + </summary> + <param name="type">The type declaring the method to intercept.</param> + <param name="method">The method that will be intercepted.</param> + <param name="interceptors">All interceptors registered with the proxy.</param> + <returns>An array of interceptors to invoke upon calling the <paramref name="method"/>.</returns> + <remarks> + This method is called only once per proxy instance, upon the first call to the + <paramref name="method"/>. Either an empty array or null are valid return values to indicate + that no interceptor should intercept calls to the method. Although it is not advised, it is + legal to return other <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations than these provided in + <paramref name="interceptors"/>. + </remarks> + </member> + <member name="M:Castle.Core.Internal.Lock.Create"> + <summary> + Creates a new lock. + </summary> + <returns></returns> + </member> + <member name="T:Castle.Core.IServiceProviderExAccessor"> + <summary> + This interface should be implemented by classes + that are available in a bigger context, exposing + the container to different areas in the same application. + <para> + For example, in Web application, the (global) HttpApplication + subclasses should implement this interface to expose + the configured container + </para> + </summary> + </member> + <member name="T:Castle.DynamicProxy.IChangeProxyTarget"> + <summary> + Exposes means to change target objects of proxies and invocations + </summary> + </member> + <member name="M:Castle.DynamicProxy.IChangeProxyTarget.ChangeInvocationTarget(System.Object)"> + <summary> + Changes the target object (<see cref="P:Castle.DynamicProxy.IInvocation.InvocationTarget"/>) of current <see cref="T:Castle.DynamicProxy.IInvocation"/>. + </summary> + <param name="target">The new value of target of invocation.</param> + <remarks> + Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to <see cref="P:Castle.DynamicProxy.IInvocation.TargetType"/>, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown. + Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws. + Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws. + </remarks> + <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception> + </member> + <member name="M:Castle.DynamicProxy.IChangeProxyTarget.ChangeProxyTarget(System.Object)"> + <summary> + Permanently changes the target object of the proxy. This does not affect target of the current invocation. + </summary> + <param name="target">The new value of target of the proxy.</param> + <remarks> + Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to proxy's target type, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown. + Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws. + Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws. + </remarks> + <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception> + </member> + <member name="T:Castle.DynamicProxy.IInterceptor"> + <summary> + New interface that is going to be used by DynamicProxy 2 + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyTargetAccessor.DynProxyGetTarget"> + <summary> + Get the proxy target (note that null is a valid target!) + </summary> + <returns></returns> + </member> + <member name="M:Castle.DynamicProxy.IProxyTargetAccessor.GetInterceptors"> + <summary> + Gets the interceptors for the proxy + </summary> + <returns></returns> + </member> + <member name="T:Castle.Core.IServiceEnabledComponent"> + <summary> + Defines that the implementation wants a + <see cref="T:System.IServiceProvider"/> in order to + access other components. The creator must be aware + that the component might (or might not) implement + the interface. + </summary> + <remarks> + Used by Castle Project components to, for example, + gather logging factories + </remarks> + </member> + <member name="T:Castle.Core.IServiceProviderEx"> + <summary> + Increments <c>IServiceProvider</c> with a generic service resolution operation. + </summary> + </member> + <member name="T:Castle.Core.Logging.IExtendedLoggerFactory"> + <summary> + Provides a factory that can produce either <see cref="T:Castle.Core.Logging.ILogger"/> or + <see cref="T:Castle.Core.Logging.IExtendedLogger"/> classes. + </summary> + </member> + <member name="T:Castle.Core.Logging.ILoggerFactory"> + <summary> + Manages the instantiation of <see cref="T:Castle.Core.Logging.ILogger"/>s. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.Type)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.String)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.Type)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.String)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.Type)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.String)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.Type)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.String)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.GetConfigFile(System.String)"> + <summary> + Gets the configuration file. + </summary> + <param name = "fileName">i.e. log4net.config</param> + <returns></returns> + </member> + <member name="T:Castle.Core.Logging.TraceLoggerFactory"> + <summary> + Used to create the TraceLogger implementation of ILogger interface. See <see cref="T:Castle.Core.Logging.TraceLogger"/>. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractLoggerFactory.GetConfigFile(System.String)"> + <summary> + Gets the configuration file. + </summary> + <param name = "fileName">i.e. log4net.config</param> + <returns></returns> + </member> + <member name="T:Castle.Core.Logging.IContextProperties"> + <summary> + Interface for Context Properties implementations + </summary> + <remarks> + <para> + This interface defines a basic property get set accessor. + </para> + <para> + Based on the ContextPropertiesBase of log4net, by Nicko Cadell. + </para> + </remarks> + </member> + <member name="P:Castle.Core.Logging.IContextProperties.Item(System.String)"> + <summary> + Gets or sets the value of a property + </summary> + <value> + The value for the property with the specified key + </value> + <remarks> + <para> + Gets or sets the value of a property + </para> + </remarks> + </member> + <member name="T:Castle.Core.Logging.NullLogFactory"> + <summary> + NullLogFactory used when logging is turned off. + </summary> + </member> + <member name="M:Castle.Core.Logging.NullLogFactory.Create(System.String)"> + <summary> + Creates an instance of ILogger with the specified name. + </summary> + <param name = "name">Name.</param> + <returns></returns> + </member> + <member name="M:Castle.Core.Logging.NullLogFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates an instance of ILogger with the specified name and LoggerLevel. + </summary> + <param name = "name">Name.</param> + <param name = "level">Level.</param> + <returns></returns> + </member> + <member name="T:Castle.Core.Logging.StreamLoggerFactory"> + <summary> + Creates <see cref="T:Castle.Core.Logging.StreamLogger"/> outputing + to files. The name of the file is derived from the log name + plus the 'log' extension. + </summary> + </member> + <member name="T:Castle.Core.Logging.IExtendedLogger"> + <summary> + Provides an interface that supports <see cref="T:Castle.Core.Logging.ILogger"/> and + allows the storage and retrieval of Contexts. These are supported in + both log4net and NLog. + </summary> + </member> + <member name="T:Castle.Core.Logging.ILogger"> + <summary> + Manages logging. + </summary> + <remarks> + This is a facade for the different logging subsystems. + It offers a simplified interface that follows IOC patterns + and a simplified priority/level/severity abstraction. + </remarks> + </member> + <member name="M:Castle.Core.Logging.ILogger.CreateChildLogger(System.String)"> + <summary> + Create a new child logger. + The name of the child logger is [current-loggers-name].[passed-in-name] + </summary> + <param name="loggerName">The Subname of this logger.</param> + <returns>The New ILogger instance.</returns> + <exception cref="T:System.ArgumentException">If the name has an empty element name.</exception> + </member> + <member name="M:Castle.Core.Logging.ILogger.Debug(System.String)"> + <summary> + Logs a debug message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Debug(System.Func{System.String})"> + <summary> + Logs a debug message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsDebugEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Debug(System.String,System.Exception)"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Error(System.String)"> + <summary> + Logs an error message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Error(System.Func{System.String})"> + <summary> + Logs an error message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsErrorEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Error(System.String,System.Exception)"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String)"> + <summary> + Logs a fatal message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Fatal(System.Func{System.String})"> + <summary> + Logs a fatal message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsFatalEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String,System.Exception)"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Info(System.String)"> + <summary> + Logs an info message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Info(System.Func{System.String})"> + <summary> + Logs a info message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsInfoEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Info(System.String,System.Exception)"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Warn(System.String)"> + <summary> + Logs a warn message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Warn(System.Func{System.String})"> + <summary> + Logs a warn message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsWarnEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Warn(System.String,System.Exception)"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsDebugEnabled"> + <summary> + Determines if messages of priority "debug" will be logged. + </summary> + <value>True if "debug" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsErrorEnabled"> + <summary> + Determines if messages of priority "error" will be logged. + </summary> + <value>True if "error" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsFatalEnabled"> + <summary> + Determines if messages of priority "fatal" will be logged. + </summary> + <value>True if "fatal" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsInfoEnabled"> + <summary> + Determines if messages of priority "info" will be logged. + </summary> + <value>True if "info" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsWarnEnabled"> + <summary> + Determines if messages of priority "warn" will be logged. + </summary> + <value>True if "warn" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.IExtendedLogger.GlobalProperties"> + <summary> + Exposes the Global Context of the extended logger. + </summary> + </member> + <member name="P:Castle.Core.Logging.IExtendedLogger.ThreadProperties"> + <summary> + Exposes the Thread Context of the extended logger. + </summary> + </member> + <member name="P:Castle.Core.Logging.IExtendedLogger.ThreadStacks"> + <summary> + Exposes the Thread Stack of the extended logger. + </summary> + </member> + <member name="T:Castle.Core.Logging.ConsoleLogger"> + <summary> + The Logger sending everything to the standard output streams. + This is mainly for the cases when you have a utility that + does not have a logger to supply. + </summary> + </member> + <member name="T:Castle.Core.Logging.LevelFilteredLogger"> + <summary> + The Level Filtered Logger class. This is a base clase which + provides a LogLevel attribute and reroutes all functions into + one Log method. + </summary> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.#ctor"> + <summary> + Creates a new <c>LevelFilteredLogger</c>. + </summary> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InitializeLifetimeService"> + <summary> + Keep the instance alive in a remoting scenario + </summary> + <returns></returns> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String)"> + <summary> + Logs a debug message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String,System.Exception)"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String)"> + <summary> + Logs an info message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String,System.Exception)"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String)"> + <summary> + Logs a warn message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String,System.Exception)"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String)"> + <summary> + Logs an error message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String,System.Exception)"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String)"> + <summary> + Logs a fatal message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String,System.Exception)"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Log(Castle.Core.Logging.LoggerLevel,System.String,System.String,System.Exception)"> + <summary> + Implementors output the log content by implementing this method only. + Note that exception can be null + </summary> + <param name = "loggerLevel"></param> + <param name = "loggerName"></param> + <param name = "message"></param> + <param name = "exception"></param> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.Level"> + <value> + The <c>LoggerLevel</c> that this logger + will be using. Defaults to <c>LoggerLevel.Off</c> + </value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.Name"> + <value> + The name that this logger will be using. + Defaults to <c>String.Empty</c> + </value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsDebugEnabled"> + <summary> + Determines if messages of priority "debug" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Debug"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsInfoEnabled"> + <summary> + Determines if messages of priority "info" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Info"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsWarnEnabled"> + <summary> + Determines if messages of priority "warn" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Warn"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsErrorEnabled"> + <summary> + Determines if messages of priority "error" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Error"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsFatalEnabled"> + <summary> + Determines if messages of priority "fatal" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Fatal"/> bit</value> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor"> + <summary> + Creates a new ConsoleLogger with the <c>Level</c> + set to <c>LoggerLevel.Debug</c> and the <c>Name</c> + set to <c>String.Empty</c>. + </summary> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new ConsoleLogger with the <c>Name</c> + set to <c>String.Empty</c>. + </summary> + <param name = "logLevel">The logs Level.</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(System.String)"> + <summary> + Creates a new ConsoleLogger with the <c>Level</c> + set to <c>LoggerLevel.Debug</c>. + </summary> + <param name = "name">The logs Name.</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new ConsoleLogger. + </summary> + <param name = "name">The logs Name.</param> + <param name = "logLevel">The logs Level.</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.Log(Castle.Core.Logging.LoggerLevel,System.String,System.String,System.Exception)"> + <summary> + A Common method to log. + </summary> + <param name = "loggerLevel">The level of logging</param> + <param name = "loggerName">The name of the logger</param> + <param name = "message">The Message</param> + <param name = "exception">The Exception</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.CreateChildLogger(System.String)"> + <summary> + Returns a new <c>ConsoleLogger</c> with the name + added after this loggers name, with a dot in between. + </summary> + <param name = "loggerName">The added hierarchical name.</param> + <returns>A new <c>ConsoleLogger</c>.</returns> + </member> + <member name="T:Castle.Core.Logging.DiagnosticsLogger"> + <summary> + The Logger using standart Diagnostics namespace. + </summary> + </member> + <member name="M:Castle.Core.Logging.DiagnosticsLogger.#ctor(System.String)"> + <summary> + Creates a logger based on <see cref="T:System.Diagnostics.EventLog"/>. + </summary> + <param name="logName"><see cref="P:System.Diagnostics.EventLog.Log"/></param> + </member> + <member name="M:Castle.Core.Logging.DiagnosticsLogger.#ctor(System.String,System.String)"> + <summary> + Creates a logger based on <see cref="T:System.Diagnostics.EventLog"/>. + </summary> + <param name="logName"><see cref="P:System.Diagnostics.EventLog.Log"/></param> + <param name="source"><see cref="P:System.Diagnostics.EventLog.Source"/></param> + </member> + <member name="M:Castle.Core.Logging.DiagnosticsLogger.#ctor(System.String,System.String,System.String)"> + <summary> + Creates a logger based on <see cref="T:System.Diagnostics.EventLog"/>. + </summary> + <param name="logName"><see cref="P:System.Diagnostics.EventLog.Log"/></param> + <param name="machineName"><see cref="P:System.Diagnostics.EventLog.MachineName"/></param> + <param name="source"><see cref="P:System.Diagnostics.EventLog.Source"/></param> + </member> + <member name="T:Castle.Core.Logging.NullLogger"> + <summary> + The Null Logger class. This is useful for implementations where you need + to provide a logger to a utility class, but do not want any output from it. + It also helps when you have a utility that does not have a logger to supply. + </summary> + </member> + <member name="M:Castle.Core.Logging.NullLogger.CreateChildLogger(System.String)"> + <summary> + Returns this <c>NullLogger</c>. + </summary> + <param name = "loggerName">Ignored</param> + <returns>This ILogger instance.</returns> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Error(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Error(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Info(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Info(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="P:Castle.Core.Logging.NullLogger.GlobalProperties"> + <summary> + Returns empty context properties. + </summary> + </member> + <member name="P:Castle.Core.Logging.NullLogger.ThreadProperties"> + <summary> + Returns empty context properties. + </summary> + </member> + <member name="P:Castle.Core.Logging.NullLogger.ThreadStacks"> + <summary> + Returns empty context stacks. + </summary> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsDebugEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsErrorEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsFatalEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsInfoEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsWarnEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="T:Castle.Core.Logging.StreamLogger"> + <summary> + The Stream Logger class. This class can stream log information + to any stream, it is suitable for storing a log file to disk, + or to a <c>MemoryStream</c> for testing your components. + </summary> + <remarks> + This logger is not thread safe. + </remarks> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream)"> + <summary> + Creates a new <c>StreamLogger</c> with default encoding + and buffer size. Initial Level is set to Debug. + </summary> + <param name = "name"> + The name of the log. + </param> + <param name = "stream"> + The stream that will be used for logging, + seeking while the logger is alive + </param> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream,System.Text.Encoding)"> + <summary> + Creates a new <c>StreamLogger</c> with default buffer size. + Initial Level is set to Debug. + </summary> + <param name="name"> + The name of the log. + </param> + <param name="stream"> + The stream that will be used for logging, + seeking while the logger is alive + </param> + <param name="encoding"> + The encoding that will be used for this stream. + <see cref="T:System.IO.StreamWriter"/> + </param> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream,System.Text.Encoding,System.Int32)"> + <summary> + Creates a new <c>StreamLogger</c>. + Initial Level is set to Debug. + </summary> + <param name="name"> + The name of the log. + </param> + <param name="stream"> + The stream that will be used for logging, + seeking while the logger is alive + </param> + <param name="encoding"> + The encoding that will be used for this stream. + <see cref="T:System.IO.StreamWriter"/> + </param> + <param name="bufferSize"> + The buffer size that will be used for this stream. + <see cref="T:System.IO.StreamWriter"/> + </param> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.StreamWriter)"> + <summary> + Creates a new <c>StreamLogger</c> with + Debug as default Level. + </summary> + <param name = "name">The name of the log.</param> + <param name = "writer">The <c>StreamWriter</c> the log will write to.</param> + </member> + <member name="T:Castle.Core.Logging.TraceLogger"> + <summary> + The TraceLogger sends all logging to the System.Diagnostics.TraceSource + built into the .net framework. + </summary> + <remarks> + Logging can be configured in the system.diagnostics configuration + section. + + If logger doesn't find a source name with a full match it will + use source names which match the namespace partially. For example you can + configure from all castle components by adding a source name with the + name "Castle". + + If no portion of the namespace matches the source named "Default" will + be used. + </remarks> + </member> + <member name="M:Castle.Core.Logging.TraceLogger.#ctor(System.String)"> + <summary> + Build a new trace logger based on the named TraceSource + </summary> + <param name="name">The name used to locate the best TraceSource. In most cases comes from the using type's fullname.</param> + </member> + <member name="M:Castle.Core.Logging.TraceLogger.#ctor(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Build a new trace logger based on the named TraceSource + </summary> + <param name="name">The name used to locate the best TraceSource. In most cases comes from the using type's fullname.</param> + <param name="level">The default logging level at which this source should write messages. In almost all cases this + default value will be overridden in the config file. </param> + </member> + <member name="M:Castle.Core.Logging.TraceLogger.CreateChildLogger(System.String)"> + <summary> + Create a new child logger. + The name of the child logger is [current-loggers-name].[passed-in-name] + </summary> + <param name="loggerName">The Subname of this logger.</param> + <returns>The New ILogger instance.</returns> + </member> + <member name="T:Castle.Core.Configuration.AbstractConfiguration"> + <summary> + This is an abstract <see cref="T:Castle.Core.Configuration.IConfiguration"/> implementation + that deals with methods that can be abstracted away + from underlying implementations. + </summary> + <remarks> + <para><b>AbstractConfiguration</b> makes easier to implementers + to create a new version of <see cref="T:Castle.Core.Configuration.IConfiguration"/></para> + </remarks> + </member> + <member name="T:Castle.Core.Configuration.IConfiguration"> + <summary> + <see cref="T:Castle.Core.Configuration.IConfiguration"/> is a interface encapsulating a configuration node + used to retrieve configuration values. + </summary> + </member> + <member name="M:Castle.Core.Configuration.IConfiguration.GetValue(System.Type,System.Object)"> + <summary> + Gets the value of the node and converts it + into specified <see cref="T:System.Type"/>. + </summary> + <param name="type">The <see cref="T:System.Type"/></param> + <param name="defaultValue"> + The Default value returned if the conversion fails. + </param> + <returns>The Value converted into the specified type.</returns> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Name"> + <summary> + Gets the name of the node. + </summary> + <value> + The Name of the node. + </value> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Value"> + <summary> + Gets the value of the node. + </summary> + <value> + The Value of the node. + </value> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Children"> + <summary> + Gets an <see cref="T:Castle.Core.Configuration.ConfigurationCollection"/> of <see cref="T:Castle.Core.Configuration.IConfiguration"/> + elements containing all node children. + </summary> + <value>The Collection of child nodes.</value> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Attributes"> + <summary> + Gets an <see cref="T:System.Collections.IDictionary"/> of the configuration attributes. + </summary> + </member> + <member name="M:Castle.Core.Configuration.AbstractConfiguration.GetValue(System.Type,System.Object)"> + <summary> + Gets the value of the node and converts it + into specified <see cref="T:System.Type"/>. + </summary> + <param name="type">The <see cref="T:System.Type"/></param> + <param name="defaultValue"> + The Default value returned if the conversion fails. + </param> + <returns>The Value converted into the specified type.</returns> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Attributes"> + <summary> + Gets node attributes. + </summary> + <value> + All attributes of the node. + </value> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Children"> + <summary> + Gets all child nodes. + </summary> + <value>The <see cref="T:Castle.Core.Configuration.ConfigurationCollection"/> of child nodes.</value> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Name"> + <summary> + Gets the name of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </summary> + <value> + The Name of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </value> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Value"> + <summary> + Gets the value of <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </summary> + <value> + The Value of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </value> + </member> + <member name="T:Castle.Core.Configuration.ConfigurationCollection"> + <summary> + A collection of <see cref="T:Castle.Core.Configuration.IConfiguration"/> objects. + </summary> + </member> + <member name="M:Castle.Core.Configuration.ConfigurationCollection.#ctor"> + <summary> + Creates a new instance of <c>ConfigurationCollection</c>. + </summary> + </member> + <member name="M:Castle.Core.Configuration.ConfigurationCollection.#ctor(System.Collections.Generic.IEnumerable{Castle.Core.Configuration.IConfiguration})"> + <summary> + Creates a new instance of <c>ConfigurationCollection</c>. + </summary> + </member> + <member name="T:Castle.Core.Configuration.MutableConfiguration"> + <summary> + Summary description for MutableConfiguration. + </summary> + </member> + <member name="M:Castle.Core.Configuration.MutableConfiguration.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Core.Configuration.MutableConfiguration"/> class. + </summary> + <param name="name">The name.</param> + </member> + <member name="P:Castle.Core.Configuration.MutableConfiguration.Value"> + <summary> + Gets the value of <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </summary> + <value> + The Value of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </value> + </member> + <member name="M:Castle.Core.Configuration.Xml.XmlConfigurationDeserializer.Deserialize(System.Xml.XmlNode)"> + <summary> + Deserializes the specified node into an abstract representation of configuration. + </summary> + <param name = "node">The node.</param> + <returns></returns> + </member> + <member name="M:Castle.Core.Configuration.Xml.XmlConfigurationDeserializer.GetConfigValue(System.String)"> + <summary> + If a config value is an empty string we return null, this is to keep + backward compatibility with old code + </summary> + </member> + <member name="T:Castle.Core.Pair`2"> + <summary> + General purpose class to represent a standard pair of values. + </summary> + <typeparam name="TFirst">Type of the first value</typeparam> + <typeparam name="TSecond">Type of the second value</typeparam> + </member> + <member name="M:Castle.Core.Pair`2.#ctor(`0,`1)"> + <summary> + Constructs a pair with its values + </summary> + <param name="first"></param> + <param name="second"></param> + </member> + <member name="T:Castle.Core.ProxyServices"> + <summary> + List of utility methods related to dynamic proxy operations + </summary> + </member> + <member name="M:Castle.Core.ProxyServices.IsDynamicProxy(System.Type)"> + <summary> + Determines whether the specified type is a proxy generated by + DynamicProxy (1 or 2). + </summary> + <param name="type">The type.</param> + <returns> + <c>true</c> if it is a proxy; otherwise, <c>false</c>. + </returns> + </member> + <member name="T:Castle.Core.ReflectionBasedDictionaryAdapter"> + <summary> + Readonly implementation of <see cref="T:System.Collections.IDictionary"/> which uses an anonymous object as its source. Uses names of properties as keys, and property values as... well - values. Keys are not case sensitive. + </summary> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.#ctor(System.Object)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Core.ReflectionBasedDictionaryAdapter"/> class. + </summary> + <param name="target">The target.</param> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Add(System.Object,System.Object)"> + <summary> + Adds an element with the provided key and value to the <see cref = "T:System.Collections.IDictionary" /> object. + </summary> + <param name = "key">The <see cref = "T:System.Object" /> to use as the key of the element to add.</param> + <param name = "value">The <see cref = "T:System.Object" /> to use as the value of the element to add.</param> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "key" /> is null. </exception> + <exception cref = "T:System.ArgumentException">An element with the same key already exists in the <see + cref = "T:System.Collections.IDictionary" /> object. </exception> + <exception cref = "T:System.NotSupportedException">The <see cref = "T:System.Collections.IDictionary" /> is read-only.-or- The <see + cref = "T:System.Collections.IDictionary" /> has a fixed size. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Clear"> + <summary> + Removes all elements from the <see cref = "T:System.Collections.IDictionary" /> object. + </summary> + <exception cref = "T:System.NotSupportedException">The <see cref = "T:System.Collections.IDictionary" /> object is read-only. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Contains(System.Object)"> + <summary> + Determines whether the <see cref = "T:System.Collections.IDictionary" /> object contains an element with the specified key. + </summary> + <param name = "key">The key to locate in the <see cref = "T:System.Collections.IDictionary" /> object.</param> + <returns> + true if the <see cref = "T:System.Collections.IDictionary" /> contains an element with the key; otherwise, false. + </returns> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "key" /> is null. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Remove(System.Object)"> + <summary> + Removes the element with the specified key from the <see cref = "T:System.Collections.IDictionary" /> object. + </summary> + <param name = "key">The key of the element to remove.</param> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "key" /> is null. </exception> + <exception cref = "T:System.NotSupportedException">The <see cref = "T:System.Collections.IDictionary" /> object is read-only.-or- The <see + cref = "T:System.Collections.IDictionary" /> has a fixed size. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.GetEnumerator"> + <summary> + Returns an enumerator that iterates through a collection. + </summary> + <returns> + An <see cref = "T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection. + </returns> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#ICollection#CopyTo(System.Array,System.Int32)"> + <summary> + Copies the elements of the <see cref = "T:System.Collections.ICollection" /> to an <see cref = "T:System.Array" />, starting at a particular <see + cref = "T:System.Array" /> index. + </summary> + <param name = "array">The one-dimensional <see cref = "T:System.Array" /> that is the destination of the elements copied from <see + cref = "T:System.Collections.ICollection" />. The <see cref = "T:System.Array" /> must have zero-based indexing.</param> + <param name = "index">The zero-based index in <paramref name = "array" /> at which copying begins.</param> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "array" /> is null. </exception> + <exception cref = "T:System.ArgumentOutOfRangeException"> + <paramref name = "index" /> is less than zero. </exception> + <exception cref = "T:System.ArgumentException"> + <paramref name = "array" /> is multidimensional.-or- <paramref name = "index" /> is equal to or greater than the length of <paramref + name = "array" />.-or- The number of elements in the source <see cref = "T:System.Collections.ICollection" /> is greater than the available space from <paramref + name = "index" /> to the end of the destination <paramref name = "array" />. </exception> + <exception cref = "T:System.ArgumentException">The type of the source <see cref = "T:System.Collections.ICollection" /> cannot be cast automatically to the type of the destination <paramref + name = "array" />. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#IDictionary#GetEnumerator"> + <summary> + Returns an <see cref = "T:System.Collections.IDictionaryEnumerator" /> object for the <see + cref = "T:System.Collections.IDictionary" /> object. + </summary> + <returns> + An <see cref = "T:System.Collections.IDictionaryEnumerator" /> object for the <see + cref = "T:System.Collections.IDictionary" /> object. + </returns> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Read(System.Collections.IDictionary,System.Object)"> + <summary> + Reads values of properties from <paramref name = "valuesAsAnonymousObject" /> and inserts them into <paramref + name = "targetDictionary" /> using property names as keys. + </summary> + <param name = "targetDictionary"></param> + <param name = "valuesAsAnonymousObject"></param> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Count"> + <summary> + Gets the number of elements contained in the <see cref = "T:System.Collections.ICollection" />. + </summary> + <value></value> + <returns>The number of elements contained in the <see cref = "T:System.Collections.ICollection" />.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.IsSynchronized"> + <summary> + Gets a value indicating whether access to the <see cref = "T:System.Collections.ICollection" /> is synchronized (thread safe). + </summary> + <value></value> + <returns>true if access to the <see cref = "T:System.Collections.ICollection" /> is synchronized (thread safe); otherwise, false.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the <see cref = "T:System.Collections.ICollection" />. + </summary> + <value></value> + <returns>An object that can be used to synchronize access to the <see cref = "T:System.Collections.ICollection" />.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.IsReadOnly"> + <summary> + Gets a value indicating whether the <see cref = "T:System.Collections.IDictionary" /> object is read-only. + </summary> + <value></value> + <returns>true if the <see cref = "T:System.Collections.IDictionary" /> object is read-only; otherwise, false.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Item(System.Object)"> + <summary> + Gets or sets the <see cref="T:System.Object"/> with the specified key. + </summary> + <value></value> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Keys"> + <summary> + Gets an <see cref = "T:System.Collections.ICollection" /> object containing the keys of the <see + cref = "T:System.Collections.IDictionary" /> object. + </summary> + <value></value> + <returns>An <see cref = "T:System.Collections.ICollection" /> object containing the keys of the <see + cref = "T:System.Collections.IDictionary" /> object.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Values"> + <summary> + Gets an <see cref = "T:System.Collections.ICollection" /> object containing the values in the <see + cref = "T:System.Collections.IDictionary" /> object. + </summary> + <value></value> + <returns>An <see cref = "T:System.Collections.ICollection" /> object containing the values in the <see + cref = "T:System.Collections.IDictionary" /> object.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#IDictionary#IsFixedSize"> + <summary> + Gets a value indicating whether the <see cref = "T:System.Collections.IDictionary" /> object has a fixed size. + </summary> + <value></value> + <returns>true if the <see cref = "T:System.Collections.IDictionary" /> object has a fixed size; otherwise, false.</returns> + </member> + <member name="T:Castle.Core.Resource.IResource"> + <summary> + Represents a 'streamable' resource. Can + be a file, a resource in an assembly. + </summary> + </member> + <member name="M:Castle.Core.Resource.IResource.GetStreamReader"> + <summary> + Returns a reader for the stream + </summary> + <remarks> + It's up to the caller to dispose the reader. + </remarks> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResource.GetStreamReader(System.Text.Encoding)"> + <summary> + Returns a reader for the stream + </summary> + <remarks> + It's up to the caller to dispose the reader. + </remarks> + <param name="encoding"></param> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResource.CreateRelative(System.String)"> + <summary> + Returns an instance of <see cref="T:Castle.Core.Resource.IResource"/> + created according to the <c>relativePath</c> + using itself as the root. + </summary> + <param name="relativePath"></param> + <returns></returns> + </member> + <member name="P:Castle.Core.Resource.IResource.FileBasePath"> + <summary> + + </summary> + <remarks> + Only valid for resources that + can be obtained through relative paths + </remarks> + </member> + <member name="T:Castle.Core.Resource.AbstractStreamResource"> + <summary> + + </summary> + </member> + <member name="F:Castle.Core.Resource.AbstractStreamResource.createStream"> + <summary> + This returns a new stream instance each time it is called. + It is the responsibility of the caller to dispose of this stream + </summary> + </member> + <member name="T:Castle.Core.Resource.IResourceFactory"> + <summary> + Depicts the contract for resource factories. + </summary> + </member> + <member name="M:Castle.Core.Resource.IResourceFactory.Accept(Castle.Core.Resource.CustomUri)"> + <summary> + Used to check whether the resource factory + is able to deal with the given resource + identifier. + </summary> + <remarks> + Implementors should return <c>true</c> + only if the given identifier is supported + by the resource factory + </remarks> + <param name="uri"></param> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResourceFactory.Create(Castle.Core.Resource.CustomUri)"> + <summary> + Creates an <see cref="T:Castle.Core.Resource.IResource"/> instance + for the given resource identifier + </summary> + <param name="uri"></param> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResourceFactory.Create(Castle.Core.Resource.CustomUri,System.String)"> + <summary> + Creates an <see cref="T:Castle.Core.Resource.IResource"/> instance + for the given resource identifier + </summary> + <param name="uri"></param> + <param name="basePath"></param> + <returns></returns> + </member> + <member name="T:Castle.Core.Resource.FileResource"> + <summary> + + </summary> + </member> + <member name="T:Castle.Core.Resource.FileResourceFactory"> + <summary> + + </summary> + </member> + <member name="T:Castle.Core.Resource.StaticContentResource"> + <summary> + Adapts a static string content as an <see cref="T:Castle.Core.Resource.IResource"/> + </summary> + </member> + <member name="T:Castle.Core.Resource.UncResource"> + <summary> + Enable access to files on network shares + </summary> + </member> + <member name="T:Castle.Core.Smtp.IEmailSender"> + <summary> + Email sender abstraction. + </summary> + </member> + <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.String,System.String,System.String,System.String)"> + <summary> + Sends a mail message. + </summary> + <param name="from">From field</param> + <param name="to">To field</param> + <param name="subject">E-mail's subject</param> + <param name="messageText">message's body</param> + </member> + <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.Net.Mail.MailMessage)"> + <summary> + Sends a <see cref="T:System.Net.Mail.MailMessage">message</see>. + </summary> + <param name="message"><see cref="T:System.Net.Mail.MailMessage">Message</see> instance</param> + </member> + <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.Collections.Generic.IEnumerable{System.Net.Mail.MailMessage})"> + <summary> + Sends multiple <see cref="T:System.Net.Mail.MailMessage">messages</see>. + </summary> + <param name="messages">List of <see cref="T:System.Net.Mail.MailMessage">messages</see></param> + </member> + <member name="T:Castle.Core.Smtp.DefaultSmtpSender"> + <summary> + Default <see cref="T:Castle.Core.Smtp.IEmailSender"/> implementation. + </summary> + </member> + <member name="M:Castle.Core.Smtp.DefaultSmtpSender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Core.Smtp.DefaultSmtpSender"/> class based on the <see cref="T:System.Net.Mail.SmtpClient"/> configuration provided in the application configuration file. + </summary> + <remarks> + This constructor is based on the default <see cref="T:System.Net.Mail.SmtpClient"/> configuration in the application configuration file. + </remarks> + </member> + <member name="M:Castle.Core.Smtp.DefaultSmtpSender.#ctor(System.String)"> + <summary> + This service implementation + requires a host name in order to work + </summary> + <param name="hostname">The smtp server name</param> + </member> + <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Send(System.String,System.String,System.String,System.String)"> + <summary> + Sends a message. + </summary> + <exception cref="T:System.ArgumentNullException">If any of the parameters is null</exception> + <param name="from">From field</param> + <param name="to">To field</param> + <param name="subject">e-mail's subject</param> + <param name="messageText">message's body</param> + </member> + <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Send(System.Net.Mail.MailMessage)"> + <summary> + Sends a message. + </summary> + <exception cref="T:System.ArgumentNullException">If the message is null</exception> + <param name="message">Message instance</param> + </member> + <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Configure(System.Net.Mail.SmtpClient)"> + <summary> + Configures the sender + with port information and eventual credential + informed + </summary> + <param name="smtpClient">Message instance</param> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Port"> + <summary> + Gets or sets the port used to + access the SMTP server + </summary> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Hostname"> + <summary> + Gets the hostname. + </summary> + <value>The hostname.</value> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.AsyncSend"> + <summary> + Gets or sets a value which is used to + configure if emails are going to be sent asynchronously or not. + </summary> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Timeout"> + <summary> + Gets or sets a value that specifies + the amount of time after which a synchronous Send call times out. + </summary> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.UseSsl"> + <summary> + Gets or sets a value indicating whether the email should be sent using + a secure communication channel. + </summary> + <value><c>true</c> if should use SSL; otherwise, <c>false</c>.</value> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Domain"> + <summary> + Gets or sets the domain. + </summary> + <value>The domain.</value> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.UserName"> + <summary> + Gets or sets the name of the user. + </summary> + <value>The name of the user.</value> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Password"> + <summary> + Gets or sets the password. + </summary> + <value>The password.</value> + </member> + <member name="P:Castle.Core.Smtp.DefaultSmtpSender.HasCredentials"> + <summary> + Gets a value indicating whether credentials were informed. + </summary> + <value> + <see langword="true"/> if this instance has credentials; otherwise, <see langword="false"/>. + </value> + </member> + </members> +</doc> diff --git a/packages/Castle.Core.3.2.1/lib/sl4/Castle.Core.dll b/packages/Castle.Core.3.2.1/lib/sl4/Castle.Core.dll new file mode 100644 index 000000000..c2d65bb4b Binary files /dev/null and b/packages/Castle.Core.3.2.1/lib/sl4/Castle.Core.dll differ diff --git a/packages/Castle.Core.3.2.1/lib/sl4/Castle.Core.xml b/packages/Castle.Core.3.2.1/lib/sl4/Castle.Core.xml new file mode 100644 index 000000000..766410f44 --- /dev/null +++ b/packages/Castle.Core.3.2.1/lib/sl4/Castle.Core.xml @@ -0,0 +1,4223 @@ +<?xml version="1.0"?> +<doc> + <assembly> + <name>Castle.Core</name> + </assembly> + <members> + <member name="T:Castle.Components.DictionaryAdapter.ReferenceAttribute"> + <summary> + Specifies assignment by reference rather than by copying. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IfExistsAttribute"> + <summary> + Suppresses any on-demand behaviors. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.RemoveIfEmptyAttribute"> + <summary> + Removes a property if null or empty string, guid or collection. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.RemoveIfAttribute"> + <summary> + Removes a property if matches value. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryBehaviorAttribute"> + <summary> + Assigns a specific dictionary key. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryBehavior"> + <summary> + Defines the contract for customizing dictionary access. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryBehavior.Copy"> + <summary> + Copies the dictionary behavior. + </summary> + <returns>null if should not be copied. Otherwise copy.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.IDictionaryBehavior.ExecutionOrder"> + <summary> + Determines relative order to apply related behaviors. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter"> + <summary> + Defines the contract for updating dictionary values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Sets the stored dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="value">The stored value.</param> + <param name="property">The property.</param> + <returns>true if the property should be stored.</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.ICondition"> + <summary> + Contract for value matching. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.VolatileAttribute"> + <summary> + Indicates that underlying values are changeable and should not be cached. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryInitializer"> + <summary> + Contract for dictionary initialization. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryInitializer.Initialize(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.Object[])"> + <summary> + Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="behaviors">The dictionary behaviors.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapterVisitor"> + <summary> + Abstract implementation of <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"/>. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"> + <summary> + Conract for traversing a <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryCreate"> + <summary> + Contract for creating additional Dictionary adapters. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"> + <summary> + Contract for manipulating the Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryEdit"> + <summary> + Contract for editing the Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryNotify"> + <summary> + Contract for managing Dictionary adapter notifications. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryValidate"> + <summary> + Contract for validating Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder"> + <summary> + Defines the contract for building <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryBehavior"/>s. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder.BuildBehaviors"> + <summary> + Builds the dictionary behaviors. + </summary> + <returns></returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter"> + <summary> + Abstract adapter for the <see cref="T:System.Collections.IDictionary"/> support + needed by the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory"/> + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Add(System.Object,System.Object)"> + <summary> + Adds an element with the provided key and value to the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <param name="key">The <see cref="T:System.Object"></see> to use as the key of the element to add.</param> + <param name="value">The <see cref="T:System.Object"></see> to use as the value of the element to add.</param> + <exception cref="T:System.ArgumentException">An element with the same key already exists in the <see cref="T:System.Collections.IDictionary"></see> object. </exception> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Clear"> + <summary> + Removes all elements from the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Contains(System.Object)"> + <summary> + Determines whether the <see cref="T:System.Collections.IDictionary"></see> object contains an element with the specified key. + </summary> + <param name="key">The key to locate in the <see cref="T:System.Collections.IDictionary"></see> object.</param> + <returns> + true if the <see cref="T:System.Collections.IDictionary"></see> contains an element with the key; otherwise, false. + </returns> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.GetEnumerator"> + <summary> + Returns an <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <returns> + An <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object. + </returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Remove(System.Object)"> + <summary> + Removes the element with the specified key from the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <param name="key">The key of the element to remove.</param> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.CopyTo(System.Array,System.Int32)"> + <summary> + Copies the elements of the <see cref="T:System.Collections.ICollection"></see> to an <see cref="T:System.Array"></see>, starting at a particular <see cref="T:System.Array"></see> index. + </summary> + <param name="array">The one-dimensional <see cref="T:System.Array"></see> that is the destination of the elements copied from <see cref="T:System.Collections.ICollection"></see>. The <see cref="T:System.Array"></see> must have zero-based indexing.</param> + <param name="index">The zero-based index in array at which copying begins.</param> + <exception cref="T:System.ArgumentNullException">array is null. </exception> + <exception cref="T:System.ArgumentException">The type of the source <see cref="T:System.Collections.ICollection"></see> cannot be cast automatically to the type of the destination array. </exception> + <exception cref="T:System.ArgumentOutOfRangeException">index is less than zero. </exception> + <exception cref="T:System.ArgumentException">array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source <see cref="T:System.Collections.ICollection"></see> is greater than the available space from index to the end of the destination array. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.System#Collections#IEnumerable#GetEnumerator"> + <summary> + Returns an enumerator that iterates through a collection. + </summary> + <returns> + An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection. + </returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsFixedSize"> + <summary> + Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size. + </summary> + <value></value> + <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size; otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsReadOnly"> + <summary> + Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object is read-only. + </summary> + <value></value> + <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object is read-only; otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Keys"> + <summary> + Gets an <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <value></value> + <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Values"> + <summary> + Gets an <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <value></value> + <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Item(System.Object)"> + <summary> + Gets or sets the <see cref="T:System.Object"/> with the specified key. + </summary> + <value></value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Count"> + <summary> + Gets the number of elements contained in the <see cref="T:System.Collections.ICollection"></see>. + </summary> + <value></value> + <returns>The number of elements contained in the <see cref="T:System.Collections.ICollection"></see>.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsSynchronized"> + <summary> + Gets a value indicating whether access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe). + </summary> + <value></value> + <returns>true if access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe); otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>. + </summary> + <value></value> + <returns>An object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>.</returns> + </member> + <member name="M:Castle.Core.Internal.CollectionExtensions.IsNullOrEmpty(System.Collections.IEnumerable)"> + <summary> + Checks whether or not collection is null or empty. Assumes colleciton can be safely enumerated multiple times. + </summary> + <param name = "this"></param> + <returns></returns> + </member> + <member name="F:Castle.Core.Internal.InternalsVisible.ToCastleCore"> + <summary> + Constant to use when making assembly internals visible to Castle.Core + <c>[assembly: InternalsVisibleTo(CoreInternalsVisible.ToCastleCore)]</c> + </summary> + </member> + <member name="F:Castle.Core.Internal.InternalsVisible.ToDynamicProxyGenAssembly2"> + <summary> + Constant to use when making assembly internals visible to proxy types generated by DynamicProxy. Required when proxying internal types. + <c>[assembly: InternalsVisibleTo(CoreInternalsVisible.ToDynamicProxyGenAssembly2)]</c> + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.ComponentAttribute"> + <summary> + Identifies a property should be represented as a nested component. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder"> + <summary> + Defines the contract for building typed dictionary keys. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Builds the specified key. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The current key.</param> + <param name="property">The property.</param> + <returns>The updated key</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter"> + <summary> + Defines the contract for retrieving dictionary values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the effective dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="property">The property.</param> + <param name="ifExists">true if return only existing.</param> + <returns>The effective property value.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.NoPrefix"> + <summary> + Applies no prefix. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.Prefix"> + <summary> + Gets or sets the prefix. + </summary> + <value>The prefix.</value> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterAttribute"> + <summary> + Identifies the dictionary adapter types. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.FetchAttribute"> + <summary> + Identifies an interface or property to be pre-fetched. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor"> + <summary> + Instructs fetching to occur. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor(System.Boolean)"> + <summary> + Instructs fetching according to <paramref name="fetch"/> + </summary> + <param name="fetch"></param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.FetchAttribute.Fetch"> + <summary> + Gets whether or not fetching should occur. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.GroupAttribute"> + <summary> + Assigns a property to a group. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object)"> + <summary> + Constructs a group assignment. + </summary> + <param name="group">The group name.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object[])"> + <summary> + Constructs a group assignment. + </summary> + <param name="group">The group name.</param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.GroupAttribute.Group"> + <summary> + Gets the group the property is assigned to. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeyAttribute"> + <summary> + Assigns a specific dictionary key. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class. + </summary> + <param name="key">The key.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String[])"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class. + </summary> + <param name="keys">The compound key.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"> + <summary> + Assigns a prefix to the keyed properties of an interface. + </summary> + <remarks> + Key prefixes are not inherited by sub-interfaces. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor"> + <summary> + Initializes a default instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class. + </summary> + <param name="keyPrefix">The prefix for the keyed properties of the interface.</param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.KeyPrefix"> + <summary> + Gets the prefix key added to the properties of the interface. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute"> + <summary> + Substitutes part of key with another string. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute.#ctor(System.String,System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute"/> class. + </summary> + <param name="oldValue">The old value.</param> + <param name="newValue">The new value.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.MultiLevelEditAttribute"> + <summary> + Requests support for multi-level editing. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.NewGuidAttribute"> + <summary> + Generates a new GUID on demand. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.OnDemandAttribute"> + <summary> + Support for on-demand value resolution. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.StringFormatAttribute"> + <summary> + Provides simple string formatting from existing properties. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Format"> + <summary> + Gets the string format. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Properties"> + <summary> + Gets the format properties. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.StringListAttribute"> + <summary> + Identifies a property should be represented as a delimited string value. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringListAttribute.Separator"> + <summary> + Gets the separator. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.StringValuesAttribute"> + <summary> + Converts all properties to strings. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringValuesAttribute.Format"> + <summary> + Gets or sets the format. + </summary> + <value>The format.</value> + </member> + <member name="T:Castle.Components.DictionaryAdapter.SuppressNotificationsAttribute"> + <summary> + Suppress property change notifications. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer"> + <summary> + Contract for property descriptor initialization. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer.Initialize(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Object[])"> + <summary> + Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="propertyDescriptor">The property descriptor.</param> + <param name="behaviors">The property behaviors.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.TypeKeyPrefixAttribute"> + <summary> + Assigns a prefix to the keyed properties using the interface name. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter"> + <summary> + Manages conversion between property values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.#ctor(System.ComponentModel.TypeConverter)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter"/> class. + </summary> + <param name="converter">The converter.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the effective dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="property">The property.</param> + <param name="ifExists">true if return only existing.</param> + <returns>The effective property value.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.ExecutionOrder"> + <summary> + + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory"> + <summary> + Uses Reflection.Emit to expose the properties of a dictionary + through a dynamic implementation of a typed interface. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory"> + <summary> + Defines the contract for building typed dictionary adapters. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <typeparam name="T">The typed interface.</typeparam> + <param name="dictionary">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="dictionary">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="dictionary">The underlying source of properties.</param> + <param name="descriptor">The property descriptor.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <param name="descriptor">The property descriptor.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <param name="other">Another <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> from which to copy behaviors.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``2(System.Collections.Generic.IDictionary{System.String,``1})"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Type,System.Collections.Generic.IDictionary{System.String,``0})"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> + <inheritdoc /> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer"> + <summary> + Contract for dictionary meta-data initialization. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer.Initialize(Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> + <summary> + Initializes the given <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> object. + </summary> + <param name="factory">The dictionary adapter factory.</param> + <param name="dictionaryMeta">The dictionary adapter meta.</param> + + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer.ShouldHaveBehavior(System.Object)"> + <summary> + Determines whether the given behavior should be included in a new + <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> object. + </summary> + <param name="behavior">A dictionary behavior or annotation.</param> + <returns>True if the behavior should be included; otherwise, false.</returns> + <remarks> + <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer"/> behaviors are always included, + regardless of the result of this method. + </remarks> + + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryValidator"> + <summary> + Contract for dictionary validation. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.IsValid(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> + <summary> + Determines if <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> is valid. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <returns>true if valid.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Validate(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> + <summary> + Validates the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <returns>The error summary information.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Validate(Castle.Components.DictionaryAdapter.IDictionaryAdapter,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Validates the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> for a property. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="property">The property to validate.</param> + <returns>The property summary information.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Invalidate(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> + <summary> + Invalidates any results cached by the validator. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"> + <summary> + Describes a dictionary property. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor"> + <summary> + Initializes an empty <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(System.Reflection.PropertyInfo,System.Object[])"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + <param name="property">The property.</param> + <param name="annotations">The annotations.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(System.Object[])"> + <summary> + Initializes a new instance <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Copies an existinginstance of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + <param name="source"></param> + <param name="copyBehaviors"></param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets the key. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="descriptor">The descriptor.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the property value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="descriptor">The descriptor.</param> + <param name="ifExists">true if return only existing.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Sets the property value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="value">The value.</param> + <param name="descriptor">The descriptor.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehavior(Castle.Components.DictionaryAdapter.IDictionaryBehavior)"> + <summary> + Adds a single behavior. + </summary> + <param name="behavior">The behavior.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehaviors(Castle.Components.DictionaryAdapter.IDictionaryBehavior[])"> + <summary> + Adds the behaviors. + </summary> + <param name="behaviors">The behaviors.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehaviors(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryBehavior})"> + <summary> + Adds the behaviors. + </summary> + <param name="behaviors">The behaviors.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyBehaviors(Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Copies the behaviors to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="other"></param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.Copy"> + <summary> + Copies the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <returns></returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.ExecutionOrder"> + <summary> + + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyName"> + <summary> + Gets the property name. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyType"> + <summary> + Gets the property type. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Property"> + <summary> + Gets the property. + </summary> + <value>The property.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.IsDynamicProperty"> + <summary> + Returns true if the property is dynamic. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.State"> + <summary> + Gets additional state. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Fetch"> + <summary> + Determines if property should be fetched. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.IfExists"> + <summary> + Determines if property must exist first. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.SuppressNotifications"> + <summary> + Determines if notifications should occur. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Annotations"> + <summary> + Gets the property behaviors. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.TypeConverter"> + <summary> + Gets the type converter. + </summary> + <value>The type converter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.ExtendedProperties"> + <summary> + Gets the extended properties. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Behaviors"> + <summary> + Gets the setter. + </summary> + <value>The setter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.KeyBuilders"> + <summary> + Gets the key builders. + </summary> + <value>The key builders.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Setters"> + <summary> + Gets the setter. + </summary> + <value>The setter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Getters"> + <summary> + Gets the getter. + </summary> + <value>The getter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Initializers"> + <summary> + Gets the initializers. + </summary> + <value>The initializers.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.MetaInitializers"> + <summary> + Gets the meta-data initializers. + </summary> + <value>The meta-data initializers.</value> + </member> + <member name="T:Castle.Core.Internal.AttributesUtil"> + <summary> + Helper class for retrieving attributes. + </summary> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetAttribute``1(System.Reflection.ICustomAttributeProvider)"> + <summary> + Gets the attribute. + </summary> + <param name = "member">The member.</param> + <returns>The member attribute.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetAttributes``1(System.Reflection.ICustomAttributeProvider)"> + <summary> + Gets the attributes. Does not consider inherited attributes! + </summary> + <param name = "member">The member.</param> + <returns>The member attributes.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeAttribute``1(System.Type)"> + <summary> + Gets the type attribute. + </summary> + <param name = "type">The type.</param> + <returns>The type attribute.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeAttributes``1(System.Type)"> + <summary> + Gets the type attributes. + </summary> + <param name = "type">The type.</param> + <returns>The type attributes.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeConverter(System.Reflection.MemberInfo)"> + <summary> + Gets the type converter. + </summary> + <param name = "member">The member.</param> + <returns></returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.HasAttribute``1(System.Reflection.ICustomAttributeProvider)"> + <summary> + Gets the attribute. + </summary> + <param name = "member">The member.</param> + <returns>The member attribute.</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDynamicValue`1"> + <summary> + Contract for typed dynamic value resolution. + </summary> + <typeparam name="T"></typeparam> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDynamicValue"> + <summary> + Contract for dynamic value resolution. + </summary> + </member> + <member name="T:Castle.Core.Logging.LoggerLevel"> + <summary> + Supporting Logger levels. + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Off"> + <summary> + Logging will be off + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Fatal"> + <summary> + Fatal logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Error"> + <summary> + Error logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Warn"> + <summary> + Warn logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Info"> + <summary> + Info logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Debug"> + <summary> + Debug logging level + </summary> + </member> + <member name="T:Castle.DynamicProxy.IInvocation"> + <summary> + Encapsulates an invocation of a proxied method. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.GetArgumentValue(System.Int32)"> + <summary> + Gets the value of the argument at the specified <paramref name = "index" />. + </summary> + <param name = "index">The index.</param> + <returns>The value of the argument at the specified <paramref name = "index" />.</returns> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.GetConcreteMethod"> + <summary> + Returns the concrete instantiation of the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> on the proxy, with any generic + parameters bound to real types. + </summary> + <returns> + The concrete instantiation of the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> on the proxy, or the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> if + not a generic method. + </returns> + <remarks> + Can be slower than calling <see cref="P:Castle.DynamicProxy.IInvocation.Method"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.GetConcreteMethodInvocationTarget"> + <summary> + Returns the concrete instantiation of <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>, with any + generic parameters bound to real types. + For interface proxies, this will point to the <see cref="T:System.Reflection.MethodInfo"/> on the target class. + </summary> + <returns>The concrete instantiation of <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>, or + <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/> if not a generic method.</returns> + <remarks> + In debug builds this can be slower than calling <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.Proceed"> + <summary> + Proceeds the call to the next interceptor in line, and ultimately to the target method. + </summary> + <remarks> + Since interface proxies without a target don't have the target implementation to proceed to, + it is important, that the last interceptor does not call this method, otherwise a + <see cref="T:System.NotImplementedException"/> will be thrown. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.SetArgumentValue(System.Int32,System.Object)"> + <summary> + Overrides the value of an argument at the given <paramref name="index"/> with the + new <paramref name="value"/> provided. + </summary> + <remarks> + This method accepts an <see cref="T:System.Object"/>, however the value provided must be compatible + with the type of the argument defined on the method, otherwise an exception will be thrown. + </remarks> + <param name="index">The index of the argument to override.</param> + <param name="value">The new value for the argument.</param> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.Arguments"> + <summary> + Gets the arguments that the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> has been invoked with. + </summary> + <value>The arguments the method was invoked with.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.GenericArguments"> + <summary> + Gets the generic arguments of the method. + </summary> + <value>The generic arguments, or null if not a generic method.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.InvocationTarget"> + <summary> + Gets the object on which the invocation is performed. This is different from proxy object + because most of the time this will be the proxy target object. + </summary> + <seealso cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> + <value>The invocation target.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.Method"> + <summary> + Gets the <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked on the proxy. + </summary> + <value>The <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"> + <summary> + For interface proxies, this will point to the <see cref="T:System.Reflection.MethodInfo"/> on the target class. + </summary> + <value>The method invocation target.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.Proxy"> + <summary> + Gets the proxy object on which the intercepted method is invoked. + </summary> + <value>Proxy object on which the intercepted method is invoked.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.ReturnValue"> + <summary> + Gets or sets the return value of the method. + </summary> + <value>The return value of the method.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.TargetType"> + <summary> + Gets the type of the target object for the intercepted method. + </summary> + <value>The type of the target object.</value> + </member> + <member name="T:Castle.DynamicProxy.IProxyGenerationHook"> + <summary> + Used during the target type inspection process. Implementors have a chance to customize the + proxy generation process. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyGenerationHook.MethodsInspected"> + <summary> + Invoked by the generation process to notify that the whole process has completed. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyGenerationHook.NonProxyableMemberNotification(System.Type,System.Reflection.MemberInfo)"> + <summary> + Invoked by the generation process to notify that a member was not marked as virtual. + </summary> + <param name = "type">The type which declares the non-virtual member.</param> + <param name = "memberInfo">The non-virtual member.</param> + <remarks> + This method gives an opportunity to inspect any non-proxyable member of a type that has + been requested to be proxied, and if appropriate - throw an exception to notify the caller. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IProxyGenerationHook.ShouldInterceptMethod(System.Type,System.Reflection.MethodInfo)"> + <summary> + Invoked by the generation process to determine if the specified method should be proxied. + </summary> + <param name = "type">The type which declares the given method.</param> + <param name = "methodInfo">The method to inspect.</param> + <returns>True if the given method should be proxied; false otherwise.</returns> + </member> + <member name="T:Castle.DynamicProxy.Contributors.ITypeContributor"> + <summary> + Interface describing elements composing generated type + </summary> + </member> + <member name="M:Castle.DynamicProxy.Contributors.MembersCollector.AcceptMethod(System.Reflection.MethodInfo,System.Boolean,Castle.DynamicProxy.IProxyGenerationHook)"> + <summary> + Performs some basic screening and invokes the <see cref="T:Castle.DynamicProxy.IProxyGenerationHook"/> + to select methods. + </summary> + <param name="method"></param> + <param name="onlyVirtuals"></param> + <param name="hook"></param> + <returns></returns> + </member> + <member name="T:Castle.DynamicProxy.IAttributeDisassembler"> + <summary> + Provides functionality for disassembling instances of attributes to CustomAttributeBuilder form, during the process of emiting new types by Dynamic Proxy. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IAttributeDisassembler.Disassemble(System.Attribute)"> + <summary> + Disassembles given attribute instance back to corresponding CustomAttributeBuilder. + </summary> + <param name="attribute">An instance of attribute to disassemble</param> + <returns><see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> corresponding 1 to 1 to given attribute instance, or null reference.</returns> + <remarks> + Implementers should return <see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> that corresponds to given attribute instance 1 to 1, + that is after calling specified constructor with specified arguments, and setting specified properties and fields with values specified + we should be able to get an attribute instance identical to the one passed in <paramref name="attribute"/>. Implementer can return null + if it wishes to opt out of replicating the attribute. Notice however, that for some cases, like attributes passed explicitly by the user + it is illegal to return null, and doing so will result in exception. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.HandleError(System.Type,System.Exception)"> + <summary> + Handles error during disassembly process + </summary> + <param name = "attributeType">Type of the attribute being disassembled</param> + <param name = "exception">Exception thrown during the process</param> + <returns>usually null, or (re)throws the exception</returns> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.InitializeConstructorArgs(System.Type,System.Attribute,System.Reflection.ParameterInfo[])"> + <summary> + Here we try to match a constructor argument to its value. + Since we can't get the values from the assembly, we use some heuristics to get it. + a/ we first try to match all the properties on the attributes by name (case insensitive) to the argument + b/ if we fail we try to match them by property type, with some smarts about convertions (i,e: can use Guid for string). + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ReplaceIfBetterMatch(System.Reflection.ParameterInfo,System.Reflection.PropertyInfo,System.Reflection.PropertyInfo)"> + <summary> + We have the following rules here. + Try to find a matching type, failing that, if the parameter is string, get the first property (under the assumption that + we can convert it. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ConvertValue(System.Object,System.Type)"> + <summary> + Attributes can only accept simple types, so we return null for null, + if the value is passed as string we call to string (should help with converting), + otherwise, we use the value as is (enums, integer, etc). + </summary> + </member> + <member name="M:Castle.DynamicProxy.Internal.TypeUtil.GetAllInterfaces(System.Type[])"> + <summary> + Returns list of all unique interfaces implemented given types, including their base interfaces. + </summary> + <param name="types"> </param> + <returns> </returns> + </member> + <member name="T:Castle.DynamicProxy.Generators.BaseProxyGenerator"> + <summary> + Base class that exposes the common functionalities + to proxy generation. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.AddMappingNoCheck(System.Type,Castle.DynamicProxy.Contributors.ITypeContributor,System.Collections.Generic.IDictionary{System.Type,Castle.DynamicProxy.Contributors.ITypeContributor})"> + <summary> + It is safe to add mapping (no mapping for the interface exists) + </summary> + <param name = "implementer"></param> + <param name = "interface"></param> + <param name = "mapping"></param> + </member> + <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.GenerateParameterlessConstructor(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Type,Castle.DynamicProxy.Generators.Emitters.SimpleAST.FieldReference)"> + <summary> + Generates a parameters constructor that initializes the proxy + state with <see cref="T:Castle.DynamicProxy.StandardInterceptor"/> just to make it non-null. + <para> + This constructor is important to allow proxies to be XML serializable + </para> + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.InvocationTypeGenerator.GetBaseCtorArguments(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Reflection.ConstructorInfo@)"> + <summary> + Generates the constructor for the class that extends + <see cref="T:Castle.DynamicProxy.AbstractInvocation"/> + </summary> + <param name="targetFieldType"></param> + <param name="proxyGenerationOptions"></param> + <param name="baseConstructor"></param> + </member> + <member name="T:Castle.DynamicProxy.DefaultProxyBuilder"> + <summary> + Default implementation of <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> interface producing in-memory proxy assemblies. + </summary> + </member> + <member name="T:Castle.DynamicProxy.IProxyBuilder"> + <summary> + Abstracts the implementation of proxy type construction. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type for given <paramref name="classToProxy"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided. + </summary> + <param name="classToProxy">The class type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified class and interfaces. + Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.) + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.ClassProxyGenerator"/> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type that proxies calls to <paramref name="interfaceToProxy"/> members on <paramref name="targetType"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided. + </summary> + <param name="interfaceToProxy">The interface type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="targetType">Type implementing <paramref name="interfaceToProxy"/> on which calls to the interface members should be intercepted.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified interface that 'proceeds' executions to the specified target. + Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.) + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator"/> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type for given <paramref name="interfaceToProxy"/> and <parmaref name="additionalInterfacesToProxy"/> that delegates all calls to the provided interceptors and allows interceptors to switch the actual target of invocation. + </summary> + <param name="interfaceToProxy">The interface type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified interface(s) that delegate all executions to the specified interceptors + and uses an instance of the interface as their targets (i.e. <see cref="P:Castle.DynamicProxy.IInvocation.InvocationTarget"/>), rather than a class. All <see cref="T:Castle.DynamicProxy.IInvocation"/> classes should then implement <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface, + to allow interceptors to switch invocation target with instance of another type implementing called interface. + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetInterfaceGenerator"/> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type for given <paramref name="interfaceToProxy"/> that delegates all calls to the provided interceptors. + </summary> + <param name="interfaceToProxy">The interface type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified interface and additional interfaces that delegate all executions to the specified interceptors. + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithoutTargetGenerator"/> + </member> + <member name="P:Castle.DynamicProxy.IProxyBuilder.Logger"> + <summary> + Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> logs to. + </summary> + </member> + <member name="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope"> + <summary> + Gets the <see cref="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope"/> associated with this builder. + </summary> + <value>The module scope associated with this builder.</value> + </member> + <member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class with new <see cref="P:Castle.DynamicProxy.DefaultProxyBuilder.ModuleScope"/>. + </summary> + </member> + <member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor(Castle.DynamicProxy.ModuleScope)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class. + </summary> + <param name="scope">The module scope for generated proxy types.</param> + </member> + <member name="M:Castle.DynamicProxy.Internal.AttributeUtil.AddDisassembler``1(Castle.DynamicProxy.IAttributeDisassembler)"> + <summary> + Registers custom disassembler to handle disassembly of specified type of attributes. + </summary> + <typeparam name="TAttribute">Type of attributes to handle</typeparam> + <param name="disassembler">Disassembler converting existing instances of Attributes to CustomAttributeBuilders</param> + <remarks> + When disassembling an attribute Dynamic Proxy will first check if an custom disassembler has been registered to handle attributes of that type, + and if none is found, it'll use the <see cref="P:Castle.DynamicProxy.Internal.AttributeUtil.FallbackDisassembler"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Internal.AttributeUtil.ShouldSkipAttributeReplication(System.Type)"> + <summary> + Attributes should be replicated if they are non-inheritable, + but there are some special cases where the attributes means + something to the CLR, where they should be skipped. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Reflection.MemberInfo,System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class. + </summary> + <param name="target">Target element. This is either target type or target method for invocation types.</param> + <param name="type">The type of the proxy. This is base type for invocation types.</param> + <param name="interfaces">The interfaces.</param> + <param name="options">The options.</param> + </member> + <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class. + </summary> + <param name="target">Type of the target.</param> + <param name="interfaces">The interfaces.</param> + <param name="options">The options.</param> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.LdcOpCodesDictionary"> + <summary> + s + Provides appropriate Ldc.X opcode for the type of primitive value to be loaded. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.LdindOpCodesDictionary"> + <summary> + Provides appropriate Ldind.X opcode for + the type of primitive value to be loaded indirectly. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadIndirectOpCodeForType(System.Reflection.Emit.ILGenerator,System.Type)"> + <summary> + Emits a load indirect opcode of the appropriate type for a value or object reference. + Pops a pointer off the evaluation stack, dereferences it and loads + a value of the specified type. + </summary> + <param name = "gen"></param> + <param name = "type"></param> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadOpCodeForConstantValue(System.Reflection.Emit.ILGenerator,System.Object)"> + <summary> + Emits a load opcode of the appropriate kind for a constant string or + primitive value. + </summary> + <param name = "gen"></param> + <param name = "value"></param> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadOpCodeForDefaultValueOfType(System.Reflection.Emit.ILGenerator,System.Type)"> + <summary> + Emits a load opcode of the appropriate kind for the constant default value of a + type, such as 0 for value types and null for reference types. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitStoreIndirectOpCodeForType(System.Reflection.Emit.ILGenerator,System.Type)"> + <summary> + Emits a store indirectopcode of the appropriate type for a value or object reference. + Pops a value of the specified type and a pointer off the evaluation stack, and + stores the value. + </summary> + <param name = "gen"></param> + <param name = "type"></param> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.PropertiesCollection"> + <summary> + Summary description for PropertiesCollection. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.IndirectReference"> + <summary> + Wraps a reference that is passed + ByRef and provides indirect load/store support. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.NewArrayExpression"> + <summary> + Summary description for NewArrayExpression. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.ReferencesToObjectArrayExpression"> + <summary> + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.StindOpCodesDictionary"> + <summary> + Provides appropriate Stind.X opcode + for the type of primitive value to be stored indirectly. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.MetaEvent.#ctor(System.String,System.Type,System.Type,Castle.DynamicProxy.Generators.MetaMethod,Castle.DynamicProxy.Generators.MetaMethod,System.Reflection.EventAttributes)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.MetaEvent"/> class. + </summary> + <param name="name">The name.</param> + <param name="declaringType">Type declaring the original event being overriten, or null.</param> + <param name="eventDelegateType"></param> + <param name="adder">The add method.</param> + <param name="remover">The remove method.</param> + <param name="attributes">The attributes.</param> + </member> + <member name="T:Castle.DynamicProxy.Generators.INamingScope"> + <summary> + Represents the scope of uniquenes of names for types and their members + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)"> + <summary> + Gets a unique name based on <paramref name="suggestedName"/> + </summary> + <param name="suggestedName">Name suggested by the caller</param> + <returns>Unique name based on <paramref name="suggestedName"/>.</returns> + <remarks> + Implementers should provide name as closely resembling <paramref name="suggestedName"/> as possible. + Generally if no collision occurs it is suggested to return suggested name, otherwise append sequential suffix. + Implementers must return deterministic names, that is when <see cref="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)"/> is called twice + with the same suggested name, the same returned name should be provided each time. Non-deterministic return + values, like appending random suffices will break serialization of proxies. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Generators.INamingScope.SafeSubScope"> + <summary> + Returns new, disposable naming scope. It is responsibilty of the caller to make sure that no naming collision + with enclosing scope, or other subscopes is possible. + </summary> + <returns>New naming scope.</returns> + </member> + <member name="T:Castle.DynamicProxy.Generators.MethodFinder"> + <summary> + Returns the methods implemented by a type. Use this instead of Type.GetMethods() to work around a CLR issue + where duplicate MethodInfos are returned by Type.GetMethods() after a token of a generic type's method was loaded. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Internal.InternalsUtil.IsInternal(System.Reflection.MethodBase)"> + <summary> + Determines whether the specified method is internal. + </summary> + <param name = "method">The method.</param> + <returns> + <c>true</c> if the specified method is internal; otherwise, <c>false</c>. + </returns> + </member> + <member name="M:Castle.DynamicProxy.Internal.InternalsUtil.IsInternalToDynamicProxy(System.Reflection.Assembly)"> + <summary> + Determines whether this assembly has internals visible to dynamic proxy. + </summary> + <param name = "asm">The assembly to inspect.</param> + </member> + <member name="M:Castle.DynamicProxy.Internal.InternalsUtil.IsAccessible(System.Reflection.MethodBase)"> + <summary> + Checks if the method is public or protected. + </summary> + <param name = "method"></param> + <returns></returns> + </member> + <member name="M:Castle.DynamicProxy.MixinData.#ctor(System.Collections.Generic.IEnumerable{System.Object})"> + <summary> + Because we need to cache the types based on the mixed in mixins, we do the following here: + - Get all the mixin interfaces + - Sort them by full name + - Return them by position + + The idea is to have reproducible behavior for the case that mixins are registered in different orders. + This method is here because it is required + </summary> + </member> + <member name="T:Castle.DynamicProxy.ModuleScope"> + <summary> + Summary description for ModuleScope. + </summary> + </member> + <member name="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"> + <summary> + The default file name used when the assembly is saved using <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/>. + </summary> + </member> + <member name="F:Castle.DynamicProxy.ModuleScope.DEFAULT_ASSEMBLY_NAME"> + <summary> + The default assembly (simple) name used for the assemblies generated by a <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class; assemblies created by this instance will not be saved. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean,System.String,System.String,System.String,System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved and what simple names are to be assigned to them. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> + <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean,Castle.DynamicProxy.Generators.INamingScope,System.String,System.String,System.String,System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved and what simple names are to be assigned to them. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> + <param name="namingScope">Naming scope used to provide unique names to generated types and their members (usually via sub-scopes).</param> + <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.GetFromCache(Castle.DynamicProxy.Generators.CacheKey)"> + <summary> + Returns a type from this scope's type cache, or null if the key cannot be found. + </summary> + <param name = "key">The key to be looked up in the cache.</param> + <returns>The type from this scope's type cache matching the key, or null if the key cannot be found</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.RegisterInCache(Castle.DynamicProxy.Generators.CacheKey,System.Type)"> + <summary> + Registers a type in this scope's type cache. + </summary> + <param name = "key">The key to be associated with the type.</param> + <param name = "type">The type to be stored in the cache.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.GetKeyPair"> + <summary> + Gets the key pair used to sign the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>. + </summary> + <returns></returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModule(System.Boolean)"> + <summary> + Gets the specified module generated by this scope, creating a new one if none has yet been generated. + </summary> + <param name = "isStrongNamed">If set to true, a strong-named module is returned; otherwise, a weak-named module is returned.</param> + <returns>A strong-named or weak-named module generated by this scope, as specified by the <paramref + name = "isStrongNamed" /> parameter.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithStrongName"> + <summary> + Gets the strong-named module generated by this scope, creating a new one if none has yet been generated. + </summary> + <returns>A strong-named module generated by this scope.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithWeakName"> + <summary> + Gets the weak-named module generated by this scope, creating a new one if none has yet been generated. + </summary> + <returns>A weak-named module generated by this scope.</returns> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.Lock"> + <summary> + Users of this <see cref="T:Castle.DynamicProxy.ModuleScope"/> should use this lock when accessing the cache. + </summary> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModule"> + <summary> + Gets the strong-named module generated by this scope, or <see langword = "null" /> if none has yet been generated. + </summary> + <value>The strong-named module generated by this scope, or <see langword = "null" /> if none has yet been generated.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModuleName"> + <summary> + Gets the file name of the strongly named module generated by this scope. + </summary> + <value>The file name of the strongly named module generated by this scope.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModule"> + <summary> + Gets the weak-named module generated by this scope, or <see langword = "null" /> if none has yet been generated. + </summary> + <value>The weak-named module generated by this scope, or <see langword = "null" /> if none has yet been generated.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModuleName"> + <summary> + Gets the file name of the weakly named module generated by this scope. + </summary> + <value>The file name of the weakly named module generated by this scope.</value> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerationOptions.#ctor(Castle.DynamicProxy.IProxyGenerationHook)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/> class. + </summary> + <param name="hook">The hook.</param> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerationOptions.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/> class. + </summary> + </member> + <member name="T:Castle.DynamicProxy.ProxyGenerator"> + <summary> + Provides proxy objects for classes and interfaces. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor(Castle.DynamicProxy.IProxyBuilder)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. + </summary> + <param name="builder">Proxy types builder.</param> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor(System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. + </summary> + <param name="disableSignedModule">If <c>true</c> forces all types to be generated into an unsigned module.</param> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns>Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object.</returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/>is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/>is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor)"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptor"/>. + </summary> + <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> + <param name="interceptor">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.IInterceptor)"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptor"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="interceptor">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of <paramref name="additionalInterfacesToProxy"/> to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget``1(``0,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no parameterless constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy``1(Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no parameterless constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for class proxy with given <paramref name="classToProxy"/> class, implementing given <paramref name="additionalInterfacesToProxy"/> and using provided <paramref name="options"/>. + </summary> + <param name="classToProxy">The base class for proxy type.</param> + <param name="additionalInterfacesToProxy">The interfaces that proxy type should implement.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for interface proxy with target for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> on given <paramref name="targetType"/> and using provided <paramref name="options"/>. + </summary> + <param name="interfaceToProxy">The interface proxy type should implement.</param> + <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> + <param name="targetType">Actual type that the proxy type will encompass.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for interface proxy with target interface for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> on given <paramref name="interfaceToProxy"/> and using provided <paramref name="options"/>. + </summary> + <param name="interfaceToProxy">The interface proxy type should implement.</param> + <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for interface proxy without target for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> and using provided <paramref name="options"/>. + </summary> + <param name="interfaceToProxy">The interface proxy type should implement.</param> + <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="P:Castle.DynamicProxy.ProxyGenerator.Logger"> + <summary> + Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> log to. + </summary> + </member> + <member name="P:Castle.DynamicProxy.ProxyGenerator.ProxyBuilder"> + <summary> + Gets the proxy builder instance used to generate proxy types. + </summary> + <value>The proxy builder.</value> + </member> + <member name="M:Castle.DynamicProxy.SilverlightExtensions.Extensions.IsNested(System.Type)"> + <summary> + The silverlight System.Type is missing the IsNested property so this exposes similar functionality. + </summary> + <param name="type"></param> + <returns></returns> + </member> + <member name="T:Castle.DynamicProxy.Tokens.InvocationMethods"> + <summary> + Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:Castle.DynamicProxy.AbstractInvocation"/> class. + </summary> + </member> + <member name="T:Castle.DynamicProxy.IInterceptorSelector"> + <summary> + Provides an extension point that allows proxies to choose specific interceptors on + a per method basis. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IInterceptorSelector.SelectInterceptors(System.Type,System.Reflection.MethodInfo,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Selects the interceptors that should intercept calls to the given <paramref name="method"/>. + </summary> + <param name="type">The type declaring the method to intercept.</param> + <param name="method">The method that will be intercepted.</param> + <param name="interceptors">All interceptors registered with the proxy.</param> + <returns>An array of interceptors to invoke upon calling the <paramref name="method"/>.</returns> + <remarks> + This method is called only once per proxy instance, upon the first call to the + <paramref name="method"/>. Either an empty array or null are valid return values to indicate + that no interceptor should intercept calls to the method. Although it is not advised, it is + legal to return other <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations than these provided in + <paramref name="interceptors"/>. + </remarks> + </member> + <member name="M:Castle.Core.Internal.Lock.Create"> + <summary> + Creates a new lock. + </summary> + <returns></returns> + </member> + <member name="T:Castle.Core.IServiceProviderExAccessor"> + <summary> + This interface should be implemented by classes + that are available in a bigger context, exposing + the container to different areas in the same application. + <para> + For example, in Web application, the (global) HttpApplication + subclasses should implement this interface to expose + the configured container + </para> + </summary> + </member> + <member name="T:Castle.DynamicProxy.IChangeProxyTarget"> + <summary> + Exposes means to change target objects of proxies and invocations + </summary> + </member> + <member name="M:Castle.DynamicProxy.IChangeProxyTarget.ChangeInvocationTarget(System.Object)"> + <summary> + Changes the target object (<see cref="P:Castle.DynamicProxy.IInvocation.InvocationTarget"/>) of current <see cref="T:Castle.DynamicProxy.IInvocation"/>. + </summary> + <param name="target">The new value of target of invocation.</param> + <remarks> + Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to <see cref="P:Castle.DynamicProxy.IInvocation.TargetType"/>, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown. + Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws. + Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws. + </remarks> + <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception> + </member> + <member name="M:Castle.DynamicProxy.IChangeProxyTarget.ChangeProxyTarget(System.Object)"> + <summary> + Permanently changes the target object of the proxy. This does not affect target of the current invocation. + </summary> + <param name="target">The new value of target of the proxy.</param> + <remarks> + Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to proxy's target type, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown. + Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws. + Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws. + </remarks> + <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception> + </member> + <member name="T:Castle.DynamicProxy.IInterceptor"> + <summary> + New interface that is going to be used by DynamicProxy 2 + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyTargetAccessor.DynProxyGetTarget"> + <summary> + Get the proxy target (note that null is a valid target!) + </summary> + <returns></returns> + </member> + <member name="M:Castle.DynamicProxy.IProxyTargetAccessor.GetInterceptors"> + <summary> + Gets the interceptors for the proxy + </summary> + <returns></returns> + </member> + <member name="T:Castle.Core.IServiceEnabledComponent"> + <summary> + Defines that the implementation wants a + <see cref="T:System.IServiceProvider"/> in order to + access other components. The creator must be aware + that the component might (or might not) implement + the interface. + </summary> + <remarks> + Used by Castle Project components to, for example, + gather logging factories + </remarks> + </member> + <member name="T:Castle.Core.IServiceProviderEx"> + <summary> + Increments <c>IServiceProvider</c> with a generic service resolution operation. + </summary> + </member> + <member name="T:Castle.Core.Logging.IExtendedLoggerFactory"> + <summary> + Provides a factory that can produce either <see cref="T:Castle.Core.Logging.ILogger"/> or + <see cref="T:Castle.Core.Logging.IExtendedLogger"/> classes. + </summary> + </member> + <member name="T:Castle.Core.Logging.ILoggerFactory"> + <summary> + Manages the instantiation of <see cref="T:Castle.Core.Logging.ILogger"/>s. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.Type)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.String)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.Type)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.String)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.Type)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.String)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.Type)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.String)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.GetConfigFile(System.String)"> + <summary> + Gets the configuration file. + </summary> + <param name = "fileName">i.e. log4net.config</param> + <returns></returns> + </member> + <member name="T:Castle.Core.Logging.IContextProperties"> + <summary> + Interface for Context Properties implementations + </summary> + <remarks> + <para> + This interface defines a basic property get set accessor. + </para> + <para> + Based on the ContextPropertiesBase of log4net, by Nicko Cadell. + </para> + </remarks> + </member> + <member name="P:Castle.Core.Logging.IContextProperties.Item(System.String)"> + <summary> + Gets or sets the value of a property + </summary> + <value> + The value for the property with the specified key + </value> + <remarks> + <para> + Gets or sets the value of a property + </para> + </remarks> + </member> + <member name="M:Castle.Core.Logging.AbstractLoggerFactory.GetConfigFile(System.String)"> + <summary> + Gets the configuration file. + </summary> + <param name = "fileName">i.e. log4net.config</param> + <returns></returns> + </member> + <member name="T:Castle.Core.Logging.NullLogFactory"> + <summary> + NullLogFactory used when logging is turned off. + </summary> + </member> + <member name="M:Castle.Core.Logging.NullLogFactory.Create(System.String)"> + <summary> + Creates an instance of ILogger with the specified name. + </summary> + <param name = "name">Name.</param> + <returns></returns> + </member> + <member name="M:Castle.Core.Logging.NullLogFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates an instance of ILogger with the specified name and LoggerLevel. + </summary> + <param name = "name">Name.</param> + <param name = "level">Level.</param> + <returns></returns> + </member> + <member name="T:Castle.Core.Logging.IExtendedLogger"> + <summary> + Provides an interface that supports <see cref="T:Castle.Core.Logging.ILogger"/> and + allows the storage and retrieval of Contexts. These are supported in + both log4net and NLog. + </summary> + </member> + <member name="T:Castle.Core.Logging.ILogger"> + <summary> + Manages logging. + </summary> + <remarks> + This is a facade for the different logging subsystems. + It offers a simplified interface that follows IOC patterns + and a simplified priority/level/severity abstraction. + </remarks> + </member> + <member name="M:Castle.Core.Logging.ILogger.CreateChildLogger(System.String)"> + <summary> + Create a new child logger. + The name of the child logger is [current-loggers-name].[passed-in-name] + </summary> + <param name="loggerName">The Subname of this logger.</param> + <returns>The New ILogger instance.</returns> + <exception cref="T:System.ArgumentException">If the name has an empty element name.</exception> + </member> + <member name="M:Castle.Core.Logging.ILogger.Debug(System.String)"> + <summary> + Logs a debug message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Debug(System.Func{System.String})"> + <summary> + Logs a debug message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsDebugEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Debug(System.String,System.Exception)"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Error(System.String)"> + <summary> + Logs an error message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Error(System.Func{System.String})"> + <summary> + Logs an error message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsErrorEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Error(System.String,System.Exception)"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String)"> + <summary> + Logs a fatal message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Fatal(System.Func{System.String})"> + <summary> + Logs a fatal message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsFatalEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String,System.Exception)"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Info(System.String)"> + <summary> + Logs an info message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Info(System.Func{System.String})"> + <summary> + Logs a info message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsInfoEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Info(System.String,System.Exception)"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Warn(System.String)"> + <summary> + Logs a warn message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Warn(System.Func{System.String})"> + <summary> + Logs a warn message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsWarnEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Warn(System.String,System.Exception)"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsDebugEnabled"> + <summary> + Determines if messages of priority "debug" will be logged. + </summary> + <value>True if "debug" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsErrorEnabled"> + <summary> + Determines if messages of priority "error" will be logged. + </summary> + <value>True if "error" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsFatalEnabled"> + <summary> + Determines if messages of priority "fatal" will be logged. + </summary> + <value>True if "fatal" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsInfoEnabled"> + <summary> + Determines if messages of priority "info" will be logged. + </summary> + <value>True if "info" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsWarnEnabled"> + <summary> + Determines if messages of priority "warn" will be logged. + </summary> + <value>True if "warn" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.IExtendedLogger.GlobalProperties"> + <summary> + Exposes the Global Context of the extended logger. + </summary> + </member> + <member name="P:Castle.Core.Logging.IExtendedLogger.ThreadProperties"> + <summary> + Exposes the Thread Context of the extended logger. + </summary> + </member> + <member name="P:Castle.Core.Logging.IExtendedLogger.ThreadStacks"> + <summary> + Exposes the Thread Stack of the extended logger. + </summary> + </member> + <member name="T:Castle.Core.Logging.ConsoleLogger"> + <summary> + The Logger sending everything to the standard output streams. + This is mainly for the cases when you have a utility that + does not have a logger to supply. + </summary> + </member> + <member name="T:Castle.Core.Logging.LevelFilteredLogger"> + <summary> + The Level Filtered Logger class. This is a base clase which + provides a LogLevel attribute and reroutes all functions into + one Log method. + </summary> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.#ctor"> + <summary> + Creates a new <c>LevelFilteredLogger</c>. + </summary> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String)"> + <summary> + Logs a debug message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String,System.Exception)"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String)"> + <summary> + Logs an info message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String,System.Exception)"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String)"> + <summary> + Logs a warn message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String,System.Exception)"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String)"> + <summary> + Logs an error message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String,System.Exception)"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String)"> + <summary> + Logs a fatal message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String,System.Exception)"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Log(Castle.Core.Logging.LoggerLevel,System.String,System.String,System.Exception)"> + <summary> + Implementors output the log content by implementing this method only. + Note that exception can be null + </summary> + <param name = "loggerLevel"></param> + <param name = "loggerName"></param> + <param name = "message"></param> + <param name = "exception"></param> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.Level"> + <value> + The <c>LoggerLevel</c> that this logger + will be using. Defaults to <c>LoggerLevel.Off</c> + </value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.Name"> + <value> + The name that this logger will be using. + Defaults to <c>String.Empty</c> + </value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsDebugEnabled"> + <summary> + Determines if messages of priority "debug" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Debug"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsInfoEnabled"> + <summary> + Determines if messages of priority "info" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Info"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsWarnEnabled"> + <summary> + Determines if messages of priority "warn" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Warn"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsErrorEnabled"> + <summary> + Determines if messages of priority "error" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Error"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsFatalEnabled"> + <summary> + Determines if messages of priority "fatal" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Fatal"/> bit</value> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor"> + <summary> + Creates a new ConsoleLogger with the <c>Level</c> + set to <c>LoggerLevel.Debug</c> and the <c>Name</c> + set to <c>String.Empty</c>. + </summary> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new ConsoleLogger with the <c>Name</c> + set to <c>String.Empty</c>. + </summary> + <param name = "logLevel">The logs Level.</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(System.String)"> + <summary> + Creates a new ConsoleLogger with the <c>Level</c> + set to <c>LoggerLevel.Debug</c>. + </summary> + <param name = "name">The logs Name.</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new ConsoleLogger. + </summary> + <param name = "name">The logs Name.</param> + <param name = "logLevel">The logs Level.</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.Log(Castle.Core.Logging.LoggerLevel,System.String,System.String,System.Exception)"> + <summary> + A Common method to log. + </summary> + <param name = "loggerLevel">The level of logging</param> + <param name = "loggerName">The name of the logger</param> + <param name = "message">The Message</param> + <param name = "exception">The Exception</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.CreateChildLogger(System.String)"> + <summary> + Returns a new <c>ConsoleLogger</c> with the name + added after this loggers name, with a dot in between. + </summary> + <param name = "loggerName">The added hierarchical name.</param> + <returns>A new <c>ConsoleLogger</c>.</returns> + </member> + <member name="T:Castle.Core.Logging.NullLogger"> + <summary> + The Null Logger class. This is useful for implementations where you need + to provide a logger to a utility class, but do not want any output from it. + It also helps when you have a utility that does not have a logger to supply. + </summary> + </member> + <member name="M:Castle.Core.Logging.NullLogger.CreateChildLogger(System.String)"> + <summary> + Returns this <c>NullLogger</c>. + </summary> + <param name = "loggerName">Ignored</param> + <returns>This ILogger instance.</returns> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Error(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Error(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Info(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Info(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="P:Castle.Core.Logging.NullLogger.GlobalProperties"> + <summary> + Returns empty context properties. + </summary> + </member> + <member name="P:Castle.Core.Logging.NullLogger.ThreadProperties"> + <summary> + Returns empty context properties. + </summary> + </member> + <member name="P:Castle.Core.Logging.NullLogger.ThreadStacks"> + <summary> + Returns empty context stacks. + </summary> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsDebugEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsErrorEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsFatalEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsInfoEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsWarnEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="T:Castle.Core.Logging.StreamLogger"> + <summary> + The Stream Logger class. This class can stream log information + to any stream, it is suitable for storing a log file to disk, + or to a <c>MemoryStream</c> for testing your components. + </summary> + <remarks> + This logger is not thread safe. + </remarks> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream)"> + <summary> + Creates a new <c>StreamLogger</c> with default encoding + and buffer size. Initial Level is set to Debug. + </summary> + <param name = "name"> + The name of the log. + </param> + <param name = "stream"> + The stream that will be used for logging, + seeking while the logger is alive + </param> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream,System.Text.Encoding)"> + <summary> + Creates a new <c>StreamLogger</c> with default buffer size. + Initial Level is set to Debug. + </summary> + <param name="name"> + The name of the log. + </param> + <param name="stream"> + The stream that will be used for logging, + seeking while the logger is alive + </param> + <param name="encoding"> + The encoding that will be used for this stream. + <see cref="T:System.IO.StreamWriter"/> + </param> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream,System.Text.Encoding,System.Int32)"> + <summary> + Creates a new <c>StreamLogger</c>. + Initial Level is set to Debug. + </summary> + <param name="name"> + The name of the log. + </param> + <param name="stream"> + The stream that will be used for logging, + seeking while the logger is alive + </param> + <param name="encoding"> + The encoding that will be used for this stream. + <see cref="T:System.IO.StreamWriter"/> + </param> + <param name="bufferSize"> + The buffer size that will be used for this stream. + <see cref="T:System.IO.StreamWriter"/> + </param> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.StreamWriter)"> + <summary> + Creates a new <c>StreamLogger</c> with + Debug as default Level. + </summary> + <param name = "name">The name of the log.</param> + <param name = "writer">The <c>StreamWriter</c> the log will write to.</param> + </member> + <member name="T:Castle.Core.Configuration.AbstractConfiguration"> + <summary> + This is an abstract <see cref="T:Castle.Core.Configuration.IConfiguration"/> implementation + that deals with methods that can be abstracted away + from underlying implementations. + </summary> + <remarks> + <para><b>AbstractConfiguration</b> makes easier to implementers + to create a new version of <see cref="T:Castle.Core.Configuration.IConfiguration"/></para> + </remarks> + </member> + <member name="T:Castle.Core.Configuration.IConfiguration"> + <summary> + <see cref="T:Castle.Core.Configuration.IConfiguration"/> is a interface encapsulating a configuration node + used to retrieve configuration values. + </summary> + </member> + <member name="M:Castle.Core.Configuration.IConfiguration.GetValue(System.Type,System.Object)"> + <summary> + Gets the value of the node and converts it + into specified <see cref="T:System.Type"/>. + </summary> + <param name="type">The <see cref="T:System.Type"/></param> + <param name="defaultValue"> + The Default value returned if the conversion fails. + </param> + <returns>The Value converted into the specified type.</returns> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Name"> + <summary> + Gets the name of the node. + </summary> + <value> + The Name of the node. + </value> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Value"> + <summary> + Gets the value of the node. + </summary> + <value> + The Value of the node. + </value> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Children"> + <summary> + Gets an <see cref="T:Castle.Core.Configuration.ConfigurationCollection"/> of <see cref="T:Castle.Core.Configuration.IConfiguration"/> + elements containing all node children. + </summary> + <value>The Collection of child nodes.</value> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Attributes"> + <summary> + Gets an <see cref="T:System.Collections.IDictionary"/> of the configuration attributes. + </summary> + </member> + <member name="M:Castle.Core.Configuration.AbstractConfiguration.GetValue(System.Type,System.Object)"> + <summary> + Gets the value of the node and converts it + into specified <see cref="T:System.Type"/>. + </summary> + <param name="type">The <see cref="T:System.Type"/></param> + <param name="defaultValue"> + The Default value returned if the conversion fails. + </param> + <returns>The Value converted into the specified type.</returns> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Attributes"> + <summary> + Gets node attributes. + </summary> + <value> + All attributes of the node. + </value> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Children"> + <summary> + Gets all child nodes. + </summary> + <value>The <see cref="T:Castle.Core.Configuration.ConfigurationCollection"/> of child nodes.</value> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Name"> + <summary> + Gets the name of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </summary> + <value> + The Name of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </value> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Value"> + <summary> + Gets the value of <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </summary> + <value> + The Value of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </value> + </member> + <member name="T:Castle.Core.Configuration.ConfigurationCollection"> + <summary> + A collection of <see cref="T:Castle.Core.Configuration.IConfiguration"/> objects. + </summary> + </member> + <member name="M:Castle.Core.Configuration.ConfigurationCollection.#ctor"> + <summary> + Creates a new instance of <c>ConfigurationCollection</c>. + </summary> + </member> + <member name="M:Castle.Core.Configuration.ConfigurationCollection.#ctor(System.Collections.Generic.IEnumerable{Castle.Core.Configuration.IConfiguration})"> + <summary> + Creates a new instance of <c>ConfigurationCollection</c>. + </summary> + </member> + <member name="T:Castle.Core.Configuration.MutableConfiguration"> + <summary> + Summary description for MutableConfiguration. + </summary> + </member> + <member name="M:Castle.Core.Configuration.MutableConfiguration.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Core.Configuration.MutableConfiguration"/> class. + </summary> + <param name="name">The name.</param> + </member> + <member name="P:Castle.Core.Configuration.MutableConfiguration.Value"> + <summary> + Gets the value of <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </summary> + <value> + The Value of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </value> + </member> + <member name="T:Castle.Core.Pair`2"> + <summary> + General purpose class to represent a standard pair of values. + </summary> + <typeparam name="TFirst">Type of the first value</typeparam> + <typeparam name="TSecond">Type of the second value</typeparam> + </member> + <member name="M:Castle.Core.Pair`2.#ctor(`0,`1)"> + <summary> + Constructs a pair with its values + </summary> + <param name="first"></param> + <param name="second"></param> + </member> + <member name="T:Castle.Core.ProxyServices"> + <summary> + List of utility methods related to dynamic proxy operations + </summary> + </member> + <member name="M:Castle.Core.ProxyServices.IsDynamicProxy(System.Type)"> + <summary> + Determines whether the specified type is a proxy generated by + DynamicProxy (1 or 2). + </summary> + <param name="type">The type.</param> + <returns> + <c>true</c> if it is a proxy; otherwise, <c>false</c>. + </returns> + </member> + <member name="T:Castle.Core.ReflectionBasedDictionaryAdapter"> + <summary> + Readonly implementation of <see cref="T:System.Collections.IDictionary"/> which uses an anonymous object as its source. Uses names of properties as keys, and property values as... well - values. Keys are not case sensitive. + </summary> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.#ctor(System.Object)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Core.ReflectionBasedDictionaryAdapter"/> class. + </summary> + <param name="target">The target.</param> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Add(System.Object,System.Object)"> + <summary> + Adds an element with the provided key and value to the <see cref = "T:System.Collections.IDictionary" /> object. + </summary> + <param name = "key">The <see cref = "T:System.Object" /> to use as the key of the element to add.</param> + <param name = "value">The <see cref = "T:System.Object" /> to use as the value of the element to add.</param> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "key" /> is null. </exception> + <exception cref = "T:System.ArgumentException">An element with the same key already exists in the <see + cref = "T:System.Collections.IDictionary" /> object. </exception> + <exception cref = "T:System.NotSupportedException">The <see cref = "T:System.Collections.IDictionary" /> is read-only.-or- The <see + cref = "T:System.Collections.IDictionary" /> has a fixed size. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Clear"> + <summary> + Removes all elements from the <see cref = "T:System.Collections.IDictionary" /> object. + </summary> + <exception cref = "T:System.NotSupportedException">The <see cref = "T:System.Collections.IDictionary" /> object is read-only. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Contains(System.Object)"> + <summary> + Determines whether the <see cref = "T:System.Collections.IDictionary" /> object contains an element with the specified key. + </summary> + <param name = "key">The key to locate in the <see cref = "T:System.Collections.IDictionary" /> object.</param> + <returns> + true if the <see cref = "T:System.Collections.IDictionary" /> contains an element with the key; otherwise, false. + </returns> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "key" /> is null. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Remove(System.Object)"> + <summary> + Removes the element with the specified key from the <see cref = "T:System.Collections.IDictionary" /> object. + </summary> + <param name = "key">The key of the element to remove.</param> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "key" /> is null. </exception> + <exception cref = "T:System.NotSupportedException">The <see cref = "T:System.Collections.IDictionary" /> object is read-only.-or- The <see + cref = "T:System.Collections.IDictionary" /> has a fixed size. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.GetEnumerator"> + <summary> + Returns an enumerator that iterates through a collection. + </summary> + <returns> + An <see cref = "T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection. + </returns> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#ICollection#CopyTo(System.Array,System.Int32)"> + <summary> + Copies the elements of the <see cref = "T:System.Collections.ICollection" /> to an <see cref = "T:System.Array" />, starting at a particular <see + cref = "T:System.Array" /> index. + </summary> + <param name = "array">The one-dimensional <see cref = "T:System.Array" /> that is the destination of the elements copied from <see + cref = "T:System.Collections.ICollection" />. The <see cref = "T:System.Array" /> must have zero-based indexing.</param> + <param name = "index">The zero-based index in <paramref name = "array" /> at which copying begins.</param> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "array" /> is null. </exception> + <exception cref = "T:System.ArgumentOutOfRangeException"> + <paramref name = "index" /> is less than zero. </exception> + <exception cref = "T:System.ArgumentException"> + <paramref name = "array" /> is multidimensional.-or- <paramref name = "index" /> is equal to or greater than the length of <paramref + name = "array" />.-or- The number of elements in the source <see cref = "T:System.Collections.ICollection" /> is greater than the available space from <paramref + name = "index" /> to the end of the destination <paramref name = "array" />. </exception> + <exception cref = "T:System.ArgumentException">The type of the source <see cref = "T:System.Collections.ICollection" /> cannot be cast automatically to the type of the destination <paramref + name = "array" />. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#IDictionary#GetEnumerator"> + <summary> + Returns an <see cref = "T:System.Collections.IDictionaryEnumerator" /> object for the <see + cref = "T:System.Collections.IDictionary" /> object. + </summary> + <returns> + An <see cref = "T:System.Collections.IDictionaryEnumerator" /> object for the <see + cref = "T:System.Collections.IDictionary" /> object. + </returns> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Read(System.Collections.IDictionary,System.Object)"> + <summary> + Reads values of properties from <paramref name = "valuesAsAnonymousObject" /> and inserts them into <paramref + name = "targetDictionary" /> using property names as keys. + </summary> + <param name = "targetDictionary"></param> + <param name = "valuesAsAnonymousObject"></param> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Count"> + <summary> + Gets the number of elements contained in the <see cref = "T:System.Collections.ICollection" />. + </summary> + <value></value> + <returns>The number of elements contained in the <see cref = "T:System.Collections.ICollection" />.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.IsSynchronized"> + <summary> + Gets a value indicating whether access to the <see cref = "T:System.Collections.ICollection" /> is synchronized (thread safe). + </summary> + <value></value> + <returns>true if access to the <see cref = "T:System.Collections.ICollection" /> is synchronized (thread safe); otherwise, false.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the <see cref = "T:System.Collections.ICollection" />. + </summary> + <value></value> + <returns>An object that can be used to synchronize access to the <see cref = "T:System.Collections.ICollection" />.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.IsReadOnly"> + <summary> + Gets a value indicating whether the <see cref = "T:System.Collections.IDictionary" /> object is read-only. + </summary> + <value></value> + <returns>true if the <see cref = "T:System.Collections.IDictionary" /> object is read-only; otherwise, false.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Item(System.Object)"> + <summary> + Gets or sets the <see cref="T:System.Object"/> with the specified key. + </summary> + <value></value> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Keys"> + <summary> + Gets an <see cref = "T:System.Collections.ICollection" /> object containing the keys of the <see + cref = "T:System.Collections.IDictionary" /> object. + </summary> + <value></value> + <returns>An <see cref = "T:System.Collections.ICollection" /> object containing the keys of the <see + cref = "T:System.Collections.IDictionary" /> object.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Values"> + <summary> + Gets an <see cref = "T:System.Collections.ICollection" /> object containing the values in the <see + cref = "T:System.Collections.IDictionary" /> object. + </summary> + <value></value> + <returns>An <see cref = "T:System.Collections.ICollection" /> object containing the values in the <see + cref = "T:System.Collections.IDictionary" /> object.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#IDictionary#IsFixedSize"> + <summary> + Gets a value indicating whether the <see cref = "T:System.Collections.IDictionary" /> object has a fixed size. + </summary> + <value></value> + <returns>true if the <see cref = "T:System.Collections.IDictionary" /> object has a fixed size; otherwise, false.</returns> + </member> + <member name="T:Castle.Core.Resource.IResource"> + <summary> + Represents a 'streamable' resource. Can + be a file, a resource in an assembly. + </summary> + </member> + <member name="M:Castle.Core.Resource.IResource.GetStreamReader"> + <summary> + Returns a reader for the stream + </summary> + <remarks> + It's up to the caller to dispose the reader. + </remarks> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResource.GetStreamReader(System.Text.Encoding)"> + <summary> + Returns a reader for the stream + </summary> + <remarks> + It's up to the caller to dispose the reader. + </remarks> + <param name="encoding"></param> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResource.CreateRelative(System.String)"> + <summary> + Returns an instance of <see cref="T:Castle.Core.Resource.IResource"/> + created according to the <c>relativePath</c> + using itself as the root. + </summary> + <param name="relativePath"></param> + <returns></returns> + </member> + <member name="P:Castle.Core.Resource.IResource.FileBasePath"> + <summary> + + </summary> + <remarks> + Only valid for resources that + can be obtained through relative paths + </remarks> + </member> + <member name="T:Castle.Core.Resource.AbstractStreamResource"> + <summary> + + </summary> + </member> + <member name="F:Castle.Core.Resource.AbstractStreamResource.createStream"> + <summary> + This returns a new stream instance each time it is called. + It is the responsibility of the caller to dispose of this stream + </summary> + </member> + <member name="T:Castle.Core.Resource.IResourceFactory"> + <summary> + Depicts the contract for resource factories. + </summary> + </member> + <member name="M:Castle.Core.Resource.IResourceFactory.Accept(Castle.Core.Resource.CustomUri)"> + <summary> + Used to check whether the resource factory + is able to deal with the given resource + identifier. + </summary> + <remarks> + Implementors should return <c>true</c> + only if the given identifier is supported + by the resource factory + </remarks> + <param name="uri"></param> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResourceFactory.Create(Castle.Core.Resource.CustomUri)"> + <summary> + Creates an <see cref="T:Castle.Core.Resource.IResource"/> instance + for the given resource identifier + </summary> + <param name="uri"></param> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResourceFactory.Create(Castle.Core.Resource.CustomUri,System.String)"> + <summary> + Creates an <see cref="T:Castle.Core.Resource.IResource"/> instance + for the given resource identifier + </summary> + <param name="uri"></param> + <param name="basePath"></param> + <returns></returns> + </member> + <member name="T:Castle.Core.Resource.FileResource"> + <summary> + + </summary> + </member> + <member name="T:Castle.Core.Resource.StaticContentResource"> + <summary> + Adapts a static string content as an <see cref="T:Castle.Core.Resource.IResource"/> + </summary> + </member> + <member name="T:Castle.Core.Resource.UncResource"> + <summary> + Enable access to files on network shares + </summary> + </member> + </members> +</doc> diff --git a/packages/Castle.Core.3.2.1/lib/sl5/Castle.Core.dll b/packages/Castle.Core.3.2.1/lib/sl5/Castle.Core.dll new file mode 100644 index 000000000..4611f6e32 Binary files /dev/null and b/packages/Castle.Core.3.2.1/lib/sl5/Castle.Core.dll differ diff --git a/packages/Castle.Core.3.2.1/lib/sl5/Castle.Core.xml b/packages/Castle.Core.3.2.1/lib/sl5/Castle.Core.xml new file mode 100644 index 000000000..766410f44 --- /dev/null +++ b/packages/Castle.Core.3.2.1/lib/sl5/Castle.Core.xml @@ -0,0 +1,4223 @@ +<?xml version="1.0"?> +<doc> + <assembly> + <name>Castle.Core</name> + </assembly> + <members> + <member name="T:Castle.Components.DictionaryAdapter.ReferenceAttribute"> + <summary> + Specifies assignment by reference rather than by copying. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IfExistsAttribute"> + <summary> + Suppresses any on-demand behaviors. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.RemoveIfEmptyAttribute"> + <summary> + Removes a property if null or empty string, guid or collection. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.RemoveIfAttribute"> + <summary> + Removes a property if matches value. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryBehaviorAttribute"> + <summary> + Assigns a specific dictionary key. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryBehavior"> + <summary> + Defines the contract for customizing dictionary access. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryBehavior.Copy"> + <summary> + Copies the dictionary behavior. + </summary> + <returns>null if should not be copied. Otherwise copy.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.IDictionaryBehavior.ExecutionOrder"> + <summary> + Determines relative order to apply related behaviors. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter"> + <summary> + Defines the contract for updating dictionary values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Sets the stored dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="value">The stored value.</param> + <param name="property">The property.</param> + <returns>true if the property should be stored.</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.ICondition"> + <summary> + Contract for value matching. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.VolatileAttribute"> + <summary> + Indicates that underlying values are changeable and should not be cached. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryInitializer"> + <summary> + Contract for dictionary initialization. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryInitializer.Initialize(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.Object[])"> + <summary> + Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="behaviors">The dictionary behaviors.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapterVisitor"> + <summary> + Abstract implementation of <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"/>. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"> + <summary> + Conract for traversing a <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryCreate"> + <summary> + Contract for creating additional Dictionary adapters. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"> + <summary> + Contract for manipulating the Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryEdit"> + <summary> + Contract for editing the Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryNotify"> + <summary> + Contract for managing Dictionary adapter notifications. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryValidate"> + <summary> + Contract for validating Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder"> + <summary> + Defines the contract for building <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryBehavior"/>s. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder.BuildBehaviors"> + <summary> + Builds the dictionary behaviors. + </summary> + <returns></returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter"> + <summary> + Abstract adapter for the <see cref="T:System.Collections.IDictionary"/> support + needed by the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory"/> + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Add(System.Object,System.Object)"> + <summary> + Adds an element with the provided key and value to the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <param name="key">The <see cref="T:System.Object"></see> to use as the key of the element to add.</param> + <param name="value">The <see cref="T:System.Object"></see> to use as the value of the element to add.</param> + <exception cref="T:System.ArgumentException">An element with the same key already exists in the <see cref="T:System.Collections.IDictionary"></see> object. </exception> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Clear"> + <summary> + Removes all elements from the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Contains(System.Object)"> + <summary> + Determines whether the <see cref="T:System.Collections.IDictionary"></see> object contains an element with the specified key. + </summary> + <param name="key">The key to locate in the <see cref="T:System.Collections.IDictionary"></see> object.</param> + <returns> + true if the <see cref="T:System.Collections.IDictionary"></see> contains an element with the key; otherwise, false. + </returns> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.GetEnumerator"> + <summary> + Returns an <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <returns> + An <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object. + </returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Remove(System.Object)"> + <summary> + Removes the element with the specified key from the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <param name="key">The key of the element to remove.</param> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.CopyTo(System.Array,System.Int32)"> + <summary> + Copies the elements of the <see cref="T:System.Collections.ICollection"></see> to an <see cref="T:System.Array"></see>, starting at a particular <see cref="T:System.Array"></see> index. + </summary> + <param name="array">The one-dimensional <see cref="T:System.Array"></see> that is the destination of the elements copied from <see cref="T:System.Collections.ICollection"></see>. The <see cref="T:System.Array"></see> must have zero-based indexing.</param> + <param name="index">The zero-based index in array at which copying begins.</param> + <exception cref="T:System.ArgumentNullException">array is null. </exception> + <exception cref="T:System.ArgumentException">The type of the source <see cref="T:System.Collections.ICollection"></see> cannot be cast automatically to the type of the destination array. </exception> + <exception cref="T:System.ArgumentOutOfRangeException">index is less than zero. </exception> + <exception cref="T:System.ArgumentException">array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source <see cref="T:System.Collections.ICollection"></see> is greater than the available space from index to the end of the destination array. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.System#Collections#IEnumerable#GetEnumerator"> + <summary> + Returns an enumerator that iterates through a collection. + </summary> + <returns> + An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection. + </returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsFixedSize"> + <summary> + Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size. + </summary> + <value></value> + <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size; otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsReadOnly"> + <summary> + Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object is read-only. + </summary> + <value></value> + <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object is read-only; otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Keys"> + <summary> + Gets an <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <value></value> + <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Values"> + <summary> + Gets an <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <value></value> + <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Item(System.Object)"> + <summary> + Gets or sets the <see cref="T:System.Object"/> with the specified key. + </summary> + <value></value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Count"> + <summary> + Gets the number of elements contained in the <see cref="T:System.Collections.ICollection"></see>. + </summary> + <value></value> + <returns>The number of elements contained in the <see cref="T:System.Collections.ICollection"></see>.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsSynchronized"> + <summary> + Gets a value indicating whether access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe). + </summary> + <value></value> + <returns>true if access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe); otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>. + </summary> + <value></value> + <returns>An object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>.</returns> + </member> + <member name="M:Castle.Core.Internal.CollectionExtensions.IsNullOrEmpty(System.Collections.IEnumerable)"> + <summary> + Checks whether or not collection is null or empty. Assumes colleciton can be safely enumerated multiple times. + </summary> + <param name = "this"></param> + <returns></returns> + </member> + <member name="F:Castle.Core.Internal.InternalsVisible.ToCastleCore"> + <summary> + Constant to use when making assembly internals visible to Castle.Core + <c>[assembly: InternalsVisibleTo(CoreInternalsVisible.ToCastleCore)]</c> + </summary> + </member> + <member name="F:Castle.Core.Internal.InternalsVisible.ToDynamicProxyGenAssembly2"> + <summary> + Constant to use when making assembly internals visible to proxy types generated by DynamicProxy. Required when proxying internal types. + <c>[assembly: InternalsVisibleTo(CoreInternalsVisible.ToDynamicProxyGenAssembly2)]</c> + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.ComponentAttribute"> + <summary> + Identifies a property should be represented as a nested component. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder"> + <summary> + Defines the contract for building typed dictionary keys. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Builds the specified key. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The current key.</param> + <param name="property">The property.</param> + <returns>The updated key</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter"> + <summary> + Defines the contract for retrieving dictionary values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the effective dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="property">The property.</param> + <param name="ifExists">true if return only existing.</param> + <returns>The effective property value.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.NoPrefix"> + <summary> + Applies no prefix. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.Prefix"> + <summary> + Gets or sets the prefix. + </summary> + <value>The prefix.</value> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterAttribute"> + <summary> + Identifies the dictionary adapter types. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.FetchAttribute"> + <summary> + Identifies an interface or property to be pre-fetched. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor"> + <summary> + Instructs fetching to occur. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor(System.Boolean)"> + <summary> + Instructs fetching according to <paramref name="fetch"/> + </summary> + <param name="fetch"></param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.FetchAttribute.Fetch"> + <summary> + Gets whether or not fetching should occur. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.GroupAttribute"> + <summary> + Assigns a property to a group. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object)"> + <summary> + Constructs a group assignment. + </summary> + <param name="group">The group name.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object[])"> + <summary> + Constructs a group assignment. + </summary> + <param name="group">The group name.</param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.GroupAttribute.Group"> + <summary> + Gets the group the property is assigned to. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeyAttribute"> + <summary> + Assigns a specific dictionary key. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class. + </summary> + <param name="key">The key.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String[])"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class. + </summary> + <param name="keys">The compound key.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"> + <summary> + Assigns a prefix to the keyed properties of an interface. + </summary> + <remarks> + Key prefixes are not inherited by sub-interfaces. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor"> + <summary> + Initializes a default instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class. + </summary> + <param name="keyPrefix">The prefix for the keyed properties of the interface.</param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.KeyPrefix"> + <summary> + Gets the prefix key added to the properties of the interface. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute"> + <summary> + Substitutes part of key with another string. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute.#ctor(System.String,System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute"/> class. + </summary> + <param name="oldValue">The old value.</param> + <param name="newValue">The new value.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.MultiLevelEditAttribute"> + <summary> + Requests support for multi-level editing. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.NewGuidAttribute"> + <summary> + Generates a new GUID on demand. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.OnDemandAttribute"> + <summary> + Support for on-demand value resolution. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.StringFormatAttribute"> + <summary> + Provides simple string formatting from existing properties. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Format"> + <summary> + Gets the string format. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Properties"> + <summary> + Gets the format properties. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.StringListAttribute"> + <summary> + Identifies a property should be represented as a delimited string value. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringListAttribute.Separator"> + <summary> + Gets the separator. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.StringValuesAttribute"> + <summary> + Converts all properties to strings. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.StringValuesAttribute.Format"> + <summary> + Gets or sets the format. + </summary> + <value>The format.</value> + </member> + <member name="T:Castle.Components.DictionaryAdapter.SuppressNotificationsAttribute"> + <summary> + Suppress property change notifications. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer"> + <summary> + Contract for property descriptor initialization. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer.Initialize(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Object[])"> + <summary> + Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="propertyDescriptor">The property descriptor.</param> + <param name="behaviors">The property behaviors.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.TypeKeyPrefixAttribute"> + <summary> + Assigns a prefix to the keyed properties using the interface name. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter"> + <summary> + Manages conversion between property values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.#ctor(System.ComponentModel.TypeConverter)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter"/> class. + </summary> + <param name="converter">The converter.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the effective dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="property">The property.</param> + <param name="ifExists">true if return only existing.</param> + <returns>The effective property value.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.ExecutionOrder"> + <summary> + + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory"> + <summary> + Uses Reflection.Emit to expose the properties of a dictionary + through a dynamic implementation of a typed interface. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory"> + <summary> + Defines the contract for building typed dictionary adapters. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <typeparam name="T">The typed interface.</typeparam> + <param name="dictionary">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="dictionary">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <param name="type">The typed interface.</param> + <param name="dictionary">The underlying source of properties.</param> + <param name="descriptor">The property descriptor.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <param name="descriptor">The property descriptor.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <param name="other">Another <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> from which to copy behaviors.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``2(System.Collections.Generic.IDictionary{System.String,``1})"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Type,System.Collections.Generic.IDictionary{System.String,``0})"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> + <inheritdoc /> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer"> + <summary> + Contract for dictionary meta-data initialization. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer.Initialize(Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)"> + <summary> + Initializes the given <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> object. + </summary> + <param name="factory">The dictionary adapter factory.</param> + <param name="dictionaryMeta">The dictionary adapter meta.</param> + + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer.ShouldHaveBehavior(System.Object)"> + <summary> + Determines whether the given behavior should be included in a new + <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> object. + </summary> + <param name="behavior">A dictionary behavior or annotation.</param> + <returns>True if the behavior should be included; otherwise, false.</returns> + <remarks> + <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer"/> behaviors are always included, + regardless of the result of this method. + </remarks> + + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryValidator"> + <summary> + Contract for dictionary validation. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.IsValid(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> + <summary> + Determines if <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> is valid. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <returns>true if valid.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Validate(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> + <summary> + Validates the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <returns>The error summary information.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Validate(Castle.Components.DictionaryAdapter.IDictionaryAdapter,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Validates the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> for a property. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="property">The property to validate.</param> + <returns>The property summary information.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Invalidate(Castle.Components.DictionaryAdapter.IDictionaryAdapter)"> + <summary> + Invalidates any results cached by the validator. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + </member> + <member name="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"> + <summary> + Describes a dictionary property. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor"> + <summary> + Initializes an empty <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(System.Reflection.PropertyInfo,System.Object[])"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + <param name="property">The property.</param> + <param name="annotations">The annotations.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(System.Object[])"> + <summary> + Initializes a new instance <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Copies an existinginstance of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + <param name="source"></param> + <param name="copyBehaviors"></param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets the key. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="descriptor">The descriptor.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the property value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="descriptor">The descriptor.</param> + <param name="ifExists">true if return only existing.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Sets the property value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="value">The value.</param> + <param name="descriptor">The descriptor.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehavior(Castle.Components.DictionaryAdapter.IDictionaryBehavior)"> + <summary> + Adds a single behavior. + </summary> + <param name="behavior">The behavior.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehaviors(Castle.Components.DictionaryAdapter.IDictionaryBehavior[])"> + <summary> + Adds the behaviors. + </summary> + <param name="behaviors">The behaviors.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehaviors(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryBehavior})"> + <summary> + Adds the behaviors. + </summary> + <param name="behaviors">The behaviors.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyBehaviors(Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Copies the behaviors to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="other"></param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.Copy"> + <summary> + Copies the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <returns></returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.ExecutionOrder"> + <summary> + + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyName"> + <summary> + Gets the property name. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyType"> + <summary> + Gets the property type. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Property"> + <summary> + Gets the property. + </summary> + <value>The property.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.IsDynamicProperty"> + <summary> + Returns true if the property is dynamic. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.State"> + <summary> + Gets additional state. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Fetch"> + <summary> + Determines if property should be fetched. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.IfExists"> + <summary> + Determines if property must exist first. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.SuppressNotifications"> + <summary> + Determines if notifications should occur. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Annotations"> + <summary> + Gets the property behaviors. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.TypeConverter"> + <summary> + Gets the type converter. + </summary> + <value>The type converter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.ExtendedProperties"> + <summary> + Gets the extended properties. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Behaviors"> + <summary> + Gets the setter. + </summary> + <value>The setter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.KeyBuilders"> + <summary> + Gets the key builders. + </summary> + <value>The key builders.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Setters"> + <summary> + Gets the setter. + </summary> + <value>The setter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Getters"> + <summary> + Gets the getter. + </summary> + <value>The getter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Initializers"> + <summary> + Gets the initializers. + </summary> + <value>The initializers.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.MetaInitializers"> + <summary> + Gets the meta-data initializers. + </summary> + <value>The meta-data initializers.</value> + </member> + <member name="T:Castle.Core.Internal.AttributesUtil"> + <summary> + Helper class for retrieving attributes. + </summary> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetAttribute``1(System.Reflection.ICustomAttributeProvider)"> + <summary> + Gets the attribute. + </summary> + <param name = "member">The member.</param> + <returns>The member attribute.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetAttributes``1(System.Reflection.ICustomAttributeProvider)"> + <summary> + Gets the attributes. Does not consider inherited attributes! + </summary> + <param name = "member">The member.</param> + <returns>The member attributes.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeAttribute``1(System.Type)"> + <summary> + Gets the type attribute. + </summary> + <param name = "type">The type.</param> + <returns>The type attribute.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeAttributes``1(System.Type)"> + <summary> + Gets the type attributes. + </summary> + <param name = "type">The type.</param> + <returns>The type attributes.</returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.GetTypeConverter(System.Reflection.MemberInfo)"> + <summary> + Gets the type converter. + </summary> + <param name = "member">The member.</param> + <returns></returns> + </member> + <member name="M:Castle.Core.Internal.AttributesUtil.HasAttribute``1(System.Reflection.ICustomAttributeProvider)"> + <summary> + Gets the attribute. + </summary> + <param name = "member">The member.</param> + <returns>The member attribute.</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDynamicValue`1"> + <summary> + Contract for typed dynamic value resolution. + </summary> + <typeparam name="T"></typeparam> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDynamicValue"> + <summary> + Contract for dynamic value resolution. + </summary> + </member> + <member name="T:Castle.Core.Logging.LoggerLevel"> + <summary> + Supporting Logger levels. + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Off"> + <summary> + Logging will be off + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Fatal"> + <summary> + Fatal logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Error"> + <summary> + Error logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Warn"> + <summary> + Warn logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Info"> + <summary> + Info logging level + </summary> + </member> + <member name="F:Castle.Core.Logging.LoggerLevel.Debug"> + <summary> + Debug logging level + </summary> + </member> + <member name="T:Castle.DynamicProxy.IInvocation"> + <summary> + Encapsulates an invocation of a proxied method. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.GetArgumentValue(System.Int32)"> + <summary> + Gets the value of the argument at the specified <paramref name = "index" />. + </summary> + <param name = "index">The index.</param> + <returns>The value of the argument at the specified <paramref name = "index" />.</returns> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.GetConcreteMethod"> + <summary> + Returns the concrete instantiation of the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> on the proxy, with any generic + parameters bound to real types. + </summary> + <returns> + The concrete instantiation of the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> on the proxy, or the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> if + not a generic method. + </returns> + <remarks> + Can be slower than calling <see cref="P:Castle.DynamicProxy.IInvocation.Method"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.GetConcreteMethodInvocationTarget"> + <summary> + Returns the concrete instantiation of <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>, with any + generic parameters bound to real types. + For interface proxies, this will point to the <see cref="T:System.Reflection.MethodInfo"/> on the target class. + </summary> + <returns>The concrete instantiation of <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>, or + <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/> if not a generic method.</returns> + <remarks> + In debug builds this can be slower than calling <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.Proceed"> + <summary> + Proceeds the call to the next interceptor in line, and ultimately to the target method. + </summary> + <remarks> + Since interface proxies without a target don't have the target implementation to proceed to, + it is important, that the last interceptor does not call this method, otherwise a + <see cref="T:System.NotImplementedException"/> will be thrown. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IInvocation.SetArgumentValue(System.Int32,System.Object)"> + <summary> + Overrides the value of an argument at the given <paramref name="index"/> with the + new <paramref name="value"/> provided. + </summary> + <remarks> + This method accepts an <see cref="T:System.Object"/>, however the value provided must be compatible + with the type of the argument defined on the method, otherwise an exception will be thrown. + </remarks> + <param name="index">The index of the argument to override.</param> + <param name="value">The new value for the argument.</param> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.Arguments"> + <summary> + Gets the arguments that the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> has been invoked with. + </summary> + <value>The arguments the method was invoked with.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.GenericArguments"> + <summary> + Gets the generic arguments of the method. + </summary> + <value>The generic arguments, or null if not a generic method.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.InvocationTarget"> + <summary> + Gets the object on which the invocation is performed. This is different from proxy object + because most of the time this will be the proxy target object. + </summary> + <seealso cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> + <value>The invocation target.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.Method"> + <summary> + Gets the <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked on the proxy. + </summary> + <value>The <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"> + <summary> + For interface proxies, this will point to the <see cref="T:System.Reflection.MethodInfo"/> on the target class. + </summary> + <value>The method invocation target.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.Proxy"> + <summary> + Gets the proxy object on which the intercepted method is invoked. + </summary> + <value>Proxy object on which the intercepted method is invoked.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.ReturnValue"> + <summary> + Gets or sets the return value of the method. + </summary> + <value>The return value of the method.</value> + </member> + <member name="P:Castle.DynamicProxy.IInvocation.TargetType"> + <summary> + Gets the type of the target object for the intercepted method. + </summary> + <value>The type of the target object.</value> + </member> + <member name="T:Castle.DynamicProxy.IProxyGenerationHook"> + <summary> + Used during the target type inspection process. Implementors have a chance to customize the + proxy generation process. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyGenerationHook.MethodsInspected"> + <summary> + Invoked by the generation process to notify that the whole process has completed. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyGenerationHook.NonProxyableMemberNotification(System.Type,System.Reflection.MemberInfo)"> + <summary> + Invoked by the generation process to notify that a member was not marked as virtual. + </summary> + <param name = "type">The type which declares the non-virtual member.</param> + <param name = "memberInfo">The non-virtual member.</param> + <remarks> + This method gives an opportunity to inspect any non-proxyable member of a type that has + been requested to be proxied, and if appropriate - throw an exception to notify the caller. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.IProxyGenerationHook.ShouldInterceptMethod(System.Type,System.Reflection.MethodInfo)"> + <summary> + Invoked by the generation process to determine if the specified method should be proxied. + </summary> + <param name = "type">The type which declares the given method.</param> + <param name = "methodInfo">The method to inspect.</param> + <returns>True if the given method should be proxied; false otherwise.</returns> + </member> + <member name="T:Castle.DynamicProxy.Contributors.ITypeContributor"> + <summary> + Interface describing elements composing generated type + </summary> + </member> + <member name="M:Castle.DynamicProxy.Contributors.MembersCollector.AcceptMethod(System.Reflection.MethodInfo,System.Boolean,Castle.DynamicProxy.IProxyGenerationHook)"> + <summary> + Performs some basic screening and invokes the <see cref="T:Castle.DynamicProxy.IProxyGenerationHook"/> + to select methods. + </summary> + <param name="method"></param> + <param name="onlyVirtuals"></param> + <param name="hook"></param> + <returns></returns> + </member> + <member name="T:Castle.DynamicProxy.IAttributeDisassembler"> + <summary> + Provides functionality for disassembling instances of attributes to CustomAttributeBuilder form, during the process of emiting new types by Dynamic Proxy. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IAttributeDisassembler.Disassemble(System.Attribute)"> + <summary> + Disassembles given attribute instance back to corresponding CustomAttributeBuilder. + </summary> + <param name="attribute">An instance of attribute to disassemble</param> + <returns><see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> corresponding 1 to 1 to given attribute instance, or null reference.</returns> + <remarks> + Implementers should return <see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> that corresponds to given attribute instance 1 to 1, + that is after calling specified constructor with specified arguments, and setting specified properties and fields with values specified + we should be able to get an attribute instance identical to the one passed in <paramref name="attribute"/>. Implementer can return null + if it wishes to opt out of replicating the attribute. Notice however, that for some cases, like attributes passed explicitly by the user + it is illegal to return null, and doing so will result in exception. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.HandleError(System.Type,System.Exception)"> + <summary> + Handles error during disassembly process + </summary> + <param name = "attributeType">Type of the attribute being disassembled</param> + <param name = "exception">Exception thrown during the process</param> + <returns>usually null, or (re)throws the exception</returns> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.InitializeConstructorArgs(System.Type,System.Attribute,System.Reflection.ParameterInfo[])"> + <summary> + Here we try to match a constructor argument to its value. + Since we can't get the values from the assembly, we use some heuristics to get it. + a/ we first try to match all the properties on the attributes by name (case insensitive) to the argument + b/ if we fail we try to match them by property type, with some smarts about convertions (i,e: can use Guid for string). + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ReplaceIfBetterMatch(System.Reflection.ParameterInfo,System.Reflection.PropertyInfo,System.Reflection.PropertyInfo)"> + <summary> + We have the following rules here. + Try to find a matching type, failing that, if the parameter is string, get the first property (under the assumption that + we can convert it. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ConvertValue(System.Object,System.Type)"> + <summary> + Attributes can only accept simple types, so we return null for null, + if the value is passed as string we call to string (should help with converting), + otherwise, we use the value as is (enums, integer, etc). + </summary> + </member> + <member name="M:Castle.DynamicProxy.Internal.TypeUtil.GetAllInterfaces(System.Type[])"> + <summary> + Returns list of all unique interfaces implemented given types, including their base interfaces. + </summary> + <param name="types"> </param> + <returns> </returns> + </member> + <member name="T:Castle.DynamicProxy.Generators.BaseProxyGenerator"> + <summary> + Base class that exposes the common functionalities + to proxy generation. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.AddMappingNoCheck(System.Type,Castle.DynamicProxy.Contributors.ITypeContributor,System.Collections.Generic.IDictionary{System.Type,Castle.DynamicProxy.Contributors.ITypeContributor})"> + <summary> + It is safe to add mapping (no mapping for the interface exists) + </summary> + <param name = "implementer"></param> + <param name = "interface"></param> + <param name = "mapping"></param> + </member> + <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.GenerateParameterlessConstructor(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Type,Castle.DynamicProxy.Generators.Emitters.SimpleAST.FieldReference)"> + <summary> + Generates a parameters constructor that initializes the proxy + state with <see cref="T:Castle.DynamicProxy.StandardInterceptor"/> just to make it non-null. + <para> + This constructor is important to allow proxies to be XML serializable + </para> + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.InvocationTypeGenerator.GetBaseCtorArguments(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Reflection.ConstructorInfo@)"> + <summary> + Generates the constructor for the class that extends + <see cref="T:Castle.DynamicProxy.AbstractInvocation"/> + </summary> + <param name="targetFieldType"></param> + <param name="proxyGenerationOptions"></param> + <param name="baseConstructor"></param> + </member> + <member name="T:Castle.DynamicProxy.DefaultProxyBuilder"> + <summary> + Default implementation of <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> interface producing in-memory proxy assemblies. + </summary> + </member> + <member name="T:Castle.DynamicProxy.IProxyBuilder"> + <summary> + Abstracts the implementation of proxy type construction. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type for given <paramref name="classToProxy"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided. + </summary> + <param name="classToProxy">The class type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified class and interfaces. + Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.) + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.ClassProxyGenerator"/> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type that proxies calls to <paramref name="interfaceToProxy"/> members on <paramref name="targetType"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided. + </summary> + <param name="interfaceToProxy">The interface type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="targetType">Type implementing <paramref name="interfaceToProxy"/> on which calls to the interface members should be intercepted.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified interface that 'proceeds' executions to the specified target. + Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.) + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator"/> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type for given <paramref name="interfaceToProxy"/> and <parmaref name="additionalInterfacesToProxy"/> that delegates all calls to the provided interceptors and allows interceptors to switch the actual target of invocation. + </summary> + <param name="interfaceToProxy">The interface type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified interface(s) that delegate all executions to the specified interceptors + and uses an instance of the interface as their targets (i.e. <see cref="P:Castle.DynamicProxy.IInvocation.InvocationTarget"/>), rather than a class. All <see cref="T:Castle.DynamicProxy.IInvocation"/> classes should then implement <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface, + to allow interceptors to switch invocation target with instance of another type implementing called interface. + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetInterfaceGenerator"/> + </member> + <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates a proxy type for given <paramref name="interfaceToProxy"/> that delegates all calls to the provided interceptors. + </summary> + <param name="interfaceToProxy">The interface type to proxy.</param> + <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param> + <param name="options">The proxy generation options.</param> + <returns>The generated proxy type.</returns> + <remarks> + Implementers should return a proxy type for the specified interface and additional interfaces that delegate all executions to the specified interceptors. + </remarks> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public. + Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> + pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception> + <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithoutTargetGenerator"/> + </member> + <member name="P:Castle.DynamicProxy.IProxyBuilder.Logger"> + <summary> + Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> logs to. + </summary> + </member> + <member name="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope"> + <summary> + Gets the <see cref="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope"/> associated with this builder. + </summary> + <value>The module scope associated with this builder.</value> + </member> + <member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class with new <see cref="P:Castle.DynamicProxy.DefaultProxyBuilder.ModuleScope"/>. + </summary> + </member> + <member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor(Castle.DynamicProxy.ModuleScope)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class. + </summary> + <param name="scope">The module scope for generated proxy types.</param> + </member> + <member name="M:Castle.DynamicProxy.Internal.AttributeUtil.AddDisassembler``1(Castle.DynamicProxy.IAttributeDisassembler)"> + <summary> + Registers custom disassembler to handle disassembly of specified type of attributes. + </summary> + <typeparam name="TAttribute">Type of attributes to handle</typeparam> + <param name="disassembler">Disassembler converting existing instances of Attributes to CustomAttributeBuilders</param> + <remarks> + When disassembling an attribute Dynamic Proxy will first check if an custom disassembler has been registered to handle attributes of that type, + and if none is found, it'll use the <see cref="P:Castle.DynamicProxy.Internal.AttributeUtil.FallbackDisassembler"/>. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Internal.AttributeUtil.ShouldSkipAttributeReplication(System.Type)"> + <summary> + Attributes should be replicated if they are non-inheritable, + but there are some special cases where the attributes means + something to the CLR, where they should be skipped. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Reflection.MemberInfo,System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class. + </summary> + <param name="target">Target element. This is either target type or target method for invocation types.</param> + <param name="type">The type of the proxy. This is base type for invocation types.</param> + <param name="interfaces">The interfaces.</param> + <param name="options">The options.</param> + </member> + <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class. + </summary> + <param name="target">Type of the target.</param> + <param name="interfaces">The interfaces.</param> + <param name="options">The options.</param> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.LdcOpCodesDictionary"> + <summary> + s + Provides appropriate Ldc.X opcode for the type of primitive value to be loaded. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.LdindOpCodesDictionary"> + <summary> + Provides appropriate Ldind.X opcode for + the type of primitive value to be loaded indirectly. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadIndirectOpCodeForType(System.Reflection.Emit.ILGenerator,System.Type)"> + <summary> + Emits a load indirect opcode of the appropriate type for a value or object reference. + Pops a pointer off the evaluation stack, dereferences it and loads + a value of the specified type. + </summary> + <param name = "gen"></param> + <param name = "type"></param> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadOpCodeForConstantValue(System.Reflection.Emit.ILGenerator,System.Object)"> + <summary> + Emits a load opcode of the appropriate kind for a constant string or + primitive value. + </summary> + <param name = "gen"></param> + <param name = "value"></param> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadOpCodeForDefaultValueOfType(System.Reflection.Emit.ILGenerator,System.Type)"> + <summary> + Emits a load opcode of the appropriate kind for the constant default value of a + type, such as 0 for value types and null for reference types. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitStoreIndirectOpCodeForType(System.Reflection.Emit.ILGenerator,System.Type)"> + <summary> + Emits a store indirectopcode of the appropriate type for a value or object reference. + Pops a value of the specified type and a pointer off the evaluation stack, and + stores the value. + </summary> + <param name = "gen"></param> + <param name = "type"></param> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.PropertiesCollection"> + <summary> + Summary description for PropertiesCollection. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.IndirectReference"> + <summary> + Wraps a reference that is passed + ByRef and provides indirect load/store support. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.NewArrayExpression"> + <summary> + Summary description for NewArrayExpression. + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.ReferencesToObjectArrayExpression"> + <summary> + </summary> + </member> + <member name="T:Castle.DynamicProxy.Generators.Emitters.StindOpCodesDictionary"> + <summary> + Provides appropriate Stind.X opcode + for the type of primitive value to be stored indirectly. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.MetaEvent.#ctor(System.String,System.Type,System.Type,Castle.DynamicProxy.Generators.MetaMethod,Castle.DynamicProxy.Generators.MetaMethod,System.Reflection.EventAttributes)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.MetaEvent"/> class. + </summary> + <param name="name">The name.</param> + <param name="declaringType">Type declaring the original event being overriten, or null.</param> + <param name="eventDelegateType"></param> + <param name="adder">The add method.</param> + <param name="remover">The remove method.</param> + <param name="attributes">The attributes.</param> + </member> + <member name="T:Castle.DynamicProxy.Generators.INamingScope"> + <summary> + Represents the scope of uniquenes of names for types and their members + </summary> + </member> + <member name="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)"> + <summary> + Gets a unique name based on <paramref name="suggestedName"/> + </summary> + <param name="suggestedName">Name suggested by the caller</param> + <returns>Unique name based on <paramref name="suggestedName"/>.</returns> + <remarks> + Implementers should provide name as closely resembling <paramref name="suggestedName"/> as possible. + Generally if no collision occurs it is suggested to return suggested name, otherwise append sequential suffix. + Implementers must return deterministic names, that is when <see cref="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)"/> is called twice + with the same suggested name, the same returned name should be provided each time. Non-deterministic return + values, like appending random suffices will break serialization of proxies. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.Generators.INamingScope.SafeSubScope"> + <summary> + Returns new, disposable naming scope. It is responsibilty of the caller to make sure that no naming collision + with enclosing scope, or other subscopes is possible. + </summary> + <returns>New naming scope.</returns> + </member> + <member name="T:Castle.DynamicProxy.Generators.MethodFinder"> + <summary> + Returns the methods implemented by a type. Use this instead of Type.GetMethods() to work around a CLR issue + where duplicate MethodInfos are returned by Type.GetMethods() after a token of a generic type's method was loaded. + </summary> + </member> + <member name="M:Castle.DynamicProxy.Internal.InternalsUtil.IsInternal(System.Reflection.MethodBase)"> + <summary> + Determines whether the specified method is internal. + </summary> + <param name = "method">The method.</param> + <returns> + <c>true</c> if the specified method is internal; otherwise, <c>false</c>. + </returns> + </member> + <member name="M:Castle.DynamicProxy.Internal.InternalsUtil.IsInternalToDynamicProxy(System.Reflection.Assembly)"> + <summary> + Determines whether this assembly has internals visible to dynamic proxy. + </summary> + <param name = "asm">The assembly to inspect.</param> + </member> + <member name="M:Castle.DynamicProxy.Internal.InternalsUtil.IsAccessible(System.Reflection.MethodBase)"> + <summary> + Checks if the method is public or protected. + </summary> + <param name = "method"></param> + <returns></returns> + </member> + <member name="M:Castle.DynamicProxy.MixinData.#ctor(System.Collections.Generic.IEnumerable{System.Object})"> + <summary> + Because we need to cache the types based on the mixed in mixins, we do the following here: + - Get all the mixin interfaces + - Sort them by full name + - Return them by position + + The idea is to have reproducible behavior for the case that mixins are registered in different orders. + This method is here because it is required + </summary> + </member> + <member name="T:Castle.DynamicProxy.ModuleScope"> + <summary> + Summary description for ModuleScope. + </summary> + </member> + <member name="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"> + <summary> + The default file name used when the assembly is saved using <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/>. + </summary> + </member> + <member name="F:Castle.DynamicProxy.ModuleScope.DEFAULT_ASSEMBLY_NAME"> + <summary> + The default assembly (simple) name used for the assemblies generated by a <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class; assemblies created by this instance will not be saved. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean,System.String,System.String,System.String,System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved and what simple names are to be assigned to them. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> + <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean,Castle.DynamicProxy.Generators.INamingScope,System.String,System.String,System.String,System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance + should be saved and what simple names are to be assigned to them. + </summary> + <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param> + <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param> + <param name="namingScope">Naming scope used to provide unique names to generated types and their members (usually via sub-scopes).</param> + <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + <param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.GetFromCache(Castle.DynamicProxy.Generators.CacheKey)"> + <summary> + Returns a type from this scope's type cache, or null if the key cannot be found. + </summary> + <param name = "key">The key to be looked up in the cache.</param> + <returns>The type from this scope's type cache matching the key, or null if the key cannot be found</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.RegisterInCache(Castle.DynamicProxy.Generators.CacheKey,System.Type)"> + <summary> + Registers a type in this scope's type cache. + </summary> + <param name = "key">The key to be associated with the type.</param> + <param name = "type">The type to be stored in the cache.</param> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.GetKeyPair"> + <summary> + Gets the key pair used to sign the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>. + </summary> + <returns></returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModule(System.Boolean)"> + <summary> + Gets the specified module generated by this scope, creating a new one if none has yet been generated. + </summary> + <param name = "isStrongNamed">If set to true, a strong-named module is returned; otherwise, a weak-named module is returned.</param> + <returns>A strong-named or weak-named module generated by this scope, as specified by the <paramref + name = "isStrongNamed" /> parameter.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithStrongName"> + <summary> + Gets the strong-named module generated by this scope, creating a new one if none has yet been generated. + </summary> + <returns>A strong-named module generated by this scope.</returns> + </member> + <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithWeakName"> + <summary> + Gets the weak-named module generated by this scope, creating a new one if none has yet been generated. + </summary> + <returns>A weak-named module generated by this scope.</returns> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.Lock"> + <summary> + Users of this <see cref="T:Castle.DynamicProxy.ModuleScope"/> should use this lock when accessing the cache. + </summary> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModule"> + <summary> + Gets the strong-named module generated by this scope, or <see langword = "null" /> if none has yet been generated. + </summary> + <value>The strong-named module generated by this scope, or <see langword = "null" /> if none has yet been generated.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModuleName"> + <summary> + Gets the file name of the strongly named module generated by this scope. + </summary> + <value>The file name of the strongly named module generated by this scope.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModule"> + <summary> + Gets the weak-named module generated by this scope, or <see langword = "null" /> if none has yet been generated. + </summary> + <value>The weak-named module generated by this scope, or <see langword = "null" /> if none has yet been generated.</value> + </member> + <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModuleName"> + <summary> + Gets the file name of the weakly named module generated by this scope. + </summary> + <value>The file name of the weakly named module generated by this scope.</value> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerationOptions.#ctor(Castle.DynamicProxy.IProxyGenerationHook)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/> class. + </summary> + <param name="hook">The hook.</param> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerationOptions.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/> class. + </summary> + </member> + <member name="T:Castle.DynamicProxy.ProxyGenerator"> + <summary> + Provides proxy objects for classes and interfaces. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor(Castle.DynamicProxy.IProxyBuilder)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. + </summary> + <param name="builder">Proxy types builder.</param> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. + </summary> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor(System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class. + </summary> + <param name="disableSignedModule">If <c>true</c> forces all types to be generated into an unsigned module.</param> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns>Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object.</returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/>is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/>is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target + use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>. + Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>. + </summary> + <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception> + <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor)"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptor"/>. + </summary> + <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> + <param name="interceptor">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.IInterceptor)"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptor"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="interceptor">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> type on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>. + </summary> + <param name="interfaceToProxy">Type of the interface which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on generated target object. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception> + <remarks> + Since this method uses an empty-shell implementation of <paramref name="additionalInterfacesToProxy"/> to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations. + They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with. + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget``1(``0,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no parameterless constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="target">The target object, calls to which will be intercepted.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy``1(Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <typeparam name="TClass">Type of class which will be proxied.</typeparam> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type. + </returns> + <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no parameterless constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])"> + <summary> + Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>. + </summary> + <param name="classToProxy">Type of class which will be proxied.</param> + <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param> + <param name="options">The proxy generation options used to influence generated proxy type and object.</param> + <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param> + <param name="interceptors">The interceptors called during the invocation of proxied methods.</param> + <returns> + New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types. + </returns> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception> + <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception> + <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception> + <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception> + <remarks> + This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type. + As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw. + </remarks> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for class proxy with given <paramref name="classToProxy"/> class, implementing given <paramref name="additionalInterfacesToProxy"/> and using provided <paramref name="options"/>. + </summary> + <param name="classToProxy">The base class for proxy type.</param> + <param name="additionalInterfacesToProxy">The interfaces that proxy type should implement.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for interface proxy with target for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> on given <paramref name="targetType"/> and using provided <paramref name="options"/>. + </summary> + <param name="interfaceToProxy">The interface proxy type should implement.</param> + <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> + <param name="targetType">Actual type that the proxy type will encompass.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for interface proxy with target interface for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> on given <paramref name="interfaceToProxy"/> and using provided <paramref name="options"/>. + </summary> + <param name="interfaceToProxy">The interface proxy type should implement.</param> + <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"> + <summary> + Creates the proxy type for interface proxy without target for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> and using provided <paramref name="options"/>. + </summary> + <param name="interfaceToProxy">The interface proxy type should implement.</param> + <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param> + <param name="options">The options for proxy generation process.</param> + <returns><see cref="T:System.Type"/> of proxy.</returns> + </member> + <member name="P:Castle.DynamicProxy.ProxyGenerator.Logger"> + <summary> + Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> log to. + </summary> + </member> + <member name="P:Castle.DynamicProxy.ProxyGenerator.ProxyBuilder"> + <summary> + Gets the proxy builder instance used to generate proxy types. + </summary> + <value>The proxy builder.</value> + </member> + <member name="M:Castle.DynamicProxy.SilverlightExtensions.Extensions.IsNested(System.Type)"> + <summary> + The silverlight System.Type is missing the IsNested property so this exposes similar functionality. + </summary> + <param name="type"></param> + <returns></returns> + </member> + <member name="T:Castle.DynamicProxy.Tokens.InvocationMethods"> + <summary> + Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:Castle.DynamicProxy.AbstractInvocation"/> class. + </summary> + </member> + <member name="T:Castle.DynamicProxy.IInterceptorSelector"> + <summary> + Provides an extension point that allows proxies to choose specific interceptors on + a per method basis. + </summary> + </member> + <member name="M:Castle.DynamicProxy.IInterceptorSelector.SelectInterceptors(System.Type,System.Reflection.MethodInfo,Castle.DynamicProxy.IInterceptor[])"> + <summary> + Selects the interceptors that should intercept calls to the given <paramref name="method"/>. + </summary> + <param name="type">The type declaring the method to intercept.</param> + <param name="method">The method that will be intercepted.</param> + <param name="interceptors">All interceptors registered with the proxy.</param> + <returns>An array of interceptors to invoke upon calling the <paramref name="method"/>.</returns> + <remarks> + This method is called only once per proxy instance, upon the first call to the + <paramref name="method"/>. Either an empty array or null are valid return values to indicate + that no interceptor should intercept calls to the method. Although it is not advised, it is + legal to return other <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations than these provided in + <paramref name="interceptors"/>. + </remarks> + </member> + <member name="M:Castle.Core.Internal.Lock.Create"> + <summary> + Creates a new lock. + </summary> + <returns></returns> + </member> + <member name="T:Castle.Core.IServiceProviderExAccessor"> + <summary> + This interface should be implemented by classes + that are available in a bigger context, exposing + the container to different areas in the same application. + <para> + For example, in Web application, the (global) HttpApplication + subclasses should implement this interface to expose + the configured container + </para> + </summary> + </member> + <member name="T:Castle.DynamicProxy.IChangeProxyTarget"> + <summary> + Exposes means to change target objects of proxies and invocations + </summary> + </member> + <member name="M:Castle.DynamicProxy.IChangeProxyTarget.ChangeInvocationTarget(System.Object)"> + <summary> + Changes the target object (<see cref="P:Castle.DynamicProxy.IInvocation.InvocationTarget"/>) of current <see cref="T:Castle.DynamicProxy.IInvocation"/>. + </summary> + <param name="target">The new value of target of invocation.</param> + <remarks> + Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to <see cref="P:Castle.DynamicProxy.IInvocation.TargetType"/>, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown. + Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws. + Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws. + </remarks> + <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception> + </member> + <member name="M:Castle.DynamicProxy.IChangeProxyTarget.ChangeProxyTarget(System.Object)"> + <summary> + Permanently changes the target object of the proxy. This does not affect target of the current invocation. + </summary> + <param name="target">The new value of target of the proxy.</param> + <remarks> + Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to proxy's target type, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown. + Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws. + Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow. + In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws. + </remarks> + <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception> + </member> + <member name="T:Castle.DynamicProxy.IInterceptor"> + <summary> + New interface that is going to be used by DynamicProxy 2 + </summary> + </member> + <member name="M:Castle.DynamicProxy.IProxyTargetAccessor.DynProxyGetTarget"> + <summary> + Get the proxy target (note that null is a valid target!) + </summary> + <returns></returns> + </member> + <member name="M:Castle.DynamicProxy.IProxyTargetAccessor.GetInterceptors"> + <summary> + Gets the interceptors for the proxy + </summary> + <returns></returns> + </member> + <member name="T:Castle.Core.IServiceEnabledComponent"> + <summary> + Defines that the implementation wants a + <see cref="T:System.IServiceProvider"/> in order to + access other components. The creator must be aware + that the component might (or might not) implement + the interface. + </summary> + <remarks> + Used by Castle Project components to, for example, + gather logging factories + </remarks> + </member> + <member name="T:Castle.Core.IServiceProviderEx"> + <summary> + Increments <c>IServiceProvider</c> with a generic service resolution operation. + </summary> + </member> + <member name="T:Castle.Core.Logging.IExtendedLoggerFactory"> + <summary> + Provides a factory that can produce either <see cref="T:Castle.Core.Logging.ILogger"/> or + <see cref="T:Castle.Core.Logging.IExtendedLogger"/> classes. + </summary> + </member> + <member name="T:Castle.Core.Logging.ILoggerFactory"> + <summary> + Manages the instantiation of <see cref="T:Castle.Core.Logging.ILogger"/>s. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.Type)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.String)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.Type)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.String)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.Type)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.String)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new extended logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.Type)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.String)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.Type,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger, getting the logger name from the specified type. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new logger. + </summary> + </member> + <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.GetConfigFile(System.String)"> + <summary> + Gets the configuration file. + </summary> + <param name = "fileName">i.e. log4net.config</param> + <returns></returns> + </member> + <member name="T:Castle.Core.Logging.IContextProperties"> + <summary> + Interface for Context Properties implementations + </summary> + <remarks> + <para> + This interface defines a basic property get set accessor. + </para> + <para> + Based on the ContextPropertiesBase of log4net, by Nicko Cadell. + </para> + </remarks> + </member> + <member name="P:Castle.Core.Logging.IContextProperties.Item(System.String)"> + <summary> + Gets or sets the value of a property + </summary> + <value> + The value for the property with the specified key + </value> + <remarks> + <para> + Gets or sets the value of a property + </para> + </remarks> + </member> + <member name="M:Castle.Core.Logging.AbstractLoggerFactory.GetConfigFile(System.String)"> + <summary> + Gets the configuration file. + </summary> + <param name = "fileName">i.e. log4net.config</param> + <returns></returns> + </member> + <member name="T:Castle.Core.Logging.NullLogFactory"> + <summary> + NullLogFactory used when logging is turned off. + </summary> + </member> + <member name="M:Castle.Core.Logging.NullLogFactory.Create(System.String)"> + <summary> + Creates an instance of ILogger with the specified name. + </summary> + <param name = "name">Name.</param> + <returns></returns> + </member> + <member name="M:Castle.Core.Logging.NullLogFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates an instance of ILogger with the specified name and LoggerLevel. + </summary> + <param name = "name">Name.</param> + <param name = "level">Level.</param> + <returns></returns> + </member> + <member name="T:Castle.Core.Logging.IExtendedLogger"> + <summary> + Provides an interface that supports <see cref="T:Castle.Core.Logging.ILogger"/> and + allows the storage and retrieval of Contexts. These are supported in + both log4net and NLog. + </summary> + </member> + <member name="T:Castle.Core.Logging.ILogger"> + <summary> + Manages logging. + </summary> + <remarks> + This is a facade for the different logging subsystems. + It offers a simplified interface that follows IOC patterns + and a simplified priority/level/severity abstraction. + </remarks> + </member> + <member name="M:Castle.Core.Logging.ILogger.CreateChildLogger(System.String)"> + <summary> + Create a new child logger. + The name of the child logger is [current-loggers-name].[passed-in-name] + </summary> + <param name="loggerName">The Subname of this logger.</param> + <returns>The New ILogger instance.</returns> + <exception cref="T:System.ArgumentException">If the name has an empty element name.</exception> + </member> + <member name="M:Castle.Core.Logging.ILogger.Debug(System.String)"> + <summary> + Logs a debug message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Debug(System.Func{System.String})"> + <summary> + Logs a debug message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsDebugEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Debug(System.String,System.Exception)"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Error(System.String)"> + <summary> + Logs an error message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Error(System.Func{System.String})"> + <summary> + Logs an error message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsErrorEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Error(System.String,System.Exception)"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String)"> + <summary> + Logs a fatal message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Fatal(System.Func{System.String})"> + <summary> + Logs a fatal message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsFatalEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String,System.Exception)"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Info(System.String)"> + <summary> + Logs an info message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Info(System.Func{System.String})"> + <summary> + Logs a info message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsInfoEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Info(System.String,System.Exception)"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Warn(System.String)"> + <summary> + Logs a warn message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Warn(System.Func{System.String})"> + <summary> + Logs a warn message with lazily constructed message. The message will be constructed only if the <see cref="P:Castle.Core.Logging.ILogger.IsWarnEnabled"/> is true. + </summary> + <param name="messageFactory"></param> + </member> + <member name="M:Castle.Core.Logging.ILogger.Warn(System.String,System.Exception)"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsDebugEnabled"> + <summary> + Determines if messages of priority "debug" will be logged. + </summary> + <value>True if "debug" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsErrorEnabled"> + <summary> + Determines if messages of priority "error" will be logged. + </summary> + <value>True if "error" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsFatalEnabled"> + <summary> + Determines if messages of priority "fatal" will be logged. + </summary> + <value>True if "fatal" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsInfoEnabled"> + <summary> + Determines if messages of priority "info" will be logged. + </summary> + <value>True if "info" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.ILogger.IsWarnEnabled"> + <summary> + Determines if messages of priority "warn" will be logged. + </summary> + <value>True if "warn" messages will be logged.</value> + </member> + <member name="P:Castle.Core.Logging.IExtendedLogger.GlobalProperties"> + <summary> + Exposes the Global Context of the extended logger. + </summary> + </member> + <member name="P:Castle.Core.Logging.IExtendedLogger.ThreadProperties"> + <summary> + Exposes the Thread Context of the extended logger. + </summary> + </member> + <member name="P:Castle.Core.Logging.IExtendedLogger.ThreadStacks"> + <summary> + Exposes the Thread Stack of the extended logger. + </summary> + </member> + <member name="T:Castle.Core.Logging.ConsoleLogger"> + <summary> + The Logger sending everything to the standard output streams. + This is mainly for the cases when you have a utility that + does not have a logger to supply. + </summary> + </member> + <member name="T:Castle.Core.Logging.LevelFilteredLogger"> + <summary> + The Level Filtered Logger class. This is a base clase which + provides a LogLevel attribute and reroutes all functions into + one Log method. + </summary> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.#ctor"> + <summary> + Creates a new <c>LevelFilteredLogger</c>. + </summary> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String)"> + <summary> + Logs a debug message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String,System.Exception)"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a debug message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String)"> + <summary> + Logs an info message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String,System.Exception)"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an info message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String)"> + <summary> + Logs a warn message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String,System.Exception)"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a warn message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String)"> + <summary> + Logs an error message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String,System.Exception)"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs an error message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String)"> + <summary> + Logs a fatal message. + </summary> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String,System.Exception)"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "message">The message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.Exception,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a fatal message. + </summary> + <param name = "exception">The exception to log</param> + <param name = "formatProvider">The format provider to use</param> + <param name = "format">Format string for the message to log</param> + <param name = "args">Format arguments for the message to log</param> + </member> + <member name="M:Castle.Core.Logging.LevelFilteredLogger.Log(Castle.Core.Logging.LoggerLevel,System.String,System.String,System.Exception)"> + <summary> + Implementors output the log content by implementing this method only. + Note that exception can be null + </summary> + <param name = "loggerLevel"></param> + <param name = "loggerName"></param> + <param name = "message"></param> + <param name = "exception"></param> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.Level"> + <value> + The <c>LoggerLevel</c> that this logger + will be using. Defaults to <c>LoggerLevel.Off</c> + </value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.Name"> + <value> + The name that this logger will be using. + Defaults to <c>String.Empty</c> + </value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsDebugEnabled"> + <summary> + Determines if messages of priority "debug" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Debug"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsInfoEnabled"> + <summary> + Determines if messages of priority "info" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Info"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsWarnEnabled"> + <summary> + Determines if messages of priority "warn" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Warn"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsErrorEnabled"> + <summary> + Determines if messages of priority "error" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Error"/> bit</value> + </member> + <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsFatalEnabled"> + <summary> + Determines if messages of priority "fatal" will be logged. + </summary> + <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Fatal"/> bit</value> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor"> + <summary> + Creates a new ConsoleLogger with the <c>Level</c> + set to <c>LoggerLevel.Debug</c> and the <c>Name</c> + set to <c>String.Empty</c>. + </summary> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new ConsoleLogger with the <c>Name</c> + set to <c>String.Empty</c>. + </summary> + <param name = "logLevel">The logs Level.</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(System.String)"> + <summary> + Creates a new ConsoleLogger with the <c>Level</c> + set to <c>LoggerLevel.Debug</c>. + </summary> + <param name = "name">The logs Name.</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(System.String,Castle.Core.Logging.LoggerLevel)"> + <summary> + Creates a new ConsoleLogger. + </summary> + <param name = "name">The logs Name.</param> + <param name = "logLevel">The logs Level.</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.Log(Castle.Core.Logging.LoggerLevel,System.String,System.String,System.Exception)"> + <summary> + A Common method to log. + </summary> + <param name = "loggerLevel">The level of logging</param> + <param name = "loggerName">The name of the logger</param> + <param name = "message">The Message</param> + <param name = "exception">The Exception</param> + </member> + <member name="M:Castle.Core.Logging.ConsoleLogger.CreateChildLogger(System.String)"> + <summary> + Returns a new <c>ConsoleLogger</c> with the name + added after this loggers name, with a dot in between. + </summary> + <param name = "loggerName">The added hierarchical name.</param> + <returns>A new <c>ConsoleLogger</c>.</returns> + </member> + <member name="T:Castle.Core.Logging.NullLogger"> + <summary> + The Null Logger class. This is useful for implementations where you need + to provide a logger to a utility class, but do not want any output from it. + It also helps when you have a utility that does not have a logger to supply. + </summary> + </member> + <member name="M:Castle.Core.Logging.NullLogger.CreateChildLogger(System.String)"> + <summary> + Returns this <c>NullLogger</c>. + </summary> + <param name = "loggerName">Ignored</param> + <returns>This ILogger instance.</returns> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Error(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Error(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Info(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Info(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String)"> + <summary> + No-op. + </summary> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String,System.Exception)"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "message">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.Exception,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])"> + <summary> + No-op. + </summary> + <param name = "exception">Ignored</param> + <param name = "formatProvider">Ignored</param> + <param name = "format">Ignored</param> + <param name = "args">Ignored</param> + </member> + <member name="P:Castle.Core.Logging.NullLogger.GlobalProperties"> + <summary> + Returns empty context properties. + </summary> + </member> + <member name="P:Castle.Core.Logging.NullLogger.ThreadProperties"> + <summary> + Returns empty context properties. + </summary> + </member> + <member name="P:Castle.Core.Logging.NullLogger.ThreadStacks"> + <summary> + Returns empty context stacks. + </summary> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsDebugEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsErrorEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsFatalEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsInfoEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="P:Castle.Core.Logging.NullLogger.IsWarnEnabled"> + <summary> + No-op. + </summary> + <value>false</value> + </member> + <member name="T:Castle.Core.Logging.StreamLogger"> + <summary> + The Stream Logger class. This class can stream log information + to any stream, it is suitable for storing a log file to disk, + or to a <c>MemoryStream</c> for testing your components. + </summary> + <remarks> + This logger is not thread safe. + </remarks> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream)"> + <summary> + Creates a new <c>StreamLogger</c> with default encoding + and buffer size. Initial Level is set to Debug. + </summary> + <param name = "name"> + The name of the log. + </param> + <param name = "stream"> + The stream that will be used for logging, + seeking while the logger is alive + </param> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream,System.Text.Encoding)"> + <summary> + Creates a new <c>StreamLogger</c> with default buffer size. + Initial Level is set to Debug. + </summary> + <param name="name"> + The name of the log. + </param> + <param name="stream"> + The stream that will be used for logging, + seeking while the logger is alive + </param> + <param name="encoding"> + The encoding that will be used for this stream. + <see cref="T:System.IO.StreamWriter"/> + </param> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream,System.Text.Encoding,System.Int32)"> + <summary> + Creates a new <c>StreamLogger</c>. + Initial Level is set to Debug. + </summary> + <param name="name"> + The name of the log. + </param> + <param name="stream"> + The stream that will be used for logging, + seeking while the logger is alive + </param> + <param name="encoding"> + The encoding that will be used for this stream. + <see cref="T:System.IO.StreamWriter"/> + </param> + <param name="bufferSize"> + The buffer size that will be used for this stream. + <see cref="T:System.IO.StreamWriter"/> + </param> + </member> + <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.StreamWriter)"> + <summary> + Creates a new <c>StreamLogger</c> with + Debug as default Level. + </summary> + <param name = "name">The name of the log.</param> + <param name = "writer">The <c>StreamWriter</c> the log will write to.</param> + </member> + <member name="T:Castle.Core.Configuration.AbstractConfiguration"> + <summary> + This is an abstract <see cref="T:Castle.Core.Configuration.IConfiguration"/> implementation + that deals with methods that can be abstracted away + from underlying implementations. + </summary> + <remarks> + <para><b>AbstractConfiguration</b> makes easier to implementers + to create a new version of <see cref="T:Castle.Core.Configuration.IConfiguration"/></para> + </remarks> + </member> + <member name="T:Castle.Core.Configuration.IConfiguration"> + <summary> + <see cref="T:Castle.Core.Configuration.IConfiguration"/> is a interface encapsulating a configuration node + used to retrieve configuration values. + </summary> + </member> + <member name="M:Castle.Core.Configuration.IConfiguration.GetValue(System.Type,System.Object)"> + <summary> + Gets the value of the node and converts it + into specified <see cref="T:System.Type"/>. + </summary> + <param name="type">The <see cref="T:System.Type"/></param> + <param name="defaultValue"> + The Default value returned if the conversion fails. + </param> + <returns>The Value converted into the specified type.</returns> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Name"> + <summary> + Gets the name of the node. + </summary> + <value> + The Name of the node. + </value> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Value"> + <summary> + Gets the value of the node. + </summary> + <value> + The Value of the node. + </value> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Children"> + <summary> + Gets an <see cref="T:Castle.Core.Configuration.ConfigurationCollection"/> of <see cref="T:Castle.Core.Configuration.IConfiguration"/> + elements containing all node children. + </summary> + <value>The Collection of child nodes.</value> + </member> + <member name="P:Castle.Core.Configuration.IConfiguration.Attributes"> + <summary> + Gets an <see cref="T:System.Collections.IDictionary"/> of the configuration attributes. + </summary> + </member> + <member name="M:Castle.Core.Configuration.AbstractConfiguration.GetValue(System.Type,System.Object)"> + <summary> + Gets the value of the node and converts it + into specified <see cref="T:System.Type"/>. + </summary> + <param name="type">The <see cref="T:System.Type"/></param> + <param name="defaultValue"> + The Default value returned if the conversion fails. + </param> + <returns>The Value converted into the specified type.</returns> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Attributes"> + <summary> + Gets node attributes. + </summary> + <value> + All attributes of the node. + </value> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Children"> + <summary> + Gets all child nodes. + </summary> + <value>The <see cref="T:Castle.Core.Configuration.ConfigurationCollection"/> of child nodes.</value> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Name"> + <summary> + Gets the name of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </summary> + <value> + The Name of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </value> + </member> + <member name="P:Castle.Core.Configuration.AbstractConfiguration.Value"> + <summary> + Gets the value of <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </summary> + <value> + The Value of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </value> + </member> + <member name="T:Castle.Core.Configuration.ConfigurationCollection"> + <summary> + A collection of <see cref="T:Castle.Core.Configuration.IConfiguration"/> objects. + </summary> + </member> + <member name="M:Castle.Core.Configuration.ConfigurationCollection.#ctor"> + <summary> + Creates a new instance of <c>ConfigurationCollection</c>. + </summary> + </member> + <member name="M:Castle.Core.Configuration.ConfigurationCollection.#ctor(System.Collections.Generic.IEnumerable{Castle.Core.Configuration.IConfiguration})"> + <summary> + Creates a new instance of <c>ConfigurationCollection</c>. + </summary> + </member> + <member name="T:Castle.Core.Configuration.MutableConfiguration"> + <summary> + Summary description for MutableConfiguration. + </summary> + </member> + <member name="M:Castle.Core.Configuration.MutableConfiguration.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Core.Configuration.MutableConfiguration"/> class. + </summary> + <param name="name">The name.</param> + </member> + <member name="P:Castle.Core.Configuration.MutableConfiguration.Value"> + <summary> + Gets the value of <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </summary> + <value> + The Value of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>. + </value> + </member> + <member name="T:Castle.Core.Pair`2"> + <summary> + General purpose class to represent a standard pair of values. + </summary> + <typeparam name="TFirst">Type of the first value</typeparam> + <typeparam name="TSecond">Type of the second value</typeparam> + </member> + <member name="M:Castle.Core.Pair`2.#ctor(`0,`1)"> + <summary> + Constructs a pair with its values + </summary> + <param name="first"></param> + <param name="second"></param> + </member> + <member name="T:Castle.Core.ProxyServices"> + <summary> + List of utility methods related to dynamic proxy operations + </summary> + </member> + <member name="M:Castle.Core.ProxyServices.IsDynamicProxy(System.Type)"> + <summary> + Determines whether the specified type is a proxy generated by + DynamicProxy (1 or 2). + </summary> + <param name="type">The type.</param> + <returns> + <c>true</c> if it is a proxy; otherwise, <c>false</c>. + </returns> + </member> + <member name="T:Castle.Core.ReflectionBasedDictionaryAdapter"> + <summary> + Readonly implementation of <see cref="T:System.Collections.IDictionary"/> which uses an anonymous object as its source. Uses names of properties as keys, and property values as... well - values. Keys are not case sensitive. + </summary> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.#ctor(System.Object)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Core.ReflectionBasedDictionaryAdapter"/> class. + </summary> + <param name="target">The target.</param> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Add(System.Object,System.Object)"> + <summary> + Adds an element with the provided key and value to the <see cref = "T:System.Collections.IDictionary" /> object. + </summary> + <param name = "key">The <see cref = "T:System.Object" /> to use as the key of the element to add.</param> + <param name = "value">The <see cref = "T:System.Object" /> to use as the value of the element to add.</param> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "key" /> is null. </exception> + <exception cref = "T:System.ArgumentException">An element with the same key already exists in the <see + cref = "T:System.Collections.IDictionary" /> object. </exception> + <exception cref = "T:System.NotSupportedException">The <see cref = "T:System.Collections.IDictionary" /> is read-only.-or- The <see + cref = "T:System.Collections.IDictionary" /> has a fixed size. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Clear"> + <summary> + Removes all elements from the <see cref = "T:System.Collections.IDictionary" /> object. + </summary> + <exception cref = "T:System.NotSupportedException">The <see cref = "T:System.Collections.IDictionary" /> object is read-only. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Contains(System.Object)"> + <summary> + Determines whether the <see cref = "T:System.Collections.IDictionary" /> object contains an element with the specified key. + </summary> + <param name = "key">The key to locate in the <see cref = "T:System.Collections.IDictionary" /> object.</param> + <returns> + true if the <see cref = "T:System.Collections.IDictionary" /> contains an element with the key; otherwise, false. + </returns> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "key" /> is null. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Remove(System.Object)"> + <summary> + Removes the element with the specified key from the <see cref = "T:System.Collections.IDictionary" /> object. + </summary> + <param name = "key">The key of the element to remove.</param> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "key" /> is null. </exception> + <exception cref = "T:System.NotSupportedException">The <see cref = "T:System.Collections.IDictionary" /> object is read-only.-or- The <see + cref = "T:System.Collections.IDictionary" /> has a fixed size. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.GetEnumerator"> + <summary> + Returns an enumerator that iterates through a collection. + </summary> + <returns> + An <see cref = "T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection. + </returns> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#ICollection#CopyTo(System.Array,System.Int32)"> + <summary> + Copies the elements of the <see cref = "T:System.Collections.ICollection" /> to an <see cref = "T:System.Array" />, starting at a particular <see + cref = "T:System.Array" /> index. + </summary> + <param name = "array">The one-dimensional <see cref = "T:System.Array" /> that is the destination of the elements copied from <see + cref = "T:System.Collections.ICollection" />. The <see cref = "T:System.Array" /> must have zero-based indexing.</param> + <param name = "index">The zero-based index in <paramref name = "array" /> at which copying begins.</param> + <exception cref = "T:System.ArgumentNullException"> + <paramref name = "array" /> is null. </exception> + <exception cref = "T:System.ArgumentOutOfRangeException"> + <paramref name = "index" /> is less than zero. </exception> + <exception cref = "T:System.ArgumentException"> + <paramref name = "array" /> is multidimensional.-or- <paramref name = "index" /> is equal to or greater than the length of <paramref + name = "array" />.-or- The number of elements in the source <see cref = "T:System.Collections.ICollection" /> is greater than the available space from <paramref + name = "index" /> to the end of the destination <paramref name = "array" />. </exception> + <exception cref = "T:System.ArgumentException">The type of the source <see cref = "T:System.Collections.ICollection" /> cannot be cast automatically to the type of the destination <paramref + name = "array" />. </exception> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#IDictionary#GetEnumerator"> + <summary> + Returns an <see cref = "T:System.Collections.IDictionaryEnumerator" /> object for the <see + cref = "T:System.Collections.IDictionary" /> object. + </summary> + <returns> + An <see cref = "T:System.Collections.IDictionaryEnumerator" /> object for the <see + cref = "T:System.Collections.IDictionary" /> object. + </returns> + </member> + <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Read(System.Collections.IDictionary,System.Object)"> + <summary> + Reads values of properties from <paramref name = "valuesAsAnonymousObject" /> and inserts them into <paramref + name = "targetDictionary" /> using property names as keys. + </summary> + <param name = "targetDictionary"></param> + <param name = "valuesAsAnonymousObject"></param> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Count"> + <summary> + Gets the number of elements contained in the <see cref = "T:System.Collections.ICollection" />. + </summary> + <value></value> + <returns>The number of elements contained in the <see cref = "T:System.Collections.ICollection" />.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.IsSynchronized"> + <summary> + Gets a value indicating whether access to the <see cref = "T:System.Collections.ICollection" /> is synchronized (thread safe). + </summary> + <value></value> + <returns>true if access to the <see cref = "T:System.Collections.ICollection" /> is synchronized (thread safe); otherwise, false.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the <see cref = "T:System.Collections.ICollection" />. + </summary> + <value></value> + <returns>An object that can be used to synchronize access to the <see cref = "T:System.Collections.ICollection" />.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.IsReadOnly"> + <summary> + Gets a value indicating whether the <see cref = "T:System.Collections.IDictionary" /> object is read-only. + </summary> + <value></value> + <returns>true if the <see cref = "T:System.Collections.IDictionary" /> object is read-only; otherwise, false.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Item(System.Object)"> + <summary> + Gets or sets the <see cref="T:System.Object"/> with the specified key. + </summary> + <value></value> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Keys"> + <summary> + Gets an <see cref = "T:System.Collections.ICollection" /> object containing the keys of the <see + cref = "T:System.Collections.IDictionary" /> object. + </summary> + <value></value> + <returns>An <see cref = "T:System.Collections.ICollection" /> object containing the keys of the <see + cref = "T:System.Collections.IDictionary" /> object.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Values"> + <summary> + Gets an <see cref = "T:System.Collections.ICollection" /> object containing the values in the <see + cref = "T:System.Collections.IDictionary" /> object. + </summary> + <value></value> + <returns>An <see cref = "T:System.Collections.ICollection" /> object containing the values in the <see + cref = "T:System.Collections.IDictionary" /> object.</returns> + </member> + <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#IDictionary#IsFixedSize"> + <summary> + Gets a value indicating whether the <see cref = "T:System.Collections.IDictionary" /> object has a fixed size. + </summary> + <value></value> + <returns>true if the <see cref = "T:System.Collections.IDictionary" /> object has a fixed size; otherwise, false.</returns> + </member> + <member name="T:Castle.Core.Resource.IResource"> + <summary> + Represents a 'streamable' resource. Can + be a file, a resource in an assembly. + </summary> + </member> + <member name="M:Castle.Core.Resource.IResource.GetStreamReader"> + <summary> + Returns a reader for the stream + </summary> + <remarks> + It's up to the caller to dispose the reader. + </remarks> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResource.GetStreamReader(System.Text.Encoding)"> + <summary> + Returns a reader for the stream + </summary> + <remarks> + It's up to the caller to dispose the reader. + </remarks> + <param name="encoding"></param> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResource.CreateRelative(System.String)"> + <summary> + Returns an instance of <see cref="T:Castle.Core.Resource.IResource"/> + created according to the <c>relativePath</c> + using itself as the root. + </summary> + <param name="relativePath"></param> + <returns></returns> + </member> + <member name="P:Castle.Core.Resource.IResource.FileBasePath"> + <summary> + + </summary> + <remarks> + Only valid for resources that + can be obtained through relative paths + </remarks> + </member> + <member name="T:Castle.Core.Resource.AbstractStreamResource"> + <summary> + + </summary> + </member> + <member name="F:Castle.Core.Resource.AbstractStreamResource.createStream"> + <summary> + This returns a new stream instance each time it is called. + It is the responsibility of the caller to dispose of this stream + </summary> + </member> + <member name="T:Castle.Core.Resource.IResourceFactory"> + <summary> + Depicts the contract for resource factories. + </summary> + </member> + <member name="M:Castle.Core.Resource.IResourceFactory.Accept(Castle.Core.Resource.CustomUri)"> + <summary> + Used to check whether the resource factory + is able to deal with the given resource + identifier. + </summary> + <remarks> + Implementors should return <c>true</c> + only if the given identifier is supported + by the resource factory + </remarks> + <param name="uri"></param> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResourceFactory.Create(Castle.Core.Resource.CustomUri)"> + <summary> + Creates an <see cref="T:Castle.Core.Resource.IResource"/> instance + for the given resource identifier + </summary> + <param name="uri"></param> + <returns></returns> + </member> + <member name="M:Castle.Core.Resource.IResourceFactory.Create(Castle.Core.Resource.CustomUri,System.String)"> + <summary> + Creates an <see cref="T:Castle.Core.Resource.IResource"/> instance + for the given resource identifier + </summary> + <param name="uri"></param> + <param name="basePath"></param> + <returns></returns> + </member> + <member name="T:Castle.Core.Resource.FileResource"> + <summary> + + </summary> + </member> + <member name="T:Castle.Core.Resource.StaticContentResource"> + <summary> + Adapts a static string content as an <see cref="T:Castle.Core.Resource.IResource"/> + </summary> + </member> + <member name="T:Castle.Core.Resource.UncResource"> + <summary> + Enable access to files on network shares + </summary> + </member> + </members> +</doc> diff --git a/packages/Castle.Core.3.2.1/readme.txt b/packages/Castle.Core.3.2.1/readme.txt new file mode 100644 index 000000000..239ae671a --- /dev/null +++ b/packages/Castle.Core.3.2.1/readme.txt @@ -0,0 +1,10 @@ +Thanks for downloading this Castle package. +You can find full list of changes in changes.txt + +Documentation (work in progress, contributions appreciated): +Dictionary Adapter - http://docs.castleproject.org/Tools.Castle-DictionaryAdapter.ashx +DynamicProxy - http://docs.castleproject.org/Tools.DynamicProxy.ashx +Discusssion group: - http://groups.google.com/group/castle-project-users +StackOverflow tags: - castle-dynamicproxy, castle-dictionaryadapter, castle + +Issue tracker: - http://issues.castleproject.org/dashboard \ No newline at end of file diff --git a/packages/FirebirdSql.Data.FirebirdClient.3.0.2.1/FirebirdSql.Data.FirebirdClient.3.0.2.1.nupkg b/packages/FirebirdSql.Data.FirebirdClient.3.0.2.1/FirebirdSql.Data.FirebirdClient.3.0.2.1.nupkg deleted file mode 100644 index 5db02ae70..000000000 Binary files a/packages/FirebirdSql.Data.FirebirdClient.3.0.2.1/FirebirdSql.Data.FirebirdClient.3.0.2.1.nupkg and /dev/null differ diff --git a/packages/FirebirdSql.Data.FirebirdClient.3.0.2.1/lib/net35/FirebirdSql.Data.FirebirdClient.dll b/packages/FirebirdSql.Data.FirebirdClient.3.0.2.1/lib/net35/FirebirdSql.Data.FirebirdClient.dll deleted file mode 100644 index 1a970441f..000000000 Binary files a/packages/FirebirdSql.Data.FirebirdClient.3.0.2.1/lib/net35/FirebirdSql.Data.FirebirdClient.dll and /dev/null differ diff --git a/packages/FirebirdSql.Data.FirebirdClient.3.0.2.1/lib/net40-client/FirebirdSql.Data.FirebirdClient.dll b/packages/FirebirdSql.Data.FirebirdClient.3.0.2.1/lib/net40-client/FirebirdSql.Data.FirebirdClient.dll deleted file mode 100644 index 9518074df..000000000 Binary files a/packages/FirebirdSql.Data.FirebirdClient.3.0.2.1/lib/net40-client/FirebirdSql.Data.FirebirdClient.dll and /dev/null differ diff --git a/packages/FirebirdSql.Data.FirebirdClient.3.0.2.1/lib/net45/FirebirdSql.Data.FirebirdClient.dll b/packages/FirebirdSql.Data.FirebirdClient.3.0.2.1/lib/net45/FirebirdSql.Data.FirebirdClient.dll deleted file mode 100644 index b73c565f2..000000000 Binary files a/packages/FirebirdSql.Data.FirebirdClient.3.0.2.1/lib/net45/FirebirdSql.Data.FirebirdClient.dll and /dev/null differ diff --git a/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/FirebirdSql.Data.FirebirdClient.4.0.0.0.nupkg b/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/FirebirdSql.Data.FirebirdClient.4.0.0.0.nupkg new file mode 100644 index 000000000..4d2f3b21d Binary files /dev/null and b/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/FirebirdSql.Data.FirebirdClient.4.0.0.0.nupkg differ diff --git a/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/FirebirdSql.Data.FirebirdClient.4.0.0.0.nuspec b/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/FirebirdSql.Data.FirebirdClient.4.0.0.0.nuspec new file mode 100644 index 000000000..39f221d54 --- /dev/null +++ b/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/FirebirdSql.Data.FirebirdClient.4.0.0.0.nuspec @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> + <metadata> + <id>FirebirdSql.Data.FirebirdClient</id> + <version>4.0.0.0</version> + <title>Firebird ADO.NET Data provider + FirebirdSQL + FirebirdSQL + http://firebird.svn.sourceforge.net/viewvc/firebird/NETProvider/trunk/NETProvider/license.txt + http://www.firebirdsql.org/en/net-provider/ + http://www.firebirdsql.org/file/about/ds-firebird-logo-64.png + false + Firebird ADO.NET Data provider + firebird firebirsql firebirdclient adonet database + + \ No newline at end of file diff --git a/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/lib/net40-client/FirebirdSql.Data.FirebirdClient.dll b/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/lib/net40-client/FirebirdSql.Data.FirebirdClient.dll new file mode 100644 index 000000000..ad92ba65b Binary files /dev/null and b/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/lib/net40-client/FirebirdSql.Data.FirebirdClient.dll differ diff --git a/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/lib/net40-client/FirebirdSql.Data.FirebirdClient.pdb b/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/lib/net40-client/FirebirdSql.Data.FirebirdClient.pdb new file mode 100644 index 000000000..211d755b7 Binary files /dev/null and b/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/lib/net40-client/FirebirdSql.Data.FirebirdClient.pdb differ diff --git a/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/lib/net45/FirebirdSql.Data.FirebirdClient.dll b/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/lib/net45/FirebirdSql.Data.FirebirdClient.dll new file mode 100644 index 000000000..99fd56b04 Binary files /dev/null and b/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/lib/net45/FirebirdSql.Data.FirebirdClient.dll differ diff --git a/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/lib/net45/FirebirdSql.Data.FirebirdClient.pdb b/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/lib/net45/FirebirdSql.Data.FirebirdClient.pdb new file mode 100644 index 000000000..9ae876f9d Binary files /dev/null and b/packages/FirebirdSql.Data.FirebirdClient.4.0.0.0/lib/net45/FirebirdSql.Data.FirebirdClient.pdb differ diff --git a/packages/MySql.Data.6.5.4/MySql.Data.6.5.4.nupkg b/packages/MySql.Data.6.5.4/MySql.Data.6.5.4.nupkg deleted file mode 100644 index d41e397a0..000000000 Binary files a/packages/MySql.Data.6.5.4/MySql.Data.6.5.4.nupkg and /dev/null differ diff --git a/packages/MySql.Data.6.5.4/lib/net20-cf/MySql.Data.cf.dll b/packages/MySql.Data.6.5.4/lib/net20-cf/MySql.Data.cf.dll deleted file mode 100644 index caab8908d..000000000 Binary files a/packages/MySql.Data.6.5.4/lib/net20-cf/MySql.Data.cf.dll and /dev/null differ diff --git a/packages/MySql.Data.6.5.4/lib/net20/MySql.Data.dll b/packages/MySql.Data.6.5.4/lib/net20/MySql.Data.dll deleted file mode 100644 index 088ef1c0b..000000000 Binary files a/packages/MySql.Data.6.5.4/lib/net20/MySql.Data.dll and /dev/null differ diff --git a/packages/MySql.Data.6.5.4/lib/net40/MySql.Data.dll b/packages/MySql.Data.6.5.4/lib/net40/MySql.Data.dll deleted file mode 100644 index 0662a8344..000000000 Binary files a/packages/MySql.Data.6.5.4/lib/net40/MySql.Data.dll and /dev/null differ diff --git a/packages/MySql.Data.6.8.3/MySql.Data.6.8.3.nupkg b/packages/MySql.Data.6.8.3/MySql.Data.6.8.3.nupkg new file mode 100644 index 000000000..2d5012675 Binary files /dev/null and b/packages/MySql.Data.6.8.3/MySql.Data.6.8.3.nupkg differ diff --git a/packages/MySql.Data.6.8.3/MySql.Data.6.8.3.nuspec b/packages/MySql.Data.6.8.3/MySql.Data.6.8.3.nuspec new file mode 100644 index 000000000..5be379af1 --- /dev/null +++ b/packages/MySql.Data.6.8.3/MySql.Data.6.8.3.nuspec @@ -0,0 +1,15 @@ + + + + MySql.Data + 6.8.3 + Oracle Corporation + Oracle Corporation + http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + http://www.mysql.com/downloads/connector/net/ + http://www.mysql.com/common/logos/logo-mysql-110x57.png + false + Connector/Net is a fully-managed ADO.NET driver for MySQL. + MySQL + + \ No newline at end of file diff --git a/packages/MySql.Data.6.8.3/lib/net20-cf/MySql.Data.cf.dll b/packages/MySql.Data.6.8.3/lib/net20-cf/MySql.Data.cf.dll new file mode 100644 index 000000000..1d94843a9 Binary files /dev/null and b/packages/MySql.Data.6.8.3/lib/net20-cf/MySql.Data.cf.dll differ diff --git a/packages/MySql.Data.6.8.3/lib/net20/MySql.Data.dll b/packages/MySql.Data.6.8.3/lib/net20/MySql.Data.dll new file mode 100644 index 000000000..43c3c23e3 Binary files /dev/null and b/packages/MySql.Data.6.8.3/lib/net20/MySql.Data.dll differ diff --git a/packages/MySql.Data.6.8.3/lib/net40/MySql.Data.dll b/packages/MySql.Data.6.8.3/lib/net40/MySql.Data.dll new file mode 100644 index 000000000..d7dc2ab89 Binary files /dev/null and b/packages/MySql.Data.6.8.3/lib/net40/MySql.Data.dll differ diff --git a/packages/MySql.Data.6.8.3/lib/net45/MySql.Data.dll b/packages/MySql.Data.6.8.3/lib/net45/MySql.Data.dll new file mode 100644 index 000000000..581d25e89 Binary files /dev/null and b/packages/MySql.Data.6.8.3/lib/net45/MySql.Data.dll differ diff --git a/packages/MySql.Data.6.8.3/lib/netcore45/MySql.Data.RT.dll b/packages/MySql.Data.6.8.3/lib/netcore45/MySql.Data.RT.dll new file mode 100644 index 000000000..df8947a8c Binary files /dev/null and b/packages/MySql.Data.6.8.3/lib/netcore45/MySql.Data.RT.dll differ diff --git a/packages/NUnit.2.6.2/NUnit.2.6.2.nupkg b/packages/NUnit.2.6.2/NUnit.2.6.2.nupkg deleted file mode 100644 index 26f15bdc7..000000000 Binary files a/packages/NUnit.2.6.2/NUnit.2.6.2.nupkg and /dev/null differ diff --git a/packages/NUnit.2.6.2/lib/nunit.framework.dll b/packages/NUnit.2.6.2/lib/nunit.framework.dll deleted file mode 100644 index 3e24ba1ca..000000000 Binary files a/packages/NUnit.2.6.2/lib/nunit.framework.dll and /dev/null differ diff --git a/packages/NUnit.2.6.3/NUnit.2.6.3.nupkg b/packages/NUnit.2.6.3/NUnit.2.6.3.nupkg new file mode 100644 index 000000000..61e3a5ecf Binary files /dev/null and b/packages/NUnit.2.6.3/NUnit.2.6.3.nupkg differ diff --git a/packages/NUnit.2.6.3/NUnit.2.6.3.nuspec b/packages/NUnit.2.6.3/NUnit.2.6.3.nuspec new file mode 100644 index 000000000..9278b0a54 --- /dev/null +++ b/packages/NUnit.2.6.3/NUnit.2.6.3.nuspec @@ -0,0 +1,27 @@ + + + + NUnit + 2.6.3 + NUnit + Charlie Poole + Charlie Poole + http://nunit.org/nuget/license.html + http://nunit.org/ + http://nunit.org/nuget/nunit_32x32.png + false + NUnit features a fluent assert syntax, parameterized, generic and theory tests and is user-extensible. A number of runners, both from the NUnit project and by third parties, are able to execute NUnit tests. + +Version 2.6 is the seventh major release of this well-known and well-tested programming tool. + +This package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner. + NUnit is a unit-testing framework for all .Net languages with a strong TDD focus. + Version 2.6 is the seventh major release of NUnit. + +Unlike earlier versions, this package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner. + +The nunit.mocks assembly is now provided by the NUnit.Mocks package. The pnunit.framework assembly is provided by the pNUnit package. + en-US + nunit test testing tdd framework fluent assert theory plugin addin + + \ No newline at end of file diff --git a/packages/NUnit.2.6.3/lib/nunit.framework.dll b/packages/NUnit.2.6.3/lib/nunit.framework.dll new file mode 100644 index 000000000..780727f21 Binary files /dev/null and b/packages/NUnit.2.6.3/lib/nunit.framework.dll differ diff --git a/packages/NUnit.2.6.2/lib/nunit.framework.xml b/packages/NUnit.2.6.3/lib/nunit.framework.xml similarity index 96% rename from packages/NUnit.2.6.2/lib/nunit.framework.xml rename to packages/NUnit.2.6.3/lib/nunit.framework.xml index 7702ceebb..f40847c7a 100644 --- a/packages/NUnit.2.6.2/lib/nunit.framework.xml +++ b/packages/NUnit.2.6.3/lib/nunit.framework.xml @@ -1,10899 +1,10960 @@ - - - - nunit.framework - - - - - Attribute used to apply a category to a test - - - - - The name of the category - - - - - Construct attribute for a given category based on - a name. The name may not contain the characters ',', - '+', '-' or '!'. However, this is not checked in the - constructor since it would cause an error to arise at - as the test was loaded without giving a clear indication - of where the problem is located. The error is handled - in NUnitFramework.cs by marking the test as not - runnable. - - The name of the category - - - - Protected constructor uses the Type name as the name - of the category. - - - - - The name of the category - - - - - Used to mark a field for use as a datapoint when executing a theory - within the same fixture that requires an argument of the field's Type. - - - - - Used to mark an array as containing a set of datapoints to be used - executing a theory within the same fixture that requires an argument - of the Type of the array elements. - - - - - Attribute used to provide descriptive text about a - test case or fixture. - - - - - Construct the attribute - - Text describing the test - - - - Gets the test description - - - - - Enumeration indicating how the expected message parameter is to be used - - - - Expect an exact match - - - Expect a message containing the parameter string - - - Match the regular expression provided as a parameter - - - Expect a message that starts with the parameter string - - - - ExpectedExceptionAttribute - - - - - - Constructor for a non-specific exception - - - - - Constructor for a given type of exception - - The type of the expected exception - - - - Constructor for a given exception name - - The full name of the expected exception - - - - Gets or sets the expected exception type - - - - - Gets or sets the full Type name of the expected exception - - - - - Gets or sets the expected message text - - - - - Gets or sets the user message displayed in case of failure - - - - - Gets or sets the type of match to be performed on the expected message - - - - - Gets the name of a method to be used as an exception handler - - - - - ExplicitAttribute marks a test or test fixture so that it will - only be run if explicitly executed from the gui or command line - or if it is included by use of a filter. The test will not be - run simply because an enclosing suite is run. - - - - - Default constructor - - - - - Constructor with a reason - - The reason test is marked explicit - - - - The reason test is marked explicit - - - - - Attribute used to mark a test that is to be ignored. - Ignored tests result in a warning message when the - tests are run. - - - - - Constructs the attribute without giving a reason - for ignoring the test. - - - - - Constructs the attribute giving a reason for ignoring the test - - The reason for ignoring the test - - - - The reason for ignoring a test - - - - - Abstract base for Attributes that are used to include tests - in the test run based on environmental settings. - - - - - Constructor with no included items specified, for use - with named property syntax. - - - - - Constructor taking one or more included items - - Comma-delimited list of included items - - - - Name of the item that is needed in order for - a test to run. Multiple itemss may be given, - separated by a comma. - - - - - Name of the item to be excluded. Multiple items - may be given, separated by a comma. - - - - - The reason for including or excluding the test - - - - - PlatformAttribute is used to mark a test fixture or an - individual method as applying to a particular platform only. - - - - - Constructor with no platforms specified, for use - with named property syntax. - - - - - Constructor taking one or more platforms - - Comma-deliminted list of platforms - - - - CultureAttribute is used to mark a test fixture or an - individual method as applying to a particular Culture only. - - - - - Constructor with no cultures specified, for use - with named property syntax. - - - - - Constructor taking one or more cultures - - Comma-deliminted list of cultures - - - - Marks a test to use a combinatorial join of any argument data - provided. NUnit will create a test case for every combination of - the arguments provided. This can result in a large number of test - cases and so should be used judiciously. This is the default join - type, so the attribute need not be used except as documentation. - - - - - PropertyAttribute is used to attach information to a test as a name/value pair.. - - - - - Construct a PropertyAttribute with a name and string value - - The name of the property - The property value - - - - Construct a PropertyAttribute with a name and int value - - The name of the property - The property value - - - - Construct a PropertyAttribute with a name and double value - - The name of the property - The property value - - - - Constructor for derived classes that set the - property dictionary directly. - - - - - Constructor for use by derived classes that use the - name of the type as the property name. Derived classes - must ensure that the Type of the property value is - a standard type supported by the BCL. Any custom - types will cause a serialization Exception when - in the client. - - - - - Gets the property dictionary for this attribute - - - - - Default constructor - - - - - Marks a test to use pairwise join of any argument data provided. - NUnit will attempt too excercise every pair of argument values at - least once, using as small a number of test cases as it can. With - only two arguments, this is the same as a combinatorial join. - - - - - Default constructor - - - - - Marks a test to use a sequential join of any argument data - provided. NUnit will use arguements for each parameter in - sequence, generating test cases up to the largest number - of argument values provided and using null for any arguments - for which it runs out of values. Normally, this should be - used with the same number of arguments for each parameter. - - - - - Default constructor - - - - - Summary description for MaxTimeAttribute. - - - - - Construct a MaxTimeAttribute, given a time in milliseconds. - - The maximum elapsed time in milliseconds - - - - RandomAttribute is used to supply a set of random values - to a single parameter of a parameterized test. - - - - - ValuesAttribute is used to provide literal arguments for - an individual parameter of a test. - - - - - Abstract base class for attributes that apply to parameters - and supply data for the parameter. - - - - - Gets the data to be provided to the specified parameter - - - - - The collection of data to be returned. Must - be set by any derived attribute classes. - We use an object[] so that the individual - elements may have their type changed in GetData - if necessary. - - - - - Construct with one argument - - - - - - Construct with two arguments - - - - - - - Construct with three arguments - - - - - - - - Construct with an array of arguments - - - - - - Get the collection of values to be used as arguments - - - - - Construct a set of doubles from 0.0 to 1.0, - specifying only the count. - - - - - - Construct a set of doubles from min to max - - - - - - - - Construct a set of ints from min to max - - - - - - - - Get the collection of values to be used as arguments - - - - - RangeAttribute is used to supply a range of values to an - individual parameter of a parameterized test. - - - - - Construct a range of ints using default step of 1 - - - - - - - Construct a range of ints specifying the step size - - - - - - - - Construct a range of longs - - - - - - - - Construct a range of doubles - - - - - - - - Construct a range of floats - - - - - - - - RepeatAttribute may be applied to test case in order - to run it multiple times. - - - - - Construct a RepeatAttribute - - The number of times to run the test - - - - RequiredAddinAttribute may be used to indicate the names of any addins - that must be present in order to run some or all of the tests in an - assembly. If the addin is not loaded, the entire assembly is marked - as NotRunnable. - - - - - Initializes a new instance of the class. - - The required addin. - - - - Gets the name of required addin. - - The required addin name. - - - - Summary description for SetCultureAttribute. - - - - - Construct given the name of a culture - - - - - - Summary description for SetUICultureAttribute. - - - - - Construct given the name of a culture - - - - - - SetUpAttribute is used in a TestFixture to identify a method - that is called immediately before each test is run. It is - also used in a SetUpFixture to identify the method that is - called once, before any of the subordinate tests are run. - - - - - Attribute used to mark a class that contains one-time SetUp - and/or TearDown methods that apply to all the tests in a - namespace or an assembly. - - - - - Attribute used to mark a static (shared in VB) property - that returns a list of tests. - - - - - Attribute used in a TestFixture to identify a method that is - called immediately after each test is run. It is also used - in a SetUpFixture to identify the method that is called once, - after all subordinate tests have run. In either case, the method - is guaranteed to be called, even if an exception is thrown. - - - - - Provide actions to execute before and after tests. - - - - - When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. - - - - - Executed before each test is run - - Provides details about the test that is going to be run. - - - - Executed after each test is run - - Provides details about the test that has just been run. - - - - Provides the target for the action attribute - - The target for the action attribute - - - - Adding this attribute to a method within a - class makes the method callable from the NUnit test runner. There is a property - called Description which is optional which you can provide a more detailed test - description. This class cannot be inherited. - - - - [TestFixture] - public class Fixture - { - [Test] - public void MethodToTest() - {} - - [Test(Description = "more detailed description")] - publc void TestDescriptionMethod() - {} - } - - - - - - Descriptive text for this test - - - - - TestCaseAttribute is used to mark parameterized test cases - and provide them with their arguments. - - - - - The ITestCaseData interface is implemented by a class - that is able to return complete testcases for use by - a parameterized test method. - - NOTE: This interface is used in both the framework - and the core, even though that results in two different - types. However, sharing the source code guarantees that - the various implementations will be compatible and that - the core is able to reflect successfully over the - framework implementations of ITestCaseData. - - - - - Gets the argument list to be provided to the test - - - - - Gets the expected result - - - - - Indicates whether a result has been specified. - This is necessary because the result may be - null, so it's value cannot be checked. - - - - - Gets the expected exception Type - - - - - Gets the FullName of the expected exception - - - - - Gets the name to be used for the test - - - - - Gets the description of the test - - - - - Gets a value indicating whether this is ignored. - - true if ignored; otherwise, false. - - - - Gets a value indicating whether this is explicit. - - true if explicit; otherwise, false. - - - - Gets the ignore reason. - - The ignore reason. - - - - Construct a TestCaseAttribute with a list of arguments. - This constructor is not CLS-Compliant - - - - - - Construct a TestCaseAttribute with a single argument - - - - - - Construct a TestCaseAttribute with a two arguments - - - - - - - Construct a TestCaseAttribute with a three arguments - - - - - - - - Gets the list of arguments to a test case - - - - - Gets or sets the expected result. Use - ExpectedResult by preference. - - The result. - - - - Gets or sets the expected result. - - The result. - - - - Gets a flag indicating whether an expected - result has been set. - - - - - Gets a list of categories associated with this test; - - - - - Gets or sets the category associated with this test. - May be a single category or a comma-separated list. - - - - - Gets or sets the expected exception. - - The expected exception. - - - - Gets or sets the name the expected exception. - - The expected name of the exception. - - - - Gets or sets the expected message of the expected exception - - The expected message of the exception. - - - - Gets or sets the type of match to be performed on the expected message - - - - - Gets or sets the description. - - The description. - - - - Gets or sets the name of the test. - - The name of the test. - - - - Gets or sets the ignored status of the test - - - - - Gets or sets the ignored status of the test - - - - - Gets or sets the explicit status of the test - - - - - Gets or sets the reason for not running the test - - - - - Gets or sets the reason for not running the test. - Set has the side effect of marking the test as ignored. - - The ignore reason. - - - - FactoryAttribute indicates the source to be used to - provide test cases for a test method. - - - - - Construct with the name of the data source, which must - be a property, field or method of the test class itself. - - An array of the names of the factories that will provide data - - - - Construct with a Type, which must implement IEnumerable - - The Type that will provide data - - - - Construct with a Type and name. - that don't support params arrays. - - The Type that will provide data - The name of the method, property or field that will provide data - - - - The name of a the method, property or fiend to be used as a source - - - - - A Type to be used as a source - - - - - Gets or sets the category associated with this test. - May be a single category or a comma-separated list. - - - - - [TestFixture] - public class ExampleClass - {} - - - - - Default constructor - - - - - Construct with a object[] representing a set of arguments. - In .NET 2.0, the arguments may later be separated into - type arguments and constructor arguments. - - - - - - Descriptive text for this fixture - - - - - Gets and sets the category for this fixture. - May be a comma-separated list of categories. - - - - - Gets a list of categories for this fixture - - - - - The arguments originally provided to the attribute - - - - - Gets or sets a value indicating whether this should be ignored. - - true if ignore; otherwise, false. - - - - Gets or sets the ignore reason. May set Ignored as a side effect. - - The ignore reason. - - - - Get or set the type arguments. If not set - explicitly, any leading arguments that are - Types are taken as type arguments. - - - - - Attribute used to identify a method that is - called before any tests in a fixture are run. - - - - - Attribute used to identify a method that is called after - all the tests in a fixture have run. The method is - guaranteed to be called, even if an exception is thrown. - - - - - Adding this attribute to a method within a - class makes the method callable from the NUnit test runner. There is a property - called Description which is optional which you can provide a more detailed test - description. This class cannot be inherited. - - - - [TestFixture] - public class Fixture - { - [Test] - public void MethodToTest() - {} - - [Test(Description = "more detailed description")] - publc void TestDescriptionMethod() - {} - } - - - - - - Used on a method, marks the test with a timeout value in milliseconds. - The test will be run in a separate thread and is cancelled if the timeout - is exceeded. Used on a method or assembly, sets the default timeout - for all contained test methods. - - - - - Construct a TimeoutAttribute given a time in milliseconds - - The timeout value in milliseconds - - - - Marks a test that must run in the STA, causing it - to run in a separate thread if necessary. - - On methods, you may also use STAThreadAttribute - to serve the same purpose. - - - - - Construct a RequiresSTAAttribute - - - - - Marks a test that must run in the MTA, causing it - to run in a separate thread if necessary. - - On methods, you may also use MTAThreadAttribute - to serve the same purpose. - - - - - Construct a RequiresMTAAttribute - - - - - Marks a test that must run on a separate thread. - - - - - Construct a RequiresThreadAttribute - - - - - Construct a RequiresThreadAttribute, specifying the apartment - - - - - ValueSourceAttribute indicates the source to be used to - provide data for one parameter of a test method. - - - - - Construct with the name of the factory - for use with languages - that don't support params arrays. - - The name of the data source to be used - - - - Construct with a Type and name - for use with languages - that don't support params arrays. - - The Type that will provide data - The name of the method, property or field that will provide data - - - - The name of a the method, property or fiend to be used as a source - - - - - A Type to be used as a source - - - - - AttributeExistsConstraint tests for the presence of a - specified attribute on a Type. - - - - - The Constraint class is the base of all built-in constraints - within NUnit. It provides the operator overloads used to combine - constraints. - - - - - The IConstraintExpression interface is implemented by all - complete and resolvable constraints and expressions. - - - - - Return the top-level constraint for this expression - - - - - - Static UnsetObject used to detect derived constraints - failing to set the actual value. - - - - - The actual value being tested against a constraint - - - - - The display name of this Constraint for use by ToString() - - - - - Argument fields used by ToString(); - - - - - The builder holding this constraint - - - - - Construct a constraint with no arguments - - - - - Construct a constraint with one argument - - - - - Construct a constraint with two arguments - - - - - Sets the ConstraintBuilder holding this constraint - - - - - Write the failure message to the MessageWriter provided - as an argument. The default implementation simply passes - the constraint and the actual value to the writer, which - then displays the constraint description and the value. - - Constraints that need to provide additional details, - such as where the error occured can override this. - - The MessageWriter on which to display the message - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Test whether the constraint is satisfied by an - ActualValueDelegate that returns the value to be tested. - The default implementation simply evaluates the delegate - but derived classes may override it to provide for delayed - processing. - - An ActualValueDelegate - True for success, false for failure - - - - Test whether the constraint is satisfied by a given reference. - The default implementation simply dereferences the value but - derived classes may override it to provide for delayed processing. - - A reference to the value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - Default override of ToString returns the constraint DisplayName - followed by any arguments within angle brackets. - - - - - - Returns the string representation of this constraint - - - - - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. - - - - - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. - - - - - This operator creates a constraint that is satisfied if the - argument constraint is not satisfied. - - - - - Returns a DelayedConstraint with the specified delay time. - - The delay in milliseconds. - - - - - Returns a DelayedConstraint with the specified delay time - and polling interval. - - The delay in milliseconds. - The interval at which to test the constraint. - - - - - The display name of this Constraint for use by ToString(). - The default value is the name of the constraint with - trailing "Constraint" removed. Derived classes may set - this to another name in their constructors. - - - - - Returns a ConstraintExpression by appending And - to the current constraint. - - - - - Returns a ConstraintExpression by appending And - to the current constraint. - - - - - Returns a ConstraintExpression by appending Or - to the current constraint. - - - - - Class used to detect any derived constraints - that fail to set the actual value in their - Matches override. - - - - - Constructs an AttributeExistsConstraint for a specific attribute Type - - - - - - Tests whether the object provides the expected attribute. - - A Type, MethodInfo, or other ICustomAttributeProvider - True if the expected attribute is present, otherwise false - - - - Writes the description of the constraint to the specified writer - - - - - AttributeConstraint tests that a specified attribute is present - on a Type or other provider and that the value of the attribute - satisfies some other constraint. - - - - - Abstract base class used for prefixes - - - - - The base constraint - - - - - Construct given a base constraint - - - - - - Constructs an AttributeConstraint for a specified attriute - Type and base constraint. - - - - - - - Determines whether the Type or other provider has the - expected attribute and if its value matches the - additional constraint specified. - - - - - Writes a description of the attribute to the specified writer. - - - - - Writes the actual value supplied to the specified writer. - - - - - Returns a string representation of the constraint. - - - - - BasicConstraint is the abstract base for constraints that - perform a simple comparison to a constant value. - - - - - Initializes a new instance of the class. - - The expected. - The description. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - NullConstraint tests that the actual value is null - - - - - Initializes a new instance of the class. - - - - - TrueConstraint tests that the actual value is true - - - - - Initializes a new instance of the class. - - - - - FalseConstraint tests that the actual value is false - - - - - Initializes a new instance of the class. - - - - - NaNConstraint tests that the actual value is a double or float NaN - - - - - Test that the actual value is an NaN - - - - - - - Write the constraint description to a specified writer - - - - - - BinaryConstraint is the abstract base of all constraints - that combine two other constraints in some fashion. - - - - - The first constraint being combined - - - - - The second constraint being combined - - - - - Construct a BinaryConstraint from two other constraints - - The first constraint - The second constraint - - - - AndConstraint succeeds only if both members succeed. - - - - - Create an AndConstraint from two other constraints - - The first constraint - The second constraint - - - - Apply both member constraints to an actual value, succeeding - succeeding only if both of them succeed. - - The actual value - True if the constraints both succeeded - - - - Write a description for this contraint to a MessageWriter - - The MessageWriter to receive the description - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - OrConstraint succeeds if either member succeeds - - - - - Create an OrConstraint from two other constraints - - The first constraint - The second constraint - - - - Apply the member constraints to an actual value, succeeding - succeeding as soon as one of them succeeds. - - The actual value - True if either constraint succeeded - - - - Write a description for this contraint to a MessageWriter - - The MessageWriter to receive the description - - - - CollectionConstraint is the abstract base class for - constraints that operate on collections. - - - - - Construct an empty CollectionConstraint - - - - - Construct a CollectionConstraint - - - - - - Determines whether the specified enumerable is empty. - - The enumerable. - - true if the specified enumerable is empty; otherwise, false. - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Protected method to be implemented by derived classes - - - - - - - CollectionItemsEqualConstraint is the abstract base class for all - collection constraints that apply some notion of item equality - as a part of their operation. - - - - - Construct an empty CollectionConstraint - - - - - Construct a CollectionConstraint - - - - - - Flag the constraint to use the supplied IComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied Comparison object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IEqualityComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IEqualityComparer object. - - The IComparer object to use. - Self. - - - - Compares two collection members for equality - - - - - Return a new CollectionTally for use in making tests - - The collection to be included in the tally - - - - Flag the constraint to ignore case and return self. - - - - - EmptyCollectionConstraint tests whether a collection is empty. - - - - - Check that the collection is empty - - - - - - - Write the constraint description to a MessageWriter - - - - - - UniqueItemsConstraint tests whether all the items in a - collection are unique. - - - - - Check that all items are unique. - - - - - - - Write a description of this constraint to a MessageWriter - - - - - - CollectionContainsConstraint is used to test whether a collection - contains an expected object as a member. - - - - - Construct a CollectionContainsConstraint - - - - - - Test whether the expected item is contained in the collection - - - - - - - Write a descripton of the constraint to a MessageWriter - - - - - - CollectionEquivalentCOnstraint is used to determine whether two - collections are equivalent. - - - - - Construct a CollectionEquivalentConstraint - - - - - - Test whether two collections are equivalent - - - - - - - Write a description of this constraint to a MessageWriter - - - - - - CollectionSubsetConstraint is used to determine whether - one collection is a subset of another - - - - - Construct a CollectionSubsetConstraint - - The collection that the actual value is expected to be a subset of - - - - Test whether the actual collection is a subset of - the expected collection provided. - - - - - - - Write a description of this constraint to a MessageWriter - - - - - - CollectionOrderedConstraint is used to test whether a collection is ordered. - - - - - Construct a CollectionOrderedConstraint - - - - - Modifies the constraint to use an IComparer and returns self. - - - - - Modifies the constraint to use an IComparer<T> and returns self. - - - - - Modifies the constraint to use a Comparison<T> and returns self. - - - - - Modifies the constraint to test ordering by the value of - a specified property and returns self. - - - - - Test whether the collection is ordered - - - - - - - Write a description of the constraint to a MessageWriter - - - - - - Returns the string representation of the constraint. - - - - - - If used performs a reverse comparison - - - - - CollectionTally counts (tallies) the number of - occurences of each object in one or more enumerations. - - - - - Construct a CollectionTally object from a comparer and a collection - - - - - Try to remove an object from the tally - - The object to remove - True if successful, false if the object was not found - - - - Try to remove a set of objects from the tally - - The objects to remove - True if successful, false if any object was not found - - - - The number of objects remaining in the tally - - - - - ComparisonAdapter class centralizes all comparisons of - values in NUnit, adapting to the use of any provided - IComparer, IComparer<T> or Comparison<T> - - - - - Returns a ComparisonAdapter that wraps an IComparer - - - - - Returns a ComparisonAdapter that wraps an IComparer<T> - - - - - Returns a ComparisonAdapter that wraps a Comparison<T> - - - - - Compares two objects - - - - - Gets the default ComparisonAdapter, which wraps an - NUnitComparer object. - - - - - Construct a ComparisonAdapter for an IComparer - - - - - Compares two objects - - - - - - - - Construct a default ComparisonAdapter - - - - - ComparisonAdapter<T> extends ComparisonAdapter and - allows use of an IComparer<T> or Comparison<T> - to actually perform the comparison. - - - - - Construct a ComparisonAdapter for an IComparer<T> - - - - - Compare a Type T to an object - - - - - Construct a ComparisonAdapter for a Comparison<T> - - - - - Compare a Type T to an object - - - - - Abstract base class for constraints that compare values to - determine if one is greater than, equal to or less than - the other. This class supplies the Using modifiers. - - - - - ComparisonAdapter to be used in making the comparison - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - Modifies the constraint to use an IComparer and returns self - - - - - Modifies the constraint to use an IComparer<T> and returns self - - - - - Modifies the constraint to use a Comparison<T> and returns self - - - - - Delegate used to delay evaluation of the actual value - to be used in evaluating a constraint - - - - - ConstraintBuilder maintains the stacks that are used in - processing a ConstraintExpression. An OperatorStack - is used to hold operators that are waiting for their - operands to be reognized. a ConstraintStack holds - input constraints as well as the results of each - operator applied. - - - - - Initializes a new instance of the class. - - - - - Appends the specified operator to the expression by first - reducing the operator stack and then pushing the new - operator on the stack. - - The operator to push. - - - - Appends the specified constraint to the expresson by pushing - it on the constraint stack. - - The constraint to push. - - - - Sets the top operator right context. - - The right context. - - - - Reduces the operator stack until the topmost item - precedence is greater than or equal to the target precedence. - - The target precedence. - - - - Resolves this instance, returning a Constraint. If the builder - is not currently in a resolvable state, an exception is thrown. - - The resolved constraint - - - - Gets a value indicating whether this instance is resolvable. - - - true if this instance is resolvable; otherwise, false. - - - - - OperatorStack is a type-safe stack for holding ConstraintOperators - - - - - Initializes a new instance of the class. - - The builder. - - - - Pushes the specified operator onto the stack. - - The op. - - - - Pops the topmost operator from the stack. - - - - - - Gets a value indicating whether this is empty. - - true if empty; otherwise, false. - - - - Gets the topmost operator without modifying the stack. - - The top. - - - - ConstraintStack is a type-safe stack for holding Constraints - - - - - Initializes a new instance of the class. - - The builder. - - - - Pushes the specified constraint. As a side effect, - the constraint's builder field is set to the - ConstraintBuilder owning this stack. - - The constraint. - - - - Pops this topmost constrait from the stack. - As a side effect, the constraint's builder - field is set to null. - - - - - - Gets a value indicating whether this is empty. - - true if empty; otherwise, false. - - - - Gets the topmost constraint without modifying the stack. - - The topmost constraint - - - - ConstraintExpression represents a compound constraint in the - process of being constructed from a series of syntactic elements. - - Individual elements are appended to the expression as they are - reognized. Once an actual Constraint is appended, the expression - returns a resolvable Constraint. - - - - - ConstraintExpressionBase is the abstract base class for the - ConstraintExpression class, which represents a - compound constraint in the process of being constructed - from a series of syntactic elements. - - NOTE: ConstraintExpressionBase is separate because the - ConstraintExpression class was generated in earlier - versions of NUnit. The two classes may be combined - in a future version. - - - - - The ConstraintBuilder holding the elements recognized so far - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the - class passing in a ConstraintBuilder, which may be pre-populated. - - The builder. - - - - Returns a string representation of the expression as it - currently stands. This should only be used for testing, - since it has the side-effect of resolving the expression. - - - - - - Appends an operator to the expression and returns the - resulting expression itself. - - - - - Appends a self-resolving operator to the expression and - returns a new ResolvableConstraintExpression. - - - - - Appends a constraint to the expression and returns that - constraint, which is associated with the current state - of the expression being built. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the - class passing in a ConstraintBuilder, which may be pre-populated. - - The builder. - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding only if a specified number of them succeed. - - - - - Returns a new PropertyConstraintExpression, which will either - test for the existence of the named property on the object - being tested or apply any following constraint to that property. - - - - - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. - - - - - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. - - - - - Returns the constraint provided as an argument - used to allow custom - custom constraints to easily participate in the syntax. - - - - - Returns the constraint provided as an argument - used to allow custom - custom constraints to easily participate in the syntax. - - - - - Returns a constraint that tests two items for equality - - - - - Returns a constraint that tests that two references are the same object - - - - - Returns a constraint that tests whether the - actual value is greater than the suppled argument - - - - - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument - - - - - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. - - - - - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is a collection containing the same elements as the - collection supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is a subset of the collection supplied as an argument. - - - - - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. - - - - - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. - - - - - Returns a new ContainsConstraint. This constraint - will, in turn, make use of the appropriate second-level - constraint, depending on the type of the actual argument. - This overload is only used if the item sought is a string, - since any other type implies that we are looking for a - collection member. - - - - - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. - - - - - Returns a constraint that tests whether the path provided - is the same as an expected path after canonicalization. - - - - - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. - - - - - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. - - - - - Returns a constraint that tests whether the actual value falls - within a specified range. - - - - - Returns a ConstraintExpression that negates any - following constraint. - - - - - Returns a ConstraintExpression that negates any - following constraint. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if at least one of them succeeds. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them fail. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Length property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Count property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Message property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the InnerException property of the object being tested. - - - - - With is currently a NOP - reserved for future use. - - - - - Returns a constraint that tests for null - - - - - Returns a constraint that tests for True - - - - - Returns a constraint that tests for False - - - - - Returns a constraint that tests for a positive value - - - - - Returns a constraint that tests for a negative value - - - - - Returns a constraint that tests for NaN - - - - - Returns a constraint that tests for empty - - - - - Returns a constraint that tests whether a collection - contains all unique items. - - - - - Returns a constraint that tests whether an object graph is serializable in binary format. - - - - - Returns a constraint that tests whether an object graph is serializable in xml format. - - - - - Returns a constraint that tests whether a collection is ordered - - - - - Helper class with properties and methods that supply - a number of constraints used in Asserts. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding only if a specified number of them succeed. - - - - - Returns a new PropertyConstraintExpression, which will either - test for the existence of the named property on the object - being tested or apply any following constraint to that property. - - - - - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. - - - - - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. - - - - - Returns a constraint that tests two items for equality - - - - - Returns a constraint that tests that two references are the same object - - - - - Returns a constraint that tests whether the - actual value is greater than the suppled argument - - - - - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument - - - - - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. - - - - - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is a collection containing the same elements as the - collection supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is a subset of the collection supplied as an argument. - - - - - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. - - - - - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. - - - - - Returns a new ContainsConstraint. This constraint - will, in turn, make use of the appropriate second-level - constraint, depending on the type of the actual argument. - This overload is only used if the item sought is a string, - since any other type implies that we are looking for a - collection member. - - - - - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that fails if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that fails if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that fails if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. - - - - - Returns a constraint that fails if the actual - value matches the pattern supplied as an argument. - - - - - Returns a constraint that tests whether the path provided - is the same as an expected path after canonicalization. - - - - - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. - - - - - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. - - - - - Returns a constraint that tests whether the actual value falls - within a specified range. - - - - - Returns a ConstraintExpression that negates any - following constraint. - - - - - Returns a ConstraintExpression that negates any - following constraint. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if at least one of them succeeds. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them fail. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Length property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Count property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Message property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the InnerException property of the object being tested. - - - - - Returns a constraint that tests for null - - - - - Returns a constraint that tests for True - - - - - Returns a constraint that tests for False - - - - - Returns a constraint that tests for a positive value - - - - - Returns a constraint that tests for a negative value - - - - - Returns a constraint that tests for NaN - - - - - Returns a constraint that tests for empty - - - - - Returns a constraint that tests whether a collection - contains all unique items. - - - - - Returns a constraint that tests whether an object graph is serializable in binary format. - - - - - Returns a constraint that tests whether an object graph is serializable in xml format. - - - - - Returns a constraint that tests whether a collection is ordered - - - - - The ConstraintOperator class is used internally by a - ConstraintBuilder to represent an operator that - modifies or combines constraints. - - Constraint operators use left and right precedence - values to determine whether the top operator on the - stack should be reduced before pushing a new operator. - - - - - The precedence value used when the operator - is about to be pushed to the stack. - - - - - The precedence value used when the operator - is on the top of the stack. - - - - - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. - - - - - - The syntax element preceding this operator - - - - - The syntax element folowing this operator - - - - - The precedence value used when the operator - is about to be pushed to the stack. - - - - - The precedence value used when the operator - is on the top of the stack. - - - - - PrefixOperator takes a single constraint and modifies - it's action in some way. - - - - - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. - - - - - - Returns the constraint created by applying this - prefix to another constraint. - - - - - - - Negates the test of the constraint it wraps. - - - - - Constructs a new NotOperator - - - - - Returns a NotConstraint applied to its argument. - - - - - Abstract base for operators that indicate how to - apply a constraint to items in a collection. - - - - - Constructs a CollectionOperator - - - - - Represents a constraint that succeeds if all the - members of a collection match a base constraint. - - - - - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - they all succeed. - - - - - Represents a constraint that succeeds if any of the - members of a collection match a base constraint. - - - - - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - any of them succeed. - - - - - Represents a constraint that succeeds if none of the - members of a collection match a base constraint. - - - - - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - none of them succeed. - - - - - Represents a constraint that succeeds if the specified - count of members of a collection match a base constraint. - - - - - Construct an ExactCountOperator for a specified count - - The expected count - - - - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - none of them succeed. - - - - - Represents a constraint that simply wraps the - constraint provided as an argument, without any - further functionality, but which modifes the - order of evaluation because of its precedence. - - - - - Constructor for the WithOperator - - - - - Returns a constraint that wraps its argument - - - - - Abstract base class for operators that are able to reduce to a - constraint whether or not another syntactic element follows. - - - - - Operator used to test for the presence of a named Property - on an object and optionally apply further tests to the - value of that property. - - - - - Constructs a PropOperator for a particular named property - - - - - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. - - - - - - Gets the name of the property to which the operator applies - - - - - Operator that tests for the presence of a particular attribute - on a type and optionally applies further tests to the attribute. - - - - - Construct an AttributeOperator for a particular Type - - The Type of attribute tested - - - - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. - - - - - Operator that tests that an exception is thrown and - optionally applies further tests to the exception. - - - - - Construct a ThrowsOperator - - - - - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. - - - - - Abstract base class for all binary operators - - - - - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. - - - - - - Abstract method that produces a constraint by applying - the operator to its left and right constraint arguments. - - - - - Gets the left precedence of the operator - - - - - Gets the right precedence of the operator - - - - - Operator that requires both it's arguments to succeed - - - - - Construct an AndOperator - - - - - Apply the operator to produce an AndConstraint - - - - - Operator that requires at least one of it's arguments to succeed - - - - - Construct an OrOperator - - - - - Apply the operator to produce an OrConstraint - - - - - ContainsConstraint tests a whether a string contains a substring - or a collection contains an object. It postpones the decision of - which test to use until the type of the actual argument is known. - This allows testing whether a string is contained in a collection - or as a substring of another string using the same syntax. - - - - - Initializes a new instance of the class. - - The expected. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Flag the constraint to use the supplied IComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied Comparison object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IEqualityComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IEqualityComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to ignore case and return self. - - - - - Applies a delay to the match so that a match can be evaluated in the future. - - - - - Creates a new DelayedConstraint - - The inner constraint two decorate - The time interval after which the match is performed - If the value of is less than 0 - - - - Creates a new DelayedConstraint - - The inner constraint two decorate - The time interval after which the match is performed - The time interval used for polling - If the value of is less than 0 - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for if the base constraint fails, false if it succeeds - - - - Test whether the constraint is satisfied by a delegate - - The delegate whose value is to be tested - True for if the base constraint fails, false if it succeeds - - - - Test whether the constraint is satisfied by a given reference. - Overridden to wait for the specified delay period before - calling the base constraint with the dereferenced value. - - A reference to the value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a MessageWriter. - - The writer on which the actual value is displayed - - - - Returns the string representation of the constraint. - - - - - EmptyDirectoryConstraint is used to test that a directory is empty - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - EmptyConstraint tests a whether a string or collection is empty, - postponing the decision about which test is applied until the - type of the actual argument is known. - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - EqualConstraint is able to compare an actual value with the - expected value provided in its constructor. Two objects are - considered equal if both are null, or if both have the same - value. NUnit has special semantics for some object types. - - - - - If true, strings in error messages will be clipped - - - - - NUnitEqualityComparer used to test equality. - - - - - Initializes a new instance of the class. - - The expected value. - - - - Flag the constraint to use a tolerance when determining equality. - - Tolerance value to be used - Self. - - - - Flag the constraint to use the supplied IComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied Comparison object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IEqualityComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IEqualityComparer object. - - The IComparer object to use. - Self. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write a failure message. Overridden to provide custom - failure messages for EqualConstraint. - - The MessageWriter to write to - - - - Write description of this constraint - - The MessageWriter to write to - - - - Display the failure information for two collections that did not match. - - The MessageWriter on which to display - The expected collection. - The actual collection - The depth of this failure in a set of nested collections - - - - Displays a single line showing the types and sizes of the expected - and actual enumerations, collections or arrays. If both are identical, - the value is only shown once. - - The MessageWriter on which to display - The expected collection or array - The actual collection or array - The indentation level for the message line - - - - Displays a single line showing the point in the expected and actual - arrays at which the comparison failed. If the arrays have different - structures or dimensions, both values are shown. - - The MessageWriter on which to display - The expected array - The actual array - Index of the failure point in the underlying collections - The indentation level for the message line - - - - Display the failure information for two IEnumerables that did not match. - - The MessageWriter on which to display - The expected enumeration. - The actual enumeration - The depth of this failure in a set of nested collections - - - - Flag the constraint to ignore case and return self. - - - - - Flag the constraint to suppress string clipping - and return self. - - - - - Flag the constraint to compare arrays as collections - and return self. - - - - - Switches the .Within() modifier to interpret its tolerance as - a distance in representable values (see remarks). - - Self. - - Ulp stands for "unit in the last place" and describes the minimum - amount a given value can change. For any integers, an ulp is 1 whole - digit. For floating point values, the accuracy of which is better - for smaller numbers and worse for larger numbers, an ulp depends - on the size of the number. Using ulps for comparison of floating - point results instead of fixed tolerances is safer because it will - automatically compensate for the added inaccuracy of larger numbers. - - - - - Switches the .Within() modifier to interpret its tolerance as - a percentage that the actual values is allowed to deviate from - the expected value. - - Self - - - - Causes the tolerance to be interpreted as a TimeSpan in days. - - Self - - - - Causes the tolerance to be interpreted as a TimeSpan in hours. - - Self - - - - Causes the tolerance to be interpreted as a TimeSpan in minutes. - - Self - - - - Causes the tolerance to be interpreted as a TimeSpan in seconds. - - Self - - - - Causes the tolerance to be interpreted as a TimeSpan in milliseconds. - - Self - - - - Causes the tolerance to be interpreted as a TimeSpan in clock ticks. - - Self - - - - EqualityAdapter class handles all equality comparisons - that use an IEqualityComparer, IEqualityComparer<T> - or a ComparisonAdapter. - - - - - Compares two objects, returning true if they are equal - - - - - Returns true if the two objects can be compared by this adapter. - The base adapter cannot handle IEnumerables except for strings. - - - - - Returns an EqualityAdapter that wraps an IComparer. - - - - - Returns an EqualityAdapter that wraps an IEqualityComparer. - - - - - Returns an EqualityAdapter that wraps an IEqualityComparer<T>. - - - - - Returns an EqualityAdapter that wraps an IComparer<T>. - - - - - Returns an EqualityAdapter that wraps a Comparison<T>. - - - - - EqualityAdapter that wraps an IComparer. - - - - - Returns true if the two objects can be compared by this adapter. - Generic adapter requires objects of the specified type. - - - - - EqualityAdapter that wraps an IComparer. - - - - Helper routines for working with floating point numbers - - - The floating point comparison code is based on this excellent article: - http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm - - - "ULP" means Unit in the Last Place and in the context of this library refers to - the distance between two adjacent floating point numbers. IEEE floating point - numbers can only represent a finite subset of natural numbers, with greater - accuracy for smaller numbers and lower accuracy for very large numbers. - - - If a comparison is allowed "2 ulps" of deviation, that means the values are - allowed to deviate by up to 2 adjacent floating point values, which might be - as low as 0.0000001 for small numbers or as high as 10.0 for large numbers. - - - - - Compares two floating point values for equality - First floating point value to be compared - Second floating point value t be compared - - Maximum number of representable floating point values that are allowed to - be between the left and the right floating point values - - True if both numbers are equal or close to being equal - - - Floating point values can only represent a finite subset of natural numbers. - For example, the values 2.00000000 and 2.00000024 can be stored in a float, - but nothing inbetween them. - - - This comparison will count how many possible floating point values are between - the left and the right number. If the number of possible values between both - numbers is less than or equal to maxUlps, then the numbers are considered as - being equal. - - - Implementation partially follows the code outlined here: - http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ - - - - - Compares two double precision floating point values for equality - First double precision floating point value to be compared - Second double precision floating point value t be compared - - Maximum number of representable double precision floating point values that are - allowed to be between the left and the right double precision floating point values - - True if both numbers are equal or close to being equal - - - Double precision floating point values can only represent a limited series of - natural numbers. For example, the values 2.0000000000000000 and 2.0000000000000004 - can be stored in a double, but nothing inbetween them. - - - This comparison will count how many possible double precision floating point - values are between the left and the right number. If the number of possible - values between both numbers is less than or equal to maxUlps, then the numbers - are considered as being equal. - - - Implementation partially follows the code outlined here: - http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ - - - - - - Reinterprets the memory contents of a floating point value as an integer value - - - Floating point value whose memory contents to reinterpret - - - The memory contents of the floating point value interpreted as an integer - - - - - Reinterprets the memory contents of a double precision floating point - value as an integer value - - - Double precision floating point value whose memory contents to reinterpret - - - The memory contents of the double precision floating point value - interpreted as an integer - - - - - Reinterprets the memory contents of an integer as a floating point value - - Integer value whose memory contents to reinterpret - - The memory contents of the integer value interpreted as a floating point value - - - - - Reinterprets the memory contents of an integer value as a double precision - floating point value - - Integer whose memory contents to reinterpret - - The memory contents of the integer interpreted as a double precision - floating point value - - - - Union of a floating point variable and an integer - - - The union's value as a floating point variable - - - The union's value as an integer - - - The union's value as an unsigned integer - - - Union of a double precision floating point variable and a long - - - The union's value as a double precision floating point variable - - - The union's value as a long - - - The union's value as an unsigned long - - - - Tests whether a value is greater than the value supplied to its constructor - - - - - The value against which a comparison is to be made - - - - - Initializes a new instance of the class. - - The expected value. - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Tests whether a value is greater than or equal to the value supplied to its constructor - - - - - The value against which a comparison is to be made - - - - - Initializes a new instance of the class. - - The expected value. - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Tests whether a value is less than the value supplied to its constructor - - - - - The value against which a comparison is to be made - - - - - Initializes a new instance of the class. - - The expected value. - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Tests whether a value is less than or equal to the value supplied to its constructor - - - - - The value against which a comparison is to be made - - - - - Initializes a new instance of the class. - - The expected value. - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - MessageWriter is the abstract base for classes that write - constraint descriptions and messages in some form. The - class has separate methods for writing various components - of a message, allowing implementations to tailor the - presentation as needed. - - - - - Construct a MessageWriter given a culture - - - - - Method to write single line message with optional args, usually - written to precede the general failure message. - - The message to be written - Any arguments used in formatting the message - - - - Method to write single line message with optional args, usually - written to precede the general failure message, at a givel - indentation level. - - The indentation level of the message - The message to be written - Any arguments used in formatting the message - - - - Display Expected and Actual lines for a constraint. This - is called by MessageWriter's default implementation of - WriteMessageTo and provides the generic two-line display. - - The constraint that failed - - - - Display Expected and Actual lines for given values. This - method may be called by constraints that need more control over - the display of actual and expected values than is provided - by the default implementation. - - The expected value - The actual value causing the failure - - - - Display Expected and Actual lines for given values, including - a tolerance value on the Expected line. - - The expected value - The actual value causing the failure - The tolerance within which the test was made - - - - Display the expected and actual string values on separate lines. - If the mismatch parameter is >=0, an additional line is displayed - line containing a caret that points to the mismatch point. - - The expected string value - The actual string value - The point at which the strings don't match or -1 - If true, case is ignored in locating the point where the strings differ - If true, the strings should be clipped to fit the line - - - - Writes the text for a connector. - - The connector. - - - - Writes the text for a predicate. - - The predicate. - - - - Writes the text for an expected value. - - The expected value. - - - - Writes the text for a modifier - - The modifier. - - - - Writes the text for an actual value. - - The actual value. - - - - Writes the text for a generalized value. - - The value. - - - - Writes the text for a collection value, - starting at a particular point, to a max length - - The collection containing elements to write. - The starting point of the elements to write - The maximum number of elements to write - - - - Abstract method to get the max line length - - - - - Static methods used in creating messages - - - - - Static string used when strings are clipped - - - - - Returns the representation of a type as used in NUnitLite. - This is the same as Type.ToString() except for arrays, - which are displayed with their declared sizes. - - - - - - - Converts any control characters in a string - to their escaped representation. - - The string to be converted - The converted string - - - - Return the a string representation for a set of indices into an array - - Array of indices for which a string is needed - - - - Get an array of indices representing the point in a enumerable, - collection or array corresponding to a single int index into the - collection. - - The collection to which the indices apply - Index in the collection - Array of indices - - - - Clip a string to a given length, starting at a particular offset, returning the clipped - string with ellipses representing the removed parts - - The string to be clipped - The maximum permitted length of the result string - The point at which to start clipping - The clipped string - - - - Clip the expected and actual strings in a coordinated fashion, - so that they may be displayed together. - - - - - - - - - Shows the position two strings start to differ. Comparison - starts at the start index. - - The expected string - The actual string - The index in the strings at which comparison should start - Boolean indicating whether case should be ignored - -1 if no mismatch found, or the index where mismatch found - - - - The Numerics class contains common operations on numeric values. - - - - - Checks the type of the object, returning true if - the object is a numeric type. - - The object to check - true if the object is a numeric type - - - - Checks the type of the object, returning true if - the object is a floating point numeric type. - - The object to check - true if the object is a floating point numeric type - - - - Checks the type of the object, returning true if - the object is a fixed point numeric type. - - The object to check - true if the object is a fixed point numeric type - - - - Test two numeric values for equality, performing the usual numeric - conversions and using a provided or default tolerance. If the tolerance - provided is Empty, this method may set it to a default tolerance. - - The expected value - The actual value - A reference to the tolerance in effect - True if the values are equal - - - - Compare two numeric values, performing the usual numeric conversions. - - The expected value - The actual value - The relationship of the values to each other - - - - NUnitComparer encapsulates NUnit's default behavior - in comparing two objects. - - - - - Compares two objects - - - - - - - - Returns the default NUnitComparer. - - - - - Generic version of NUnitComparer - - - - - - Compare two objects of the same type - - - - - NUnitEqualityComparer encapsulates NUnit's handling of - equality tests between objects. - - - - - - - - - - Compares two objects for equality within a tolerance - - The first object to compare - The second object to compare - The tolerance to use in the comparison - - - - - If true, all string comparisons will ignore case - - - - - If true, arrays will be treated as collections, allowing - those of different dimensions to be compared - - - - - Comparison objects used in comparisons for some constraints. - - - - - Compares two objects for equality within a tolerance. - - - - - Helper method to compare two arrays - - - - - Method to compare two DirectoryInfo objects - - first directory to compare - second directory to compare - true if equivalent, false if not - - - - Returns the default NUnitEqualityComparer - - - - - Gets and sets a flag indicating whether case should - be ignored in determining equality. - - - - - Gets and sets a flag indicating that arrays should be - compared as collections, without regard to their shape. - - - - - Gets and sets an external comparer to be used to - test for equality. It is applied to members of - collections, in place of NUnit's own logic. - - - - - Gets the list of failure points for the last Match performed. - - - - - FailurePoint class represents one point of failure - in an equality test. - - - - - The location of the failure - - - - - The expected value - - - - - The actual value - - - - - Indicates whether the expected value is valid - - - - - Indicates whether the actual value is valid - - - - - PathConstraint serves as the abstract base of constraints - that operate on paths and provides several helper methods. - - - - - The expected path used in the constraint - - - - - The actual path being tested - - - - - Flag indicating whether a caseInsensitive comparison should be made - - - - - Construct a PathConstraint for a give expected path - - The expected path - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Returns true if the expected path and actual path match - - - - - Returns the string representation of this constraint - - - - - Canonicalize the provided path - - - The path in standardized form - - - - Test whether two paths are the same - - The first path - The second path - Indicates whether case should be ignored - - - - - Test whether one path is under another path - - The first path - supposed to be the parent path - The second path - supposed to be the child path - Indicates whether case should be ignored - - - - - Test whether one path is the same as or under another path - - The first path - supposed to be the parent path - The second path - supposed to be the child path - - - - - Modifies the current instance to be case-insensitve - and returns it. - - - - - Modifies the current instance to be case-sensitve - and returns it. - - - - - Summary description for SamePathConstraint. - - - - - Initializes a new instance of the class. - - The expected path - - - - Test whether the constraint is satisfied by a given value - - The expected path - The actual path - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - SubPathConstraint tests that the actual path is under the expected path - - - - - Initializes a new instance of the class. - - The expected path - - - - Test whether the constraint is satisfied by a given value - - The expected path - The actual path - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - SamePathOrUnderConstraint tests that one path is under another - - - - - Initializes a new instance of the class. - - The expected path - - - - Test whether the constraint is satisfied by a given value - - The expected path - The actual path - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Predicate constraint wraps a Predicate in a constraint, - returning success if the predicate is true. - - - - - Construct a PredicateConstraint from a predicate - - - - - Determines whether the predicate succeeds when applied - to the actual value. - - - - - Writes the description to a MessageWriter - - - - - NotConstraint negates the effect of some other constraint - - - - - Initializes a new instance of the class. - - The base constraint to be negated. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for if the base constraint fails, false if it succeeds - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a MessageWriter. - - The writer on which the actual value is displayed - - - - AllItemsConstraint applies another constraint to each - item in a collection, succeeding if they all succeed. - - - - - Construct an AllItemsConstraint on top of an existing constraint - - - - - - Apply the item constraint to each item in the collection, - failing if any item fails. - - - - - - - Write a description of this constraint to a MessageWriter - - - - - - SomeItemsConstraint applies another constraint to each - item in a collection, succeeding if any of them succeeds. - - - - - Construct a SomeItemsConstraint on top of an existing constraint - - - - - - Apply the item constraint to each item in the collection, - succeeding if any item succeeds. - - - - - - - Write a description of this constraint to a MessageWriter - - - - - - NoItemConstraint applies another constraint to each - item in a collection, failing if any of them succeeds. - - - - - Construct a NoItemConstraint on top of an existing constraint - - - - - - Apply the item constraint to each item in the collection, - failing if any item fails. - - - - - - - Write a description of this constraint to a MessageWriter - - - - - - ExactCoutConstraint applies another constraint to each - item in a collection, succeeding only if a specified - number of items succeed. - - - - - Construct an ExactCountConstraint on top of an existing constraint - - - - - - - Apply the item constraint to each item in the collection, - succeeding only if the expected number of items pass. - - - - - - - Write a description of this constraint to a MessageWriter - - - - - - PropertyExistsConstraint tests that a named property - exists on the object provided through Match. - - Originally, PropertyConstraint provided this feature - in addition to making optional tests on the vaue - of the property. The two constraints are now separate. - - - - - Initializes a new instance of the class. - - The name of the property. - - - - Test whether the property exists for a given object - - The object to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. - - The writer on which the actual value is displayed - - - - Returns the string representation of the constraint. - - - - - - PropertyConstraint extracts a named property and uses - its value as the actual value for a chained constraint. - - - - - Initializes a new instance of the class. - - The name. - The constraint to apply to the property. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - Returns the string representation of the constraint. - - - - - - RangeConstraint tests whethe two values are within a - specified range. - - - - - Initializes a new instance of the class. - - From. - To. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - ResolvableConstraintExpression is used to represent a compound - constraint being constructed at a point where the last operator - may either terminate the expression or may have additional - qualifying constraints added to it. - - It is used, for example, for a Property element or for - an Exception element, either of which may be optionally - followed by constraints that apply to the property or - exception. - - - - - Create a new instance of ResolvableConstraintExpression - - - - - Create a new instance of ResolvableConstraintExpression, - passing in a pre-populated ConstraintBuilder. - - - - - Resolve the current expression to a Constraint - - - - - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. - - - - - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. - - - - - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. - - - - - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. - - - - - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. - - - - - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. - - - - - This operator creates a constraint that is satisfied if the - argument constraint is not satisfied. - - - - - Appends an And Operator to the expression - - - - - Appends an Or operator to the expression. - - - - - ReusableConstraint wraps a resolved constraint so that it - may be saved and reused as needed. - - - - - Construct a ReusableConstraint - - The constraint or expression to be reused - - - - Conversion operator from a normal constraint to a ReusableConstraint. - - The original constraint to be wrapped as a ReusableConstraint - - - - - Returns the string representation of the constraint. - - A string representing the constraint - - - - Resolves the ReusableConstraint by returning the constraint - that it originally wrapped. - - A resolved constraint - - - - SameAsConstraint tests whether an object is identical to - the object passed to its constructor - - - - - Initializes a new instance of the class. - - The expected object. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - BinarySerializableConstraint tests whether - an object is serializable in binary format. - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - Returns the string representation - - - - - BinarySerializableConstraint tests whether - an object is serializable in binary format. - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - Returns the string representation of this constraint - - - - - StringConstraint is the abstract base for constraints - that operate on strings. It supports the IgnoreCase - modifier for string operations. - - - - - The expected value - - - - - Indicates whether tests should be case-insensitive - - - - - Constructs a StringConstraint given an expected value - - The expected value - - - - Modify the constraint to ignore case in matching. - - - - - EmptyStringConstraint tests whether a string is empty. - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - NullEmptyStringConstraint tests whether a string is either null or empty. - - - - - Constructs a new NullOrEmptyStringConstraint - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - SubstringConstraint can test whether a string contains - the expected substring. - - - - - Initializes a new instance of the class. - - The expected. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - StartsWithConstraint can test whether a string starts - with an expected substring. - - - - - Initializes a new instance of the class. - - The expected string - - - - Test whether the constraint is matched by the actual value. - This is a template method, which calls the IsMatch method - of the derived class. - - - - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - EndsWithConstraint can test whether a string ends - with an expected substring. - - - - - Initializes a new instance of the class. - - The expected string - - - - Test whether the constraint is matched by the actual value. - This is a template method, which calls the IsMatch method - of the derived class. - - - - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - RegexConstraint can test whether a string matches - the pattern provided. - - - - - Initializes a new instance of the class. - - The pattern. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - ThrowsConstraint is used to test the exception thrown by - a delegate by applying a constraint to it. - - - - - Initializes a new instance of the class, - using a constraint to be applied to the exception. - - A constraint to apply to the caught exception. - - - - Executes the code of the delegate and captures any exception. - If a non-null base constraint was provided, it applies that - constraint to the exception. - - A delegate representing the code to be tested - True if an exception is thrown and the constraint succeeds, otherwise false - - - - Converts an ActualValueDelegate to a TestDelegate - before calling the primary overload. - - - - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - Returns the string representation of this constraint - - - - - Get the actual exception thrown - used by Assert.Throws. - - - - - ThrowsNothingConstraint tests that a delegate does not - throw an exception. - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True if no exception is thrown, otherwise false - - - - Converts an ActualValueDelegate to a TestDelegate - before calling the primary overload. - - - - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - Modes in which the tolerance value for a comparison can - be interpreted. - - - - - The tolerance was created with a value, without specifying - how the value would be used. This is used to prevent setting - the mode more than once and is generally changed to Linear - upon execution of the test. - - - - - The tolerance is used as a numeric range within which - two compared values are considered to be equal. - - - - - Interprets the tolerance as the percentage by which - the two compared values my deviate from each other. - - - - - Compares two values based in their distance in - representable numbers. - - - - - The Tolerance class generalizes the notion of a tolerance - within which an equality test succeeds. Normally, it is - used with numeric types, but it can be used with any - type that supports taking a difference between two - objects and comparing that difference to a value. - - - - - Constructs a linear tolerance of a specdified amount - - - - - Constructs a tolerance given an amount and ToleranceMode - - - - - Tests that the current Tolerance is linear with a - numeric value, throwing an exception if it is not. - - - - - Returns an empty Tolerance object, equivalent to - specifying no tolerance. In most cases, it results - in an exact match but for floats and doubles a - default tolerance may be used. - - - - - Returns a zero Tolerance object, equivalent to - specifying an exact match. - - - - - Gets the ToleranceMode for the current Tolerance - - - - - Gets the value of the current Tolerance instance. - - - - - Returns a new tolerance, using the current amount as a percentage. - - - - - Returns a new tolerance, using the current amount in Ulps. - - - - - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of days. - - - - - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of hours. - - - - - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of minutes. - - - - - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of seconds. - - - - - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of milliseconds. - - - - - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of clock ticks. - - - - - Returns true if the current tolerance is empty. - - - - - TypeConstraint is the abstract base for constraints - that take a Type as their expected value. - - - - - The expected Type used by the constraint - - - - - Construct a TypeConstraint for a given Type - - - - - - Write the actual value for a failing constraint test to a - MessageWriter. TypeConstraints override this method to write - the name of the type. - - The writer on which the actual value is displayed - - - - ExactTypeConstraint is used to test that an object - is of the exact type provided in the constructor - - - - - Construct an ExactTypeConstraint for a given Type - - The expected Type. - - - - Test that an object is of the exact type specified - - The actual value. - True if the tested object is of the exact type provided, otherwise false. - - - - Write the description of this constraint to a MessageWriter - - The MessageWriter to use - - - - ExceptionTypeConstraint is a special version of ExactTypeConstraint - used to provided detailed info about the exception thrown in - an error message. - - - - - Constructs an ExceptionTypeConstraint - - - - - Write the actual value for a failing constraint test to a - MessageWriter. Overriden to write additional information - in the case of an Exception. - - The MessageWriter to use - - - - InstanceOfTypeConstraint is used to test that an object - is of the same type provided or derived from it. - - - - - Construct an InstanceOfTypeConstraint for the type provided - - The expected Type - - - - Test whether an object is of the specified type or a derived type - - The object to be tested - True if the object is of the provided type or derives from it, otherwise false. - - - - Write a description of this constraint to a MessageWriter - - The MessageWriter to use - - - - AssignableFromConstraint is used to test that an object - can be assigned from a given Type. - - - - - Construct an AssignableFromConstraint for the type provided - - - - - - Test whether an object can be assigned from the specified type - - The object to be tested - True if the object can be assigned a value of the expected Type, otherwise false. - - - - Write a description of this constraint to a MessageWriter - - The MessageWriter to use - - - - AssignableToConstraint is used to test that an object - can be assigned to a given Type. - - - - - Construct an AssignableToConstraint for the type provided - - - - - - Test whether an object can be assigned to the specified type - - The object to be tested - True if the object can be assigned a value of the expected Type, otherwise false. - - - - Write a description of this constraint to a MessageWriter - - The MessageWriter to use - - - - Thrown when an assertion failed. - - - - - The error message that explains - the reason for the exception - - - The error message that explains - the reason for the exception - The exception that caused the - current exception - - - - Serialization Constructor - - - - - Thrown when an assertion failed. - - - - - - - The error message that explains - the reason for the exception - The exception that caused the - current exception - - - - Serialization Constructor - - - - - Thrown when a test executes inconclusively. - - - - - The error message that explains - the reason for the exception - - - The error message that explains - the reason for the exception - The exception that caused the - current exception - - - - Serialization Constructor - - - - - Thrown when an assertion failed. - - - - - - - The error message that explains - the reason for the exception - The exception that caused the - current exception - - - - Serialization Constructor - - - - - - - - - - - Compares two objects of a given Type for equality within a tolerance - - The first object to compare - The second object to compare - The tolerance to use in the comparison - - - - - The different targets a test action attribute can be applied to - - - - - Default target, which is determined by where the action attribute is attached - - - - - Target a individual test case - - - - - Target a suite of test cases - - - - - Delegate used by tests that execute code and - capture any thrown exception. - - - - - The Assert class contains a collection of static methods that - implement the most common assertions used in NUnit. - - - - - We don't actually want any instances of this object, but some people - like to inherit from it to add other static methods. Hence, the - protected constructor disallows any instances of this object. - - - - - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. - - - - - - - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. - - - - - - - Helper for Assert.AreEqual(double expected, double actual, ...) - allowing code generation to work consistently. - - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Throws a with the message and arguments - that are passed in. This allows a test to be cut short, with a result - of success returned to NUnit. - - The message to initialize the with. - Arguments to be used in formatting the message - - - - Throws a with the message and arguments - that are passed in. This allows a test to be cut short, with a result - of success returned to NUnit. - - The message to initialize the with. - - - - Throws a with the message and arguments - that are passed in. This allows a test to be cut short, with a result - of success returned to NUnit. - - - - - Throws an with the message and arguments - that are passed in. This is used by the other Assert functions. - - The message to initialize the with. - Arguments to be used in formatting the message - - - - Throws an with the message that is - passed in. This is used by the other Assert functions. - - The message to initialize the with. - - - - Throws an . - This is used by the other Assert functions. - - - - - Throws an with the message and arguments - that are passed in. This causes the test to be reported as ignored. - - The message to initialize the with. - Arguments to be used in formatting the message - - - - Throws an with the message that is - passed in. This causes the test to be reported as ignored. - - The message to initialize the with. - - - - Throws an . - This causes the test to be reported as ignored. - - - - - Throws an with the message and arguments - that are passed in. This causes the test to be reported as inconclusive. - - The message to initialize the with. - Arguments to be used in formatting the message - - - - Throws an with the message that is - passed in. This causes the test to be reported as inconclusive. - - The message to initialize the with. - - - - Throws an . - This causes the test to be reported as Inconclusive. - - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - The message that will be displayed on failure - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - An ActualValueDelegate returning the value to be tested - A Constraint expression to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display if the condition is false - Arguments to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display if the condition is false - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - - - - Asserts that the code represented by a delegate throws an exception - that satisfies the constraint provided. - - A TestDelegate to be executed - A ThrowsConstraint used in the test - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - Used as a synonym for That in rare cases where a private setter - causes a Visual Basic compilation error. - - A Constraint to be applied - The actual value to test - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - Used as a synonym for That in rare cases where a private setter - causes a Visual Basic compilation error. - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - Used as a synonym for That in rare cases where a private setter - causes a Visual Basic compilation error. - - - This method is provided for use by VB developers needing to test - the value of properties with private setters. - - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate throws a particular exception when called. - - A constraint to be satisfied by the exception - A TestSnippet delegate - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate throws a particular exception when called. - - A constraint to be satisfied by the exception - A TestSnippet delegate - The message that will be displayed on failure - - - - Verifies that a delegate throws a particular exception when called. - - A constraint to be satisfied by the exception - A TestSnippet delegate - - - - Verifies that a delegate throws a particular exception when called. - - The exception Type expected - A TestSnippet delegate - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate throws a particular exception when called. - - The exception Type expected - A TestSnippet delegate - The message that will be displayed on failure - - - - Verifies that a delegate throws a particular exception when called. - - The exception Type expected - A TestSnippet delegate - - - - Verifies that a delegate throws a particular exception when called. - - Type of the expected exception - A TestSnippet delegate - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate throws a particular exception when called. - - Type of the expected exception - A TestSnippet delegate - The message that will be displayed on failure - - - - Verifies that a delegate throws a particular exception when called. - - Type of the expected exception - A TestSnippet delegate - - - - Verifies that a delegate throws an exception when called - and returns it. - - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate throws an exception when called - and returns it. - - A TestDelegate - The message that will be displayed on failure - - - - Verifies that a delegate throws an exception when called - and returns it. - - A TestDelegate - - - - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. - - The expected Exception Type - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. - - The expected Exception Type - A TestDelegate - The message that will be displayed on failure - - - - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. - - The expected Exception Type - A TestDelegate - - - - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. - - The expected Exception Type - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. - - The expected Exception Type - A TestDelegate - The message that will be displayed on failure - - - - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. - - The expected Exception Type - A TestDelegate - - - - Verifies that a delegate does not throw an exception - - A TestSnippet delegate - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate does not throw an exception. - - A TestSnippet delegate - The message that will be displayed on failure - - - - Verifies that a delegate does not throw an exception. - - A TestSnippet delegate - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display in case of failure - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display in case of failure - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure - - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure - - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - - - - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - - - - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. - - The object that is to be tested - - - - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - - - - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. - - The object that is to be tested - - - - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - - - - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. - - The object that is to be tested - - - - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - - - - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. - - The object that is to be tested - - - - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. - - The value that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. - - The value that is to be tested - The message to display in case of failure - - - - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. - - The value that is to be tested - - - - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. - - The value that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. - - The value that is to be tested - The message to display in case of failure - - - - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. - - The value that is to be tested - - - - Assert that a string is empty - that is equal to string.Empty - - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Assert that a string is empty - that is equal to string.Empty - - The string to be tested - The message to display in case of failure - - - - Assert that a string is empty - that is equal to string.Empty - - The string to be tested - - - - Assert that an array, list or other collection is empty - - An array, list or other collection implementing ICollection - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Assert that an array, list or other collection is empty - - An array, list or other collection implementing ICollection - The message to display in case of failure - - - - Assert that an array, list or other collection is empty - - An array, list or other collection implementing ICollection - - - - Assert that a string is not empty - that is not equal to string.Empty - - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Assert that a string is not empty - that is not equal to string.Empty - - The string to be tested - The message to display in case of failure - - - - Assert that a string is not empty - that is not equal to string.Empty - - The string to be tested - - - - Assert that an array, list or other collection is not empty - - An array, list or other collection implementing ICollection - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Assert that an array, list or other collection is not empty - - An array, list or other collection implementing ICollection - The message to display in case of failure - - - - Assert that an array, list or other collection is not empty - - An array, list or other collection implementing ICollection - - - - Assert that a string is either null or equal to string.Empty - - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Assert that a string is either null or equal to string.Empty - - The string to be tested - The message to display in case of failure - - - - Assert that a string is either null or equal to string.Empty - - The string to be tested - - - - Assert that a string is not null or empty - - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Assert that a string is not null or empty - - The string to be tested - The message to display in case of failure - - - - Assert that a string is not null or empty - - The string to be tested - - - - Asserts that an object may be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object may be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - - - - Asserts that an object may be assigned a value of a given Type. - - The expected Type. - The object under examination - - - - Asserts that an object may be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object may be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - - - - Asserts that an object may be assigned a value of a given Type. - - The expected Type. - The object under examination - - - - Asserts that an object may not be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object may not be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - - - - Asserts that an object may not be assigned a value of a given Type. - - The expected Type. - The object under examination - - - - Asserts that an object may not be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object may not be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - - - - Asserts that an object may not be assigned a value of a given Type. - - The expected Type. - The object under examination - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. - - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. - - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - - - - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. - - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - - - - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. - - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. - - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - - - - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. - - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - - - - Verifies that two objects are equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are not equal an is thrown. - - The value that is expected - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two objects are equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are not equal an is thrown. - - The value that is expected - The actual value - The message to display in case of failure - - - - Verifies that two objects are equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are not equal an is thrown. - - The value that is expected - The actual value - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two objects are not equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are equal an is thrown. - - The value that is expected - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two objects are not equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are equal an is thrown. - - The value that is expected - The actual value - The message to display in case of failure - - - - Verifies that two objects are not equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are equal an is thrown. - - The value that is expected - The actual value - - - - Asserts that two objects refer to the same object. If they - are not the same an is thrown. - - The expected object - The actual object - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that two objects refer to the same object. If they - are not the same an is thrown. - - The expected object - The actual object - The message to display in case of failure - - - - Asserts that two objects refer to the same object. If they - are not the same an is thrown. - - The expected object - The actual object - - - - Asserts that two objects do not refer to the same object. If they - are the same an is thrown. - - The expected object - The actual object - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that two objects do not refer to the same object. If they - are the same an is thrown. - - The expected object - The actual object - The message to display in case of failure - - - - Asserts that two objects do not refer to the same object. If they - are the same an is thrown. - - The expected object - The actual object - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Asserts that an object is contained in a list. - - The expected object - The list to be examined - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object is contained in a list. - - The expected object - The list to be examined - The message to display in case of failure - - - - Asserts that an object is contained in a list. - - The expected object - The list to be examined - - - - Gets the number of assertions executed so far and - resets the counter to zero. - - - - - AssertionHelper is an optional base class for user tests, - allowing the use of shorter names for constraints and - asserts and avoiding conflict with the definition of - , from which it inherits much of its - behavior, in certain mock object frameworks. - - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. Works - identically to Assert.That - - A Constraint to be applied - The actual value to test - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. Works - identically to Assert.That. - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. Works - identically to Assert.That - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - The message that will be displayed on failure - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - An ActualValueDelegate returning the value to be tested - A Constraint expression to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . Works Identically to Assert.That. - - The evaluated condition - The message to display if the condition is false - Arguments to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . Works Identically to Assert.That. - - The evaluated condition - The message to display if the condition is false - - - - Asserts that a condition is true. If the condition is false the method throws - an . Works Identically Assert.That. - - The evaluated condition - - - - Asserts that the code represented by a delegate throws an exception - that satisfies the constraint provided. - - A TestDelegate to be executed - A ThrowsConstraint used in the test - - - - Returns a ListMapper based on a collection. - - The original collection - - - - - Provides static methods to express the assumptions - that must be met for a test to give a meaningful - result. If an assumption is not met, the test - should produce an inconclusive result. - - - - - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. - - - - - - - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. - - - - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - The actual value to test - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - The message that will be displayed on failure - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - An ActualValueDelegate returning the value to be tested - A Constraint expression to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - The actual value to test - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display if the condition is false - Arguments to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display if the condition is false - - - - Asserts that a condition is true. If the condition is false the - method throws an . - - The evaluated condition - - - - Asserts that the code represented by a delegate throws an exception - that satisfies the constraint provided. - - A TestDelegate to be executed - A ThrowsConstraint used in the test - - - - A set of Assert methods operationg on one or more collections - - - - - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. - - - - - - - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. - - - - - - - Asserts that all items contained in collection are of the type specified by expectedType. - - IEnumerable containing objects to be considered - System.Type that all objects in collection must be instances of - - - - Asserts that all items contained in collection are of the type specified by expectedType. - - IEnumerable containing objects to be considered - System.Type that all objects in collection must be instances of - The message that will be displayed on failure - - - - Asserts that all items contained in collection are of the type specified by expectedType. - - IEnumerable containing objects to be considered - System.Type that all objects in collection must be instances of - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that all items contained in collection are not equal to null. - - IEnumerable containing objects to be considered - - - - Asserts that all items contained in collection are not equal to null. - - IEnumerable containing objects to be considered - The message that will be displayed on failure - - - - Asserts that all items contained in collection are not equal to null. - - IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Ensures that every object contained in collection exists within the collection - once and only once. - - IEnumerable of objects to be considered - - - - Ensures that every object contained in collection exists within the collection - once and only once. - - IEnumerable of objects to be considered - The message that will be displayed on failure - - - - Ensures that every object contained in collection exists within the collection - once and only once. - - IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - - - - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - If comparer is not null then it will be used to compare the objects. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - - - - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - - - - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - If comparer is not null then it will be used to compare the objects. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure - - - - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - If comparer is not null then it will be used to compare the objects. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - - - - Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - - - - Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that expected and actual are not exactly equal. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - - - - Asserts that expected and actual are not exactly equal. - If comparer is not null then it will be used to compare the objects. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - - - - Asserts that expected and actual are not exactly equal. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - - - - Asserts that expected and actual are not exactly equal. - If comparer is not null then it will be used to compare the objects. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure - - - - Asserts that expected and actual are not exactly equal. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that expected and actual are not exactly equal. - If comparer is not null then it will be used to compare the objects. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that expected and actual are not equivalent. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - - - - Asserts that expected and actual are not equivalent. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - - - - Asserts that expected and actual are not equivalent. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that collection contains actual as an item. - - IEnumerable of objects to be considered - Object to be found within collection - - - - Asserts that collection contains actual as an item. - - IEnumerable of objects to be considered - Object to be found within collection - The message that will be displayed on failure - - - - Asserts that collection contains actual as an item. - - IEnumerable of objects to be considered - Object to be found within collection - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that collection does not contain actual as an item. - - IEnumerable of objects to be considered - Object that cannot exist within collection - - - - Asserts that collection does not contain actual as an item. - - IEnumerable of objects to be considered - Object that cannot exist within collection - The message that will be displayed on failure - - - - Asserts that collection does not contain actual as an item. - - IEnumerable of objects to be considered - Object that cannot exist within collection - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that superset is not a subject of subset. - - The IEnumerable superset to be considered - The IEnumerable subset to be considered - - - - Asserts that superset is not a subject of subset. - - The IEnumerable superset to be considered - The IEnumerable subset to be considered - The message that will be displayed on failure - - - - Asserts that superset is not a subject of subset. - - The IEnumerable superset to be considered - The IEnumerable subset to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that superset is a subset of subset. - - The IEnumerable superset to be considered - The IEnumerable subset to be considered - - - - Asserts that superset is a subset of subset. - - The IEnumerable superset to be considered - The IEnumerable subset to be considered - The message that will be displayed on failure - - - - Asserts that superset is a subset of subset. - - The IEnumerable superset to be considered - The IEnumerable subset to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Assert that an array, list or other collection is empty - - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - Arguments to be used in formatting the message - - - - Assert that an array, list or other collection is empty - - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - - - - Assert that an array,list or other collection is empty - - An array, list or other collection implementing IEnumerable - - - - Assert that an array, list or other collection is empty - - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - Arguments to be used in formatting the message - - - - Assert that an array, list or other collection is empty - - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - - - - Assert that an array,list or other collection is empty - - An array, list or other collection implementing IEnumerable - - - - Assert that an array, list or other collection is ordered - - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - Arguments to be used in formatting the message - - - - Assert that an array, list or other collection is ordered - - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - - - - Assert that an array, list or other collection is ordered - - An array, list or other collection implementing IEnumerable - - - - Assert that an array, list or other collection is ordered - - An array, list or other collection implementing IEnumerable - A custom comparer to perform the comparisons - The message to be displayed on failure - Arguments to be used in formatting the message - - - - Assert that an array, list or other collection is ordered - - An array, list or other collection implementing IEnumerable - A custom comparer to perform the comparisons - The message to be displayed on failure - - - - Assert that an array, list or other collection is ordered - - An array, list or other collection implementing IEnumerable - A custom comparer to perform the comparisons - - - - Static helper class used in the constraint-based syntax - - - - - Creates a new SubstringConstraint - - The value of the substring - A SubstringConstraint - - - - Creates a new CollectionContainsConstraint. - - The item that should be found. - A new CollectionContainsConstraint - - - - Summary description for DirectoryAssert - - - - - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. - - - - - - - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. - - - - - - - We don't actually want any instances of this object, but some people - like to inherit from it to add other static methods. Hence, the - protected constructor disallows any instances of this object. - - - - - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A directory containing the value that is expected - A directory containing the actual value - The message to display if directories are not equal - Arguments to be used in formatting the message - - - - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A directory containing the value that is expected - A directory containing the actual value - The message to display if directories are not equal - - - - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A directory containing the value that is expected - A directory containing the actual value - - - - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A directory path string containing the value that is expected - A directory path string containing the actual value - The message to display if directories are not equal - Arguments to be used in formatting the message - - - - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A directory path string containing the value that is expected - A directory path string containing the actual value - The message to display if directories are not equal - - - - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A directory path string containing the value that is expected - A directory path string containing the actual value - - - - Asserts that two directories are not equal. If they are equal - an is thrown. - - A directory containing the value that is expected - A directory containing the actual value - The message to display if directories are not equal - Arguments to be used in formatting the message - - - - Asserts that two directories are not equal. If they are equal - an is thrown. - - A directory containing the value that is expected - A directory containing the actual value - The message to display if directories are not equal - - - - Asserts that two directories are not equal. If they are equal - an is thrown. - - A directory containing the value that is expected - A directory containing the actual value - - - - Asserts that two directories are not equal. If they are equal - an is thrown. - - A directory path string containing the value that is expected - A directory path string containing the actual value - The message to display if directories are equal - Arguments to be used in formatting the message - - - - Asserts that two directories are not equal. If they are equal - an is thrown. - - A directory path string containing the value that is expected - A directory path string containing the actual value - The message to display if directories are equal - - - - Asserts that two directories are not equal. If they are equal - an is thrown. - - A directory path string containing the value that is expected - A directory path string containing the actual value - - - - Asserts that the directory is empty. If it is not empty - an is thrown. - - A directory to search - The message to display if directories are not equal - Arguments to be used in formatting the message - - - - Asserts that the directory is empty. If it is not empty - an is thrown. - - A directory to search - The message to display if directories are not equal - - - - Asserts that the directory is empty. If it is not empty - an is thrown. - - A directory to search - - - - Asserts that the directory is empty. If it is not empty - an is thrown. - - A directory to search - The message to display if directories are not equal - Arguments to be used in formatting the message - - - - Asserts that the directory is empty. If it is not empty - an is thrown. - - A directory to search - The message to display if directories are not equal - - - - Asserts that the directory is empty. If it is not empty - an is thrown. - - A directory to search - - - - Asserts that the directory is not empty. If it is empty - an is thrown. - - A directory to search - The message to display if directories are not equal - Arguments to be used in formatting the message - - - - Asserts that the directory is not empty. If it is empty - an is thrown. - - A directory to search - The message to display if directories are not equal - - - - Asserts that the directory is not empty. If it is empty - an is thrown. - - A directory to search - - - - Asserts that the directory is not empty. If it is empty - an is thrown. - - A directory to search - The message to display if directories are not equal - Arguments to be used in formatting the message - - - - Asserts that the directory is not empty. If it is empty - an is thrown. - - A directory to search - The message to display if directories are not equal - - - - Asserts that the directory is not empty. If it is empty - an is thrown. - - A directory to search - - - - Asserts that path contains actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - Arguments to be used in formatting the message - - - - Asserts that path contains actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - - - - Asserts that path contains actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - - - - Asserts that path contains actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - Arguments to be used in formatting the message - - - - Asserts that path contains actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - - - - Asserts that path contains actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - - - - Asserts that path does not contain actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - Arguments to be used in formatting the message - - - - Asserts that path does not contain actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - - - - Asserts that path does not contain actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - - - - Asserts that path does not contain actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - Arguments to be used in formatting the message - - - - Asserts that path does not contain actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - - - - Asserts that path does not contain actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - - - - Summary description for FileAssert. - - - - - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. - - - - - - - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. - - - - - - - We don't actually want any instances of this object, but some people - like to inherit from it to add other static methods. Hence, the - protected constructor disallows any instances of this object. - - - - - Verifies that two Streams are equal. Two Streams are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - The expected Stream - The actual Stream - The message to display if Streams are not equal - Arguments to be used in formatting the message - - - - Verifies that two Streams are equal. Two Streams are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - The expected Stream - The actual Stream - The message to display if objects are not equal - - - - Verifies that two Streams are equal. Two Streams are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - The expected Stream - The actual Stream - - - - Verifies that two files are equal. Two files are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A file containing the value that is expected - A file containing the actual value - The message to display if Streams are not equal - Arguments to be used in formatting the message - - - - Verifies that two files are equal. Two files are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A file containing the value that is expected - A file containing the actual value - The message to display if objects are not equal - - - - Verifies that two files are equal. Two files are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A file containing the value that is expected - A file containing the actual value - - - - Verifies that two files are equal. Two files are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - The path to a file containing the value that is expected - The path to a file containing the actual value - The message to display if Streams are not equal - Arguments to be used in formatting the message - - - - Verifies that two files are equal. Two files are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - The path to a file containing the value that is expected - The path to a file containing the actual value - The message to display if objects are not equal - - - - Verifies that two files are equal. Two files are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - The path to a file containing the value that is expected - The path to a file containing the actual value - - - - Asserts that two Streams are not equal. If they are equal - an is thrown. - - The expected Stream - The actual Stream - The message to be displayed when the two Stream are the same. - Arguments to be used in formatting the message - - - - Asserts that two Streams are not equal. If they are equal - an is thrown. - - The expected Stream - The actual Stream - The message to be displayed when the Streams are the same. - - - - Asserts that two Streams are not equal. If they are equal - an is thrown. - - The expected Stream - The actual Stream - - - - Asserts that two files are not equal. If they are equal - an is thrown. - - A file containing the value that is expected - A file containing the actual value - The message to display if Streams are not equal - Arguments to be used in formatting the message - - - - Asserts that two files are not equal. If they are equal - an is thrown. - - A file containing the value that is expected - A file containing the actual value - The message to display if objects are not equal - - - - Asserts that two files are not equal. If they are equal - an is thrown. - - A file containing the value that is expected - A file containing the actual value - - - - Asserts that two files are not equal. If they are equal - an is thrown. - - The path to a file containing the value that is expected - The path to a file containing the actual value - The message to display if Streams are not equal - Arguments to be used in formatting the message - - - - Asserts that two files are not equal. If they are equal - an is thrown. - - The path to a file containing the value that is expected - The path to a file containing the actual value - The message to display if objects are not equal - - - - Asserts that two files are not equal. If they are equal - an is thrown. - - The path to a file containing the value that is expected - The path to a file containing the actual value - - - - GlobalSettings is a place for setting default values used - by the framework in performing asserts. - - - - - Default tolerance for floating point equality - - - - - Helper class with properties and methods that supply - a number of constraints used in Asserts. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding only if a specified number of them succeed. - - - - - Returns a new PropertyConstraintExpression, which will either - test for the existence of the named property on the object - being tested or apply any following constraint to that property. - - - - - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. - - - - - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. - - - - - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. - - - - - Returns a ConstraintExpression that negates any - following constraint. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if at least one of them succeeds. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them fail. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Length property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Count property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Message property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the InnerException property of the object being tested. - - - - - Interface implemented by a user fixture in order to - validate any expected exceptions. It is only called - for test methods marked with the ExpectedException - attribute. - - - - - Method to handle an expected exception - - The exception to be handled - - - - Helper class with properties and methods that supply - a number of constraints used in Asserts. - - - - - Returns a constraint that tests two items for equality - - - - - Returns a constraint that tests that two references are the same object - - - - - Returns a constraint that tests whether the - actual value is greater than the suppled argument - - - - - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument - - - - - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. - - - - - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is a collection containing the same elements as the - collection supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is a subset of the collection supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. - - - - - Returns a constraint that tests whether the path provided - is the same as an expected path after canonicalization. - - - - - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. - - - - - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. - - - - - Returns a constraint that tests whether the actual value falls - within a specified range. - - - - - Returns a ConstraintExpression that negates any - following constraint. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. - - - - - Returns a constraint that tests for null - - - - - Returns a constraint that tests for True - - - - - Returns a constraint that tests for False - - - - - Returns a constraint that tests for a positive value - - - - - Returns a constraint that tests for a negative value - - - - - Returns a constraint that tests for NaN - - - - - Returns a constraint that tests for empty - - - - - Returns a constraint that tests whether a collection - contains all unique items. - - - - - Returns a constraint that tests whether an object graph is serializable in binary format. - - - - - Returns a constraint that tests whether an object graph is serializable in xml format. - - - - - Returns a constraint that tests whether a collection is ordered - - - - - The Iz class is a synonym for Is intended for use in VB, - which regards Is as a keyword. - - - - - The List class is a helper class with properties and methods - that supply a number of constraints used with lists and collections. - - - - - List.Map returns a ListMapper, which can be used to map - the original collection to another collection. - - - - - - - ListMapper is used to transform a collection used as an actual argument - producing another collection to be used in the assertion. - - - - - Construct a ListMapper based on a collection - - The collection to be transformed - - - - Produces a collection containing all the values of a property - - The collection of property values - - - - - Randomizer returns a set of random values in a repeatable - way, to allow re-running of tests if necessary. - - - - - Get a randomizer for a particular member, returning - one that has already been created if it exists. - This ensures that the same values are generated - each time the tests are reloaded. - - - - - Get a randomizer for a particular parameter, returning - one that has already been created if it exists. - This ensures that the same values are generated - each time the tests are reloaded. - - - - - Construct a randomizer using a random seed - - - - - Construct a randomizer using a specified seed - - - - - Return an array of random doubles between 0.0 and 1.0. - - - - - - - Return an array of random doubles with values in a specified range. - - - - - Return an array of random ints with values in a specified range. - - - - - Get a random seed for use in creating a randomizer. - - - - - The SpecialValue enum is used to represent TestCase arguments - that cannot be used as arguments to an Attribute. - - - - - Null represents a null value, which cannot be used as an - argument to an attriute under .NET 1.x - - - - - Basic Asserts on strings. - - - - - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. - - - - - - - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. - - - - - - - Asserts that a string is found within another string. - - The expected string - The string to be examined - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string is found within another string. - - The expected string - The string to be examined - The message to display in case of failure - - - - Asserts that a string is found within another string. - - The expected string - The string to be examined - - - - Asserts that a string is not found within another string. - - The expected string - The string to be examined - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string is found within another string. - - The expected string - The string to be examined - The message to display in case of failure - - - - Asserts that a string is found within another string. - - The expected string - The string to be examined - - - - Asserts that a string starts with another string. - - The expected string - The string to be examined - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string starts with another string. - - The expected string - The string to be examined - The message to display in case of failure - - - - Asserts that a string starts with another string. - - The expected string - The string to be examined - - - - Asserts that a string does not start with another string. - - The expected string - The string to be examined - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string does not start with another string. - - The expected string - The string to be examined - The message to display in case of failure - - - - Asserts that a string does not start with another string. - - The expected string - The string to be examined - - - - Asserts that a string ends with another string. - - The expected string - The string to be examined - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string ends with another string. - - The expected string - The string to be examined - The message to display in case of failure - - - - Asserts that a string ends with another string. - - The expected string - The string to be examined - - - - Asserts that a string does not end with another string. - - The expected string - The string to be examined - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string does not end with another string. - - The expected string - The string to be examined - The message to display in case of failure - - - - Asserts that a string does not end with another string. - - The expected string - The string to be examined - - - - Asserts that two strings are equal, without regard to case. - - The expected string - The actual string - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that two strings are equal, without regard to case. - - The expected string - The actual string - The message to display in case of failure - - - - Asserts that two strings are equal, without regard to case. - - The expected string - The actual string - - - - Asserts that two strings are not equal, without regard to case. - - The expected string - The actual string - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that two strings are Notequal, without regard to case. - - The expected string - The actual string - The message to display in case of failure - - - - Asserts that two strings are not equal, without regard to case. - - The expected string - The actual string - - - - Asserts that a string matches an expected regular expression pattern. - - The regex pattern to be matched - The actual string - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string matches an expected regular expression pattern. - - The regex pattern to be matched - The actual string - The message to display in case of failure - - - - Asserts that a string matches an expected regular expression pattern. - - The regex pattern to be matched - The actual string - - - - Asserts that a string does not match an expected regular expression pattern. - - The regex pattern to be used - The actual string - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string does not match an expected regular expression pattern. - - The regex pattern to be used - The actual string - The message to display in case of failure - - - - Asserts that a string does not match an expected regular expression pattern. - - The regex pattern to be used - The actual string - - - - The TestCaseData class represents a set of arguments - and other parameter info to be used for a parameterized - test case. It provides a number of instance modifiers - for use in initializing the test case. - - Note: Instance modifiers are getters that return - the same instance after modifying it's state. - - - - - The argument list to be provided to the test - - - - - The expected result to be returned - - - - - Set to true if this has an expected result - - - - - The expected exception Type - - - - - The FullName of the expected exception - - - - - The name to be used for the test - - - - - The description of the test - - - - - A dictionary of properties, used to add information - to tests without requiring the class to change. - - - - - If true, indicates that the test case is to be ignored - - - - - If true, indicates that the test case is marked explicit - - - - - The reason for ignoring a test case - - - - - Initializes a new instance of the class. - - The arguments. - - - - Initializes a new instance of the class. - - The argument. - - - - Initializes a new instance of the class. - - The first argument. - The second argument. - - - - Initializes a new instance of the class. - - The first argument. - The second argument. - The third argument. - - - - Sets the expected result for the test - - The expected result - A modified TestCaseData - - - - Sets the expected exception type for the test - - Type of the expected exception. - The modified TestCaseData instance - - - - Sets the expected exception type for the test - - FullName of the expected exception. - The modified TestCaseData instance - - - - Sets the name of the test case - - The modified TestCaseData instance - - - - Sets the description for the test case - being constructed. - - The description. - The modified TestCaseData instance. - - - - Applies a category to the test - - - - - - - Applies a named property to the test - - - - - - - - Applies a named property to the test - - - - - - - - Applies a named property to the test - - - - - - - - Ignores this TestCase. - - - - - - Ignores this TestCase, specifying the reason. - - The reason. - - - - - Marks this TestCase as Explicit - - - - - - Marks this TestCase as Explicit, specifying the reason. - - The reason. - - - - - Gets the argument list to be provided to the test - - - - - Gets the expected result - - - - - Returns true if the result has been set - - - - - Gets the expected exception Type - - - - - Gets the FullName of the expected exception - - - - - Gets the name to be used for the test - - - - - Gets the description of the test - - - - - Gets a value indicating whether this is ignored. - - true if ignored; otherwise, false. - - - - Gets a value indicating whether this is explicit. - - true if explicit; otherwise, false. - - - - Gets the ignore reason. - - The ignore reason. - - - - Gets a list of categories associated with this test. - - - - - Gets the property dictionary for this test - - - - - Provide the context information of the current test - - - - - Constructs a TestContext using the provided context dictionary - - A context dictionary - - - - Get the current test context. This is created - as needed. The user may save the context for - use within a test, but it should not be used - outside the test for which it is created. - - - - - Gets a TestAdapter representing the currently executing test in this context. - - - - - Gets a ResultAdapter representing the current result for the test - executing in this context. - - - - - Gets the directory containing the current test assembly. - - - - - Gets the directory to be used for outputing files created - by this test run. - - - - - TestAdapter adapts a Test for consumption by - the user test code. - - - - - Constructs a TestAdapter for this context - - The context dictionary - - - - The name of the test. - - - - - The FullName of the test - - - - - The properties of the test. - - - - - ResultAdapter adapts a TestResult for consumption by - the user test code. - - - - - Construct a ResultAdapter for a context - - The context holding the result - - - - The TestState of current test. This maps to the ResultState - used in nunit.core and is subject to change in the future. - - - - - The TestStatus of current test. This enum will be used - in future versions of NUnit and so is to be preferred - to the TestState value. - - - - - Provides details about a test - - - - - Creates an instance of TestDetails - - The fixture that the test is a member of, if available. - The method that implements the test, if available. - The full name of the test. - A string representing the type of test, e.g. "Test Case". - Indicates if the test represents a suite of tests. - - - - The fixture that the test is a member of, if available. - - - - - The method that implements the test, if available. - - - - - The full name of the test. - - - - - A string representing the type of test, e.g. "Test Case". - - - - - Indicates if the test represents a suite of tests. - - - - - The ResultState enum indicates the result of running a test - - - - - The result is inconclusive - - - - - The test was not runnable. - - - - - The test has been skipped. - - - - - The test has been ignored. - - - - - The test succeeded - - - - - The test failed - - - - - The test encountered an unexpected exception - - - - - The test was cancelled by the user - - - - - The TestStatus enum indicates the result of running a test - - - - - The test was inconclusive - - - - - The test has skipped - - - - - The test succeeded - - - - - The test failed - - - - - Helper class with static methods used to supply constraints - that operate on strings. - - - - - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that fails if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that fails if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that fails if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. - - - - - Returns a constraint that fails if the actual - value matches the pattern supplied as an argument. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. - - - - - TextMessageWriter writes constraint descriptions and messages - in displayable form as a text stream. It tailors the display - of individual message components to form the standard message - format of NUnit assertion failure messages. - - - - - Prefix used for the expected value line of a message - - - - - Prefix used for the actual value line of a message - - - - - Length of a message prefix - - - - - Construct a TextMessageWriter - - - - - Construct a TextMessageWriter, specifying a user message - and optional formatting arguments. - - - - - - - Method to write single line message with optional args, usually - written to precede the general failure message, at a givel - indentation level. - - The indentation level of the message - The message to be written - Any arguments used in formatting the message - - - - Display Expected and Actual lines for a constraint. This - is called by MessageWriter's default implementation of - WriteMessageTo and provides the generic two-line display. - - The constraint that failed - - - - Display Expected and Actual lines for given values. This - method may be called by constraints that need more control over - the display of actual and expected values than is provided - by the default implementation. - - The expected value - The actual value causing the failure - - - - Display Expected and Actual lines for given values, including - a tolerance value on the expected line. - - The expected value - The actual value causing the failure - The tolerance within which the test was made - - - - Display the expected and actual string values on separate lines. - If the mismatch parameter is >=0, an additional line is displayed - line containing a caret that points to the mismatch point. - - The expected string value - The actual string value - The point at which the strings don't match or -1 - If true, case is ignored in string comparisons - If true, clip the strings to fit the max line length - - - - Writes the text for a connector. - - The connector. - - - - Writes the text for a predicate. - - The predicate. - - - - Write the text for a modifier. - - The modifier. - - - - Writes the text for an expected value. - - The expected value. - - - - Writes the text for an actual value. - - The actual value. - - - - Writes the text for a generalized value. - - The value. - - - - Writes the text for a collection value, - starting at a particular point, to a max length - - The collection containing elements to write. - The starting point of the elements to write - The maximum number of elements to write - - - - Write the generic 'Expected' line for a constraint - - The constraint that failed - - - - Write the generic 'Expected' line for a given value - - The expected value - - - - Write the generic 'Expected' line for a given value - and tolerance. - - The expected value - The tolerance within which the test was made - - - - Write the generic 'Actual' line for a constraint - - The constraint for which the actual value is to be written - - - - Write the generic 'Actual' line for a given value - - The actual value causing a failure - - - - Gets or sets the maximum line length for this writer - - - - - Helper class with properties and methods that supply - constraints that operate on exceptions. - - - - - Creates a constraint specifying the exact type of exception expected - - - - - Creates a constraint specifying the exact type of exception expected - - - - - Creates a constraint specifying the type of exception expected - - - - - Creates a constraint specifying the type of exception expected - - - - - Creates a constraint specifying an expected exception - - - - - Creates a constraint specifying an exception with a given InnerException - - - - - Creates a constraint specifying an expected TargetInvocationException - - - - - Creates a constraint specifying an expected TargetInvocationException - - - - - Creates a constraint specifying an expected TargetInvocationException - - - - - Creates a constraint specifying that no exception is thrown - - - - + + + + nunit.framework + + + + + The different targets a test action attribute can be applied to + + + + + Default target, which is determined by where the action attribute is attached + + + + + Target a individual test case + + + + + Target a suite of test cases + + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + + + + Throws an with the message and arguments + that are passed in. This is used by the other Assert functions. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This is used by the other Assert functions. + + The message to initialize the with. + + + + Throws an . + This is used by the other Assert functions. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as ignored. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as Inconclusive. + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The actual value to test + A Constraint to be applied + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The actual value to test + A Constraint to be applied + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The actual value to test + A Constraint to be applied + The message that will be displayed on failure + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The actual value to test + A Constraint to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + The actual value to test + A Constraint to be applied + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + + This method is provided for use by VB developers needing to test + the value of properties with private setters. + + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestDelegate + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate does not throw an exception. + + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate does not throw an exception. + + A TestDelegate + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that two ints are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two ints are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two ints are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two longs are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two longs are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two longs are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two unsigned ints are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two unsigned ints are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two unsigned ints are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two unsigned longs are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two unsigned longs are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two unsigned longs are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two decimals are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two decimals are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two decimals are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + + + + Verifies that two ints are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two ints are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two ints are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two longs are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two longs are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two longs are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two unsigned ints are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two unsigned ints are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two unsigned ints are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two unsigned longs are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two unsigned longs are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two unsigned longs are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two decimals are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two decimals are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two decimals are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two floats are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two floats are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two floats are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two doubles are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two doubles are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + + + + Assert that a string is either null or equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is either null or equal to string.Empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is either null or equal to string.Empty + + The string to be tested + + + + Assert that a string is not null or empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is not null or empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is not null or empty + + The string to be tested + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + The message to display in case of failure + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + + + + Helper for Assert.AreEqual(double expected, double actual, ...) + allowing code generation to work consistently. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Gets the number of assertions executed so far and + resets the counter to zero. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter names for constraints and + asserts and avoiding conflict with the definition of + , from which it inherits much of its + behavior, in certain mock object frameworks. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that fails if the actual + value matches the pattern supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. Works + identically to Assert.That. + + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. Works + identically to Assert.That. + + The actual value to test + A Constraint to be applied + The message to be displayed in case of failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. Works + identically to Assert.That. + + The actual value to test + A Constraint to be applied + The message to be displayed in case of failure + Arguments to use in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to + . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to + . + + The evaluated condition + The message to display if the condition is false + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to . + + The evaluated condition + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The actual value to test + A Constraint to be applied + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The actual value to test + A Constraint to be applied + The message that will be displayed on failure + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The actual value to test + A Constraint to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + Provides static methods to express the assumptions + that must be met for a test to give a meaningful + result. If an assumption is not met, the test + should produce an inconclusive result. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + + + + Asserts that a condition is true. If the condition is false the + method throws an . + + The evaluated condition + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Waits for pending asynchronous operations to complete, if appropriate, + and returns a proper result of the invocation by unwrapping task results + + The raw result of the method invocation + The unwrapped result, if necessary + + + + A set of Assert methods operationg on one or more collections + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable containing objects to be considered + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable containing objects to be considered + The message that will be displayed on failure + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that superset is not a subject of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that superset is not a subject of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + + + + Asserts that superset is not a subject of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that superset is a subset of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that superset is a subset of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + + + + Asserts that superset is a subset of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Summary description for DirectoryAssert + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are not equal + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are equal + Arguments to be used in formatting the message + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are equal + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Summary description for FileAssert. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + The message to display if objects are not equal + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if objects are not equal + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if objects are not equal + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + The message to be displayed when the two Stream are the same. + Arguments to be used in formatting the message + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + The message to be displayed when the Streams are the same. + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if objects are not equal + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if objects are not equal + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + + + + GlobalSettings is a place for setting default values used + by the framework in performing asserts. + + + + + Default tolerance for floating point equality + + + + + Class used to guard against unexpected argument values + by throwing an appropriate exception. + + + + + Throws an exception if an argument is null + + The value to be tested + The name of the argument + + + + Throws an exception if a string argument is null or empty + + The value to be tested + The name of the argument + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Interface implemented by a user fixture in order to + validate any expected exceptions. It is only called + for test methods marked with the ExpectedException + attribute. + + + + + Method to handle an expected exception + + The exception to be handled + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + NOTE: This interface is used in both the framework + and the core, even though that results in two different + types. However, sharing the source code guarantees that + the various implementations will be compatible and that + the core is able to reflect successfully over the + framework implementations of ITestCaseData. + + + + + Gets the argument list to be provided to the test + + + + + Gets the expected result + + + + + Indicates whether a result has been specified. + This is necessary because the result may be + null, so it's value cannot be checked. + + + + + Gets the expected exception Type + + + + + Gets the FullName of the expected exception + + + + + Gets the name to be used for the test + + + + + Gets the description of the test + + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets a value indicating whether this is explicit. + + true if explicit; otherwise, false. + + + + Gets the ignore reason. + + The ignore reason. + + + + The Iz class is a synonym for Is intended for use in VB, + which regards Is as a keyword. + + + + + The List class is a helper class with properties and methods + that supply a number of constraints used with lists and collections. + + + + + List.Map returns a ListMapper, which can be used to map + the original collection to another collection. + + + + + + + ListMapper is used to transform a collection used as an actual argument + producing another collection to be used in the assertion. + + + + + Construct a ListMapper based on a collection + + The collection to be transformed + + + + Produces a collection containing all the values of a property + + The collection of property values + + + + + Randomizer returns a set of random values in a repeatable + way, to allow re-running of tests if necessary. + + + + + Get a randomizer for a particular member, returning + one that has already been created if it exists. + This ensures that the same values are generated + each time the tests are reloaded. + + + + + Get a randomizer for a particular parameter, returning + one that has already been created if it exists. + This ensures that the same values are generated + each time the tests are reloaded. + + + + + Construct a randomizer using a random seed + + + + + Construct a randomizer using a specified seed + + + + + Return an array of random doubles between 0.0 and 1.0. + + + + + + + Return an array of random doubles with values in a specified range. + + + + + Return an array of random ints with values in a specified range. + + + + + Get a random seed for use in creating a randomizer. + + + + + The SpecialValue enum is used to represent TestCase arguments + that cannot be used as arguments to an Attribute. + + + + + Null represents a null value, which cannot be used as an + argument to an attribute under .NET 1.x + + + + + Basic Asserts on strings. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string is not found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are Notequal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + The message to display in case of failure + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + The message to display in case of failure + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + + + + The TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It provides a number of instance modifiers + for use in initializing the test case. + + Note: Instance modifiers are getters that return + the same instance after modifying it's state. + + + + + The argument list to be provided to the test + + + + + The expected result to be returned + + + + + Set to true if this has an expected result + + + + + The expected exception Type + + + + + The FullName of the expected exception + + + + + The name to be used for the test + + + + + The description of the test + + + + + A dictionary of properties, used to add information + to tests without requiring the class to change. + + + + + If true, indicates that the test case is to be ignored + + + + + If true, indicates that the test case is marked explicit + + + + + The reason for ignoring a test case + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + The third argument. + + + + Sets the expected result for the test + + The expected result + A modified TestCaseData + + + + Sets the expected exception type for the test + + Type of the expected exception. + The modified TestCaseData instance + + + + Sets the expected exception type for the test + + FullName of the expected exception. + The modified TestCaseData instance + + + + Sets the name of the test case + + The modified TestCaseData instance + + + + Sets the description for the test case + being constructed. + + The description. + The modified TestCaseData instance. + + + + Applies a category to the test + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Ignores this TestCase. + + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Marks this TestCase as Explicit + + + + + + Marks this TestCase as Explicit, specifying the reason. + + The reason. + + + + + Gets the argument list to be provided to the test + + + + + Gets the expected result + + + + + Returns true if the result has been set + + + + + Gets the expected exception Type + + + + + Gets the FullName of the expected exception + + + + + Gets the name to be used for the test + + + + + Gets the description of the test + + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets a value indicating whether this is explicit. + + true if explicit; otherwise, false. + + + + Gets the ignore reason. + + The ignore reason. + + + + Gets a list of categories associated with this test. + + + + + Gets the property dictionary for this test + + + + + Provide the context information of the current test + + + + + Constructs a TestContext using the provided context dictionary + + A context dictionary + + + + Get the current test context. This is created + as needed. The user may save the context for + use within a test, but it should not be used + outside the test for which it is created. + + + + + Gets a TestAdapter representing the currently executing test in this context. + + + + + Gets a ResultAdapter representing the current result for the test + executing in this context. + + + + + Gets the directory containing the current test assembly. + + + + + Gets the directory to be used for outputing files created + by this test run. + + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Constructs a TestAdapter for this context + + The context dictionary + + + + The name of the test. + + + + + The FullName of the test + + + + + The properties of the test. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a context + + The context holding the result + + + + The TestState of current test. This maps to the ResultState + used in nunit.core and is subject to change in the future. + + + + + The TestStatus of current test. This enum will be used + in future versions of NUnit and so is to be preferred + to the TestState value. + + + + + Provides details about a test + + + + + Creates an instance of TestDetails + + The fixture that the test is a member of, if available. + The method that implements the test, if available. + The full name of the test. + A string representing the type of test, e.g. "Test Case". + Indicates if the test represents a suite of tests. + + + + The fixture that the test is a member of, if available. + + + + + The method that implements the test, if available. + + + + + The full name of the test. + + + + + A string representing the type of test, e.g. "Test Case". + + + + + Indicates if the test represents a suite of tests. + + + + + The ResultState enum indicates the result of running a test + + + + + The result is inconclusive + + + + + The test was not runnable. + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test succeeded + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + The test failed + + + + + Helper class with static methods used to supply constraints + that operate on strings. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that fails if the actual + value matches the pattern supplied as an argument. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + TextMessageWriter writes constraint descriptions and messages + in displayable form as a text stream. It tailors the display + of individual message components to form the standard message + format of NUnit assertion failure messages. + + + + + MessageWriter is the abstract base for classes that write + constraint descriptions and messages in some form. The + class has separate methods for writing various components + of a message, allowing implementations to tailor the + presentation as needed. + + + + + Construct a MessageWriter given a culture + + + + + Method to write single line message with optional args, usually + written to precede the general failure message. + + The message to be written + Any arguments used in formatting the message + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a givel + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The constraint that failed + + + + Display Expected and Actual lines for given values. This + method may be called by constraints that need more control over + the display of actual and expected values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given values, including + a tolerance value on the Expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in locating the point where the strings differ + If true, the strings should be clipped to fit the line + + + + Writes the text for a connector. + + The connector. + + + + Writes the text for a predicate. + + The predicate. + + + + Writes the text for an expected value. + + The expected value. + + + + Writes the text for a modifier + + The modifier. + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Abstract method to get the max line length + + + + + Prefix used for the expected value line of a message + + + + + Prefix used for the actual value line of a message + + + + + Length of a message prefix + + + + + Construct a TextMessageWriter + + + + + Construct a TextMessageWriter, specifying a user message + and optional formatting arguments. + + + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a givel + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The constraint that failed + + + + Display Expected and Actual lines for given values. This + method may be called by constraints that need more control over + the display of actual and expected values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given values, including + a tolerance value on the expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in string comparisons + If true, clip the strings to fit the max line length + + + + Writes the text for a connector. + + The connector. + + + + Writes the text for a predicate. + + The predicate. + + + + Write the text for a modifier. + + The modifier. + + + + Writes the text for an expected value. + + The expected value. + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Write the generic 'Expected' line for a constraint + + The constraint that failed + + + + Write the generic 'Expected' line for a given value + + The expected value + + + + Write the generic 'Expected' line for a given value + and tolerance. + + The expected value + The tolerance within which the test was made + + + + Write the generic 'Actual' line for a constraint + + The constraint for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + Gets or sets the maximum line length for this writer + + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Creates a constraint specifying an expected exception + + + + + Creates a constraint specifying an exception with a given InnerException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying that no exception is thrown + + + + + Attribute used to apply a category to a test + + + + + The name of the category + + + + + Construct attribute for a given category based on + a name. The name may not contain the characters ',', + '+', '-' or '!'. However, this is not checked in the + constructor since it would cause an error to arise at + as the test was loaded without giving a clear indication + of where the problem is located. The error is handled + in NUnitFramework.cs by marking the test as not + runnable. + + The name of the category + + + + Protected constructor uses the Type name as the name + of the category. + + + + + The name of the category + + + + + Used to mark a field for use as a datapoint when executing a theory + within the same fixture that requires an argument of the field's Type. + + + + + Used to mark an array as containing a set of datapoints to be used + executing a theory within the same fixture that requires an argument + of the Type of the array elements. + + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct the attribute + + Text describing the test + + + + Gets the test description + + + + + Enumeration indicating how the expected message parameter is to be used + + + + Expect an exact match + + + Expect a message containing the parameter string + + + Match the regular expression provided as a parameter + + + Expect a message that starts with the parameter string + + + + ExpectedExceptionAttribute + + + + + + Constructor for a non-specific exception + + + + + Constructor for a given type of exception + + The type of the expected exception + + + + Constructor for a given exception name + + The full name of the expected exception + + + + Gets or sets the expected exception type + + + + + Gets or sets the full Type name of the expected exception + + + + + Gets or sets the expected message text + + + + + Gets or sets the user message displayed in case of failure + + + + + Gets or sets the type of match to be performed on the expected message + + + + + Gets the name of a method to be used as an exception handler + + + + + ExplicitAttribute marks a test or test fixture so that it will + only be run if explicitly executed from the gui or command line + or if it is included by use of a filter. The test will not be + run simply because an enclosing suite is run. + + + + + Default constructor + + + + + Constructor with a reason + + The reason test is marked explicit + + + + The reason test is marked explicit + + + + + Attribute used to mark a test that is to be ignored. + Ignored tests result in a warning message when the + tests are run. + + + + + Constructs the attribute without giving a reason + for ignoring the test. + + + + + Constructs the attribute giving a reason for ignoring the test + + The reason for ignoring the test + + + + The reason for ignoring a test + + + + + Abstract base for Attributes that are used to include tests + in the test run based on environmental settings. + + + + + Constructor with no included items specified, for use + with named property syntax. + + + + + Constructor taking one or more included items + + Comma-delimited list of included items + + + + Name of the item that is needed in order for + a test to run. Multiple itemss may be given, + separated by a comma. + + + + + Name of the item to be excluded. Multiple items + may be given, separated by a comma. + + + + + The reason for including or excluding the test + + + + + PlatformAttribute is used to mark a test fixture or an + individual method as applying to a particular platform only. + + + + + Constructor with no platforms specified, for use + with named property syntax. + + + + + Constructor taking one or more platforms + + Comma-deliminted list of platforms + + + + CultureAttribute is used to mark a test fixture or an + individual method as applying to a particular Culture only. + + + + + Constructor with no cultures specified, for use + with named property syntax. + + + + + Constructor taking one or more cultures + + Comma-deliminted list of cultures + + + + Marks a test to use a combinatorial join of any argument data + provided. NUnit will create a test case for every combination of + the arguments provided. This can result in a large number of test + cases and so should be used judiciously. This is the default join + type, so the attribute need not be used except as documentation. + + + + + PropertyAttribute is used to attach information to a test as a name/value pair.. + + + + + Construct a PropertyAttribute with a name and string value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and int value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and double value + + The name of the property + The property value + + + + Constructor for derived classes that set the + property dictionary directly. + + + + + Constructor for use by derived classes that use the + name of the type as the property name. Derived classes + must ensure that the Type of the property value is + a standard type supported by the BCL. Any custom + types will cause a serialization Exception when + in the client. + + + + + Gets the property dictionary for this attribute + + + + + Default constructor + + + + + Marks a test to use pairwise join of any argument data provided. + NUnit will attempt too excercise every pair of argument values at + least once, using as small a number of test cases as it can. With + only two arguments, this is the same as a combinatorial join. + + + + + Default constructor + + + + + Marks a test to use a sequential join of any argument data + provided. NUnit will use arguements for each parameter in + sequence, generating test cases up to the largest number + of argument values provided and using null for any arguments + for which it runs out of values. Normally, this should be + used with the same number of arguments for each parameter. + + + + + Default constructor + + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + RandomAttribute is used to supply a set of random values + to a single parameter of a parameterized test. + + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + Abstract base class for attributes that apply to parameters + and supply data for the parameter. + + + + + Gets the data to be provided to the specified parameter + + + + + The collection of data to be returned. Must + be set by any derived attribute classes. + We use an object[] so that the individual + elements may have their type changed in GetData + if necessary. + + + + + Construct with one argument + + + + + + Construct with two arguments + + + + + + + Construct with three arguments + + + + + + + + Construct with an array of arguments + + + + + + Get the collection of values to be used as arguments + + + + + Construct a set of doubles from 0.0 to 1.0, + specifying only the count. + + + + + + Construct a set of doubles from min to max + + + + + + + + Construct a set of ints from min to max + + + + + + + + Get the collection of values to be used as arguments + + + + + RangeAttribute is used to supply a range of values to an + individual parameter of a parameterized test. + + + + + Construct a range of ints using default step of 1 + + + + + + + Construct a range of ints specifying the step size + + + + + + + + Construct a range of longs + + + + + + + + Construct a range of doubles + + + + + + + + Construct a range of floats + + + + + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + RequiredAddinAttribute may be used to indicate the names of any addins + that must be present in order to run some or all of the tests in an + assembly. If the addin is not loaded, the entire assembly is marked + as NotRunnable. + + + + + Initializes a new instance of the class. + + The required addin. + + + + Gets the name of required addin. + + The required addin name. + + + + Summary description for SetCultureAttribute. + + + + + Construct given the name of a culture + + + + + + Summary description for SetUICultureAttribute. + + + + + Construct given the name of a culture + + + + + + SetUpAttribute is used in a TestFixture to identify a method + that is called immediately before each test is run. It is + also used in a SetUpFixture to identify the method that is + called once, before any of the subordinate tests are run. + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + Attribute used to mark a static (shared in VB) property + that returns a list of tests. + + + + + Attribute used in a TestFixture to identify a method that is + called immediately after each test is run. It is also used + in a SetUpFixture to identify the method that is called once, + after all subordinate tests have run. In either case, the method + is guaranteed to be called, even if an exception is thrown. + + + + + Provide actions to execute before and after tests. + + + + + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + + + + + Executed before each test is run + + Provides details about the test that is going to be run. + + + + Executed after each test is run + + Provides details about the test that has just been run. + + + + Provides the target for the action attribute + + The target for the action attribute + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + publc void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + Construct a TestCaseAttribute with a list of arguments. + This constructor is not CLS-Compliant + + + + + + Construct a TestCaseAttribute with a single argument + + + + + + Construct a TestCaseAttribute with a two arguments + + + + + + + Construct a TestCaseAttribute with a three arguments + + + + + + + + Gets the list of arguments to a test case + + + + + Gets or sets the expected result. Use + ExpectedResult by preference. + + The result. + + + + Gets or sets the expected result. + + The result. + + + + Gets a flag indicating whether an expected + result has been set. + + + + + Gets a list of categories associated with this test; + + + + + Gets or sets the category associated with this test. + May be a single category or a comma-separated list. + + + + + Gets or sets the expected exception. + + The expected exception. + + + + Gets or sets the name the expected exception. + + The expected name of the exception. + + + + Gets or sets the expected message of the expected exception + + The expected message of the exception. + + + + Gets or sets the type of match to be performed on the expected message + + + + + Gets or sets the description. + + The description. + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the ignored status of the test + + + + + Gets or sets the ignored status of the test + + + + + Gets or sets the explicit status of the test + + + + + Gets or sets the reason for not running the test + + + + + Gets or sets the reason for not running the test. + Set has the side effect of marking the test as ignored. + + The ignore reason. + + + + FactoryAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the data source, which must + be a property, field or method of the test class itself. + + An array of the names of the factories that will provide data + + + + Construct with a Type, which must implement IEnumerable + + The Type that will provide data + + + + Construct with a Type and name. + that don't support params arrays. + + The Type that will provide data + The name of the method, property or field that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with this test. + May be a single category or a comma-separated list. + + + + + [TestFixture] + public class ExampleClass + {} + + + + + Default constructor + + + + + Construct with a object[] representing a set of arguments. + In .NET 2.0, the arguments may later be separated into + type arguments and constructor arguments. + + + + + + Descriptive text for this fixture + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Gets a list of categories for this fixture + + + + + The arguments originally provided to the attribute + + + + + Gets or sets a value indicating whether this should be ignored. + + true if ignore; otherwise, false. + + + + Gets or sets the ignore reason. May set Ignored as a side effect. + + The ignore reason. + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Attribute used to identify a method that is + called before any tests in a fixture are run. + + + + + Attribute used to identify a method that is called after + all the tests in a fixture have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + publc void TestDescriptionMethod() + {} + } + + + + + + Used on a method, marks the test with a timeout value in milliseconds. + The test will be run in a separate thread and is cancelled if the timeout + is exceeded. Used on a method or assembly, sets the default timeout + for all contained test methods. + + + + + Construct a TimeoutAttribute given a time in milliseconds + + The timeout value in milliseconds + + + + Marks a test that must run in the STA, causing it + to run in a separate thread if necessary. + + On methods, you may also use STAThreadAttribute + to serve the same purpose. + + + + + Construct a RequiresSTAAttribute + + + + + Marks a test that must run in the MTA, causing it + to run in a separate thread if necessary. + + On methods, you may also use MTAThreadAttribute + to serve the same purpose. + + + + + Construct a RequiresMTAAttribute + + + + + Marks a test that must run on a separate thread. + + + + + Construct a RequiresThreadAttribute + + + + + Construct a RequiresThreadAttribute, specifying the apartment + + + + + ValueSourceAttribute indicates the source to be used to + provide data for one parameter of a test method. + + + + + Construct with the name of the factory - for use with languages + that don't support params arrays. + + The name of the data source to be used + + + + Construct with a Type and name - for use with languages + that don't support params arrays. + + The Type that will provide data + The name of the method, property or field that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Abstract base class used for prefixes + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + The IConstraintExpression interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + Static UnsetObject used to detect derived constraints + failing to set the actual value. + + + + + The actual value being tested against a constraint + + + + + The display name of this Constraint for use by ToString() + + + + + Argument fields used by ToString(); + + + + + The builder holding this constraint + + + + + Construct a constraint with no arguments + + + + + Construct a constraint with one argument + + + + + Construct a constraint with two arguments + + + + + Sets the ConstraintBuilder holding this constraint + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the constraint and the actual value to the writer, which + then displays the constraint description and the value. + + Constraints that need to provide additional details, + such as where the error occured can override this. + + The MessageWriter on which to display the message + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Test whether the constraint is satisfied by an + ActualValueDelegate that returns the value to be tested. + The default implementation simply evaluates the delegate + but derived classes may override it to provide for delayed + processing. + + An + True for success, false for failure + + + + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + + A reference to the value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Default override of ToString returns the constraint DisplayName + followed by any arguments within angle brackets. + + + + + + Returns the string representation of this constraint + + + + + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. + + + + + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. + + + + + This operator creates a constraint that is satisfied if the + argument constraint is not satisfied. + + + + + Returns a DelayedConstraint with the specified delay time. + + The delay in milliseconds. + + + + + Returns a DelayedConstraint with the specified delay time + and polling interval. + + The delay in milliseconds. + The interval at which to test the constraint. + + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending Or + to the current constraint. + + + + + Class used to detect any derived constraints + that fail to set the actual value in their + Matches override. + + + + + The base constraint + + + + + Construct given a base constraint + + + + + + Construct an AllItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + AndConstraint succeeds only if both members succeed. + + + + + BinaryConstraint is the abstract base of all constraints + that combine two other constraints in some fashion. + + + + + The first constraint being combined + + + + + The second constraint being combined + + + + + Construct a BinaryConstraint from two other constraints + + The first constraint + The second constraint + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Apply both member constraints to an actual value, succeeding + succeeding only if both of them succeed. + + The actual value + True if the constraints both succeeded + + + + Write a description for this contraint to a MessageWriter + + The MessageWriter to receive the description + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + Construct a TypeConstraint for a given Type + + + + + + Write the actual value for a failing constraint test to a + MessageWriter. TypeConstraints override this method to write + the name of the type. + + The writer on which the actual value is displayed + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Test whether an object can be assigned from the specified type + + The object to be tested + True if the object can be assigned a value of the expected Type, otherwise false. + + + + Write a description of this constraint to a MessageWriter + + The MessageWriter to use + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Test whether an object can be assigned to the specified type + + The object to be tested + True if the object can be assigned a value of the expected Type, otherwise false. + + + + Write a description of this constraint to a MessageWriter + + The MessageWriter to use + + + + AttributeConstraint tests that a specified attribute is present + on a Type or other provider and that the value of the attribute + satisfies some other constraint. + + + + + Constructs an AttributeConstraint for a specified attriute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Writes a description of the attribute to the specified writer. + + + + + Writes the actual value supplied to the specified writer. + + + + + Returns a string representation of the constraint. + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + Writes the description of the constraint to the specified writer + + + + + BasicConstraint is the abstract base for constraints that + perform a simple comparison to a constant value. + + + + + Initializes a new instance of the class. + + The expected. + The description. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation + + + + + CollectionConstraint is the abstract base class for + constraints that operate on collections. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Determines whether the specified enumerable is empty. + + The enumerable. + + true if the specified enumerable is empty; otherwise, false. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Protected method to be implemented by derived classes + + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + CollectionItemsEqualConstraint is the abstract base class for all + collection constraints that apply some notion of item equality + as a part of their operation. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Flag the constraint to use the supplied EqualityAdapter. + NOTE: For internal use only. + + The EqualityAdapter to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + Flag the constraint to ignore case and return self. + + + + + Construct a CollectionContainsConstraint + + + + + + Test whether the expected item is contained in the collection + + + + + + + Write a descripton of the constraint to a MessageWriter + + + + + + CollectionEquivalentCOnstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + Test whether two collections are equivalent + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + Modifies the constraint to use an IComparer and returns self. + + + + + Modifies the constraint to use an IComparer<T> and returns self. + + + + + Modifies the constraint to use a Comparison<T> and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + Test whether the collection is ordered + + + + + + + Write a description of the constraint to a MessageWriter + + + + + + Returns the string representation of the constraint. + + + + + + If used performs a reverse comparison + + + + + CollectionSubsetConstraint is used to determine whether + one collection is a subset of another + + + + + Construct a CollectionSubsetConstraint + + The collection that the actual value is expected to be a subset of + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + CollectionTally counts (tallies) the number of + occurences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + Try to remove an object from the tally + + The object to remove + True if successful, false if the object was not found + + + + Try to remove a set of objects from the tally + + The objects to remove + True if successful, false if any object was not found + + + + The number of objects remaining in the tally + + + + + ComparisonAdapter class centralizes all comparisons of + values in NUnit, adapting to the use of any provided + IComparer, IComparer<T> or Comparison<T> + + + + + Returns a ComparisonAdapter that wraps an IComparer + + + + + Returns a ComparisonAdapter that wraps an IComparer<T> + + + + + Returns a ComparisonAdapter that wraps a Comparison<T> + + + + + Compares two objects + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Construct a ComparisonAdapter for an IComparer + + + + + Compares two objects + + + + + + + + Construct a default ComparisonAdapter + + + + + ComparisonAdapter<T> extends ComparisonAdapter and + allows use of an IComparer<T> or Comparison<T> + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an IComparer<T> + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a Comparison<T> + + + + + Compare a Type T to an object + + + + + Abstract base class for constraints that compare values to + determine if one is greater than, equal to or less than + the other. This class supplies the Using modifiers. + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Modifies the constraint to use an IComparer and returns self + + + + + Modifies the constraint to use an IComparer<T> and returns self + + + + + Modifies the constraint to use a Comparison<T> and returns self + + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + ConstraintBuilder maintains the stacks that are used in + processing a ConstraintExpression. An OperatorStack + is used to hold operators that are waiting for their + operands to be reognized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + Initializes a new instance of the class. + + + + + Appends the specified operator to the expression by first + reducing the operator stack and then pushing the new + operator on the stack. + + The operator to push. + + + + Appends the specified constraint to the expresson by pushing + it on the constraint stack. + + The constraint to push. + + + + Sets the top operator right context. + + The right context. + + + + Reduces the operator stack until the topmost item + precedence is greater than or equal to the target precedence. + + The target precedence. + + + + Resolves this instance, returning a Constraint. If the builder + is not currently in a resolvable state, an exception is thrown. + + The resolved constraint + + + + Gets a value indicating whether this instance is resolvable. + + + true if this instance is resolvable; otherwise, false. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The builder. + + + + Pushes the specified operator onto the stack. + + The op. + + + + Pops the topmost operator from the stack. + + + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + The top. + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The builder. + + + + Pushes the specified constraint. As a side effect, + the constraint's builder field is set to the + ConstraintBuilder owning this stack. + + The constraint. + + + + Pops this topmost constrait from the stack. + As a side effect, the constraint's builder + field is set to null. + + + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost constraint without modifying the stack. + + The topmost constraint + + + + ConstraintExpression represents a compound constraint in the + process of being constructed from a series of syntactic elements. + + Individual elements are appended to the expression as they are + reognized. Once an actual Constraint is appended, the expression + returns a resolvable Constraint. + + + + + ConstraintExpressionBase is the abstract base class for the + ConstraintExpression class, which represents a + compound constraint in the process of being constructed + from a series of syntactic elements. + + NOTE: ConstraintExpressionBase is separate because the + ConstraintExpression class was generated in earlier + versions of NUnit. The two classes may be combined + in a future version. + + + + + The ConstraintBuilder holding the elements recognized so far + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. + + The builder. + + + + Returns a string representation of the expression as it + currently stands. This should only be used for testing, + since it has the side-effect of resolving the expression. + + + + + + Appends an operator to the expression and returns the + resulting expression itself. + + + + + Appends a self-resolving operator to the expression and + returns a new ResolvableConstraintExpression. + + + + + Appends a constraint to the expression and returns that + constraint, which is associated with the current state + of the expression being built. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. + + The builder. + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + With is currently a NOP - reserved for future use. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + ContainsConstraint tests a whether a string contains a substring + or a collection contains an object. It postpones the decision of + which test to use until the type of the actual argument is known. + This allows testing whether a string is contained in a collection + or as a substring of another string using the same syntax. + + + + + Initializes a new instance of the class. + + The expected. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to ignore case and return self. + + + + + Applies a delay to the match so that a match can be evaluated in the future. + + + + + Creates a new DelayedConstraint + + The inner constraint two decorate + The time interval after which the match is performed + If the value of is less than 0 + + + + Creates a new DelayedConstraint + + The inner constraint two decorate + The time interval after which the match is performed + The time interval used for polling + If the value of is less than 0 + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + Test whether the constraint is satisfied by a delegate + + The delegate whose value is to be tested + True for if the base constraint fails, false if it succeeds + + + + Test whether the constraint is satisfied by a given reference. + Overridden to wait for the specified delay period before + calling the base constraint with the dereferenced value. + + A reference to the value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a MessageWriter. + + The writer on which the actual value is displayed + + + + Returns the string representation of the constraint. + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + Check that the collection is empty + + + + + + + Write the constraint description to a MessageWriter + + + + + + EmptyConstraint tests a whether a string or collection is empty, + postponing the decision about which test is applied until the + type of the actual argument is known. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + EmptyStringConstraint tests whether a string is empty. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + EndsWithConstraint can test whether a string ends + with an expected substring. + + + + + StringConstraint is the abstract base for constraints + that operate on strings. It supports the IgnoreCase + modifier for string operations. + + + + + The expected value + + + + + Indicates whether tests should be case-insensitive + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Test whether the constraint is satisfied by a given string + + The string to be tested + True for success, false for failure + + + + Modify the constraint to ignore case in matching. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + EqualConstraint is able to compare an actual value with the + expected value provided in its constructor. Two objects are + considered equal if both are null, or if both have the same + value. NUnit has special semantics for some object types. + + + + + If true, strings in error messages will be clipped + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + The MessageWriter to write to + + + + Write description of this constraint + + The MessageWriter to write to + + + + Display the failure information for two collections that did not match. + + The MessageWriter on which to display + The expected collection. + The actual collection + The depth of this failure in a set of nested collections + + + + Displays a single line showing the types and sizes of the expected + and actual enumerations, collections or arrays. If both are identical, + the value is only shown once. + + The MessageWriter on which to display + The expected collection or array + The actual collection or array + The indentation level for the message line + + + + Displays a single line showing the point in the expected and actual + arrays at which the comparison failed. If the arrays have different + structures or dimensions, both values are shown. + + The MessageWriter on which to display + The expected array + The actual array + Index of the failure point in the underlying collections + The indentation level for the message line + + + + Display the failure information for two IEnumerables that did not match. + + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to suppress string clipping + and return self. + + + + + Flag the constraint to compare arrays as collections + and return self. + + + + + Switches the .Within() modifier to interpret its tolerance as + a distance in representable values (see remarks). + + Self. + + Ulp stands for "unit in the last place" and describes the minimum + amount a given value can change. For any integers, an ulp is 1 whole + digit. For floating point values, the accuracy of which is better + for smaller numbers and worse for larger numbers, an ulp depends + on the size of the number. Using ulps for comparison of floating + point results instead of fixed tolerances is safer because it will + automatically compensate for the added inaccuracy of larger numbers. + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual values is allowed to deviate from + the expected value. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in days. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in hours. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in minutes. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in seconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in milliseconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in clock ticks. + + Self + + + + EqualityAdapter class handles all equality comparisons + that use an IEqualityComparer, IEqualityComparer<T> + or a ComparisonAdapter. + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Returns an EqualityAdapter that wraps an IComparer. + + + + + Returns an EqualityAdapter that wraps an IEqualityComparer. + + + + + Returns an EqualityAdapter that wraps an IEqualityComparer<T>. + + + + + Returns an EqualityAdapter that wraps an IComparer<T>. + + + + + Returns an EqualityAdapter that wraps a Comparison<T>. + + + + + EqualityAdapter that wraps an IComparer. + + + + + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. + + + + + EqualityAdapter that wraps an IComparer. + + + + + EqualityAdapterList represents a list of EqualityAdapters + in a common class across platforms. + + + + + ExactCountConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. + + + + + Construct an ExactCountConstraint on top of an existing constraint + + + + + + + Apply the item constraint to each item in the collection, + succeeding only if the expected number of items pass. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + ExactTypeConstraint is used to test that an object + is of the exact type provided in the constructor + + + + + Construct an ExactTypeConstraint for a given Type + + The expected Type. + + + + Test that an object is of the exact type specified + + The actual value. + True if the tested object is of the exact type provided, otherwise false. + + + + Write the description of this constraint to a MessageWriter + + The MessageWriter to use + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + Constructs an ExceptionTypeConstraint + + + + + Write the actual value for a failing constraint test to a + MessageWriter. Overriden to write additional information + in the case of an Exception. + + The MessageWriter to use + + + + FailurePoint class represents one point of failure + in an equality test. + + + + + The location of the failure + + + + + The expected value + + + + + The actual value + + + + + Indicates whether the expected value is valid + + + + + Indicates whether the actual value is valid + + + + + FailurePointList represents a set of FailurePoints + in a cross-platform way. + + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + Helper routines for working with floating point numbers + + + The floating point comparison code is based on this excellent article: + http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm + + + "ULP" means Unit in the Last Place and in the context of this library refers to + the distance between two adjacent floating point numbers. IEEE floating point + numbers can only represent a finite subset of natural numbers, with greater + accuracy for smaller numbers and lower accuracy for very large numbers. + + + If a comparison is allowed "2 ulps" of deviation, that means the values are + allowed to deviate by up to 2 adjacent floating point values, which might be + as low as 0.0000001 for small numbers or as high as 10.0 for large numbers. + + + + + Compares two floating point values for equality + First floating point value to be compared + Second floating point value t be compared + + Maximum number of representable floating point values that are allowed to + be between the left and the right floating point values + + True if both numbers are equal or close to being equal + + + Floating point values can only represent a finite subset of natural numbers. + For example, the values 2.00000000 and 2.00000024 can be stored in a float, + but nothing inbetween them. + + + This comparison will count how many possible floating point values are between + the left and the right number. If the number of possible values between both + numbers is less than or equal to maxUlps, then the numbers are considered as + being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + Compares two double precision floating point values for equality + First double precision floating point value to be compared + Second double precision floating point value t be compared + + Maximum number of representable double precision floating point values that are + allowed to be between the left and the right double precision floating point values + + True if both numbers are equal or close to being equal + + + Double precision floating point values can only represent a limited series of + natural numbers. For example, the values 2.0000000000000000 and 2.0000000000000004 + can be stored in a double, but nothing inbetween them. + + + This comparison will count how many possible double precision floating point + values are between the left and the right number. If the number of possible + values between both numbers is less than or equal to maxUlps, then the numbers + are considered as being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + + Reinterprets the memory contents of a floating point value as an integer value + + + Floating point value whose memory contents to reinterpret + + + The memory contents of the floating point value interpreted as an integer + + + + + Reinterprets the memory contents of a double precision floating point + value as an integer value + + + Double precision floating point value whose memory contents to reinterpret + + + The memory contents of the double precision floating point value + interpreted as an integer + + + + + Reinterprets the memory contents of an integer as a floating point value + + Integer value whose memory contents to reinterpret + + The memory contents of the integer value interpreted as a floating point value + + + + + Reinterprets the memory contents of an integer value as a double precision + floating point value + + Integer whose memory contents to reinterpret + + The memory contents of the integer interpreted as a double precision + floating point value + + + + Union of a floating point variable and an integer + + + The union's value as a floating point variable + + + The union's value as an integer + + + The union's value as an unsigned integer + + + Union of a double precision floating point variable and a long + + + The union's value as a double precision floating point variable + + + The union's value as a long + + + The union's value as an unsigned long + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + The value against which a comparison is to be made + + + + + Initializes a new instance of the class. + + The expected value. + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Tests whether a value is greater than or equal to the value supplied to its constructor + + + + + The value against which a comparison is to be made + + + + + Initializes a new instance of the class. + + The expected value. + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + InstanceOfTypeConstraint is used to test that an object + is of the same type provided or derived from it. + + + + + Construct an InstanceOfTypeConstraint for the type provided + + The expected Type + + + + Test whether an object is of the specified type or a derived type + + The object to be tested + True if the object is of the provided type or derives from it, otherwise false. + + + + Write a description of this constraint to a MessageWriter + + The MessageWriter to use + + + + Tests whether a value is less than the value supplied to its constructor + + + + + The value against which a comparison is to be made + + + + + Initializes a new instance of the class. + + The expected value. + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Tests whether a value is less than or equal to the value supplied to its constructor + + + + + The value against which a comparison is to be made + + + + + Initializes a new instance of the class. + + The expected value. + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Returns the representation of a type as used in NUnitLite. + This is the same as Type.ToString() except for arrays, + which are displayed with their declared sizes. + + + + + + + Converts any control characters in a string + to their escaped representation. + + The string to be converted + The converted string + + + + Return the a string representation for a set of indices into an array + + Array of indices for which a string is needed + + + + Get an array of indices representing the point in a enumerable, + collection or array corresponding to a single int index into the + collection. + + The collection to which the indices apply + Index in the collection + Array of indices + + + + Clip a string to a given length, starting at a particular offset, returning the clipped + string with ellipses representing the removed parts + + The string to be clipped + The maximum permitted length of the result string + The point at which to start clipping + The clipped string + + + + Clip the expected and actual strings in a coordinated fashion, + so that they may be displayed together. + + + + + + + + + Shows the position two strings start to differ. Comparison + starts at the start index. + + The expected string + The actual string + The index in the strings at which comparison should start + Boolean indicating whether case should be ignored + -1 if no mismatch found, or the index where mismatch found + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + Test that the actual value is an NaN + + + + + + + Write the constraint description to a specified writer + + + + + + NoItemConstraint applies another constraint to each + item in a collection, failing if any of them succeeds. + + + + + Construct a NoItemConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + NotConstraint negates the effect of some other constraint + + + + + Initializes a new instance of the class. + + The base constraint to be negated. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a MessageWriter. + + The writer on which the actual value is displayed + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + NullEmptyStringConstraint tests whether a string is either null or empty. + + + + + Constructs a new NullOrEmptyStringConstraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + The Numerics class contains common operations on numeric values. + + + + + Checks the type of the object, returning true if + the object is a numeric type. + + The object to check + true if the object is a numeric type + + + + Checks the type of the object, returning true if + the object is a floating point numeric type. + + The object to check + true if the object is a floating point numeric type + + + + Checks the type of the object, returning true if + the object is a fixed point numeric type. + + The object to check + true if the object is a fixed point numeric type + + + + Test two numeric values for equality, performing the usual numeric + conversions and using a provided or default tolerance. If the tolerance + provided is Empty, this method may set it to a default tolerance. + + The expected value + The actual value + A reference to the tolerance in effect + True if the values are equal + + + + Compare two numeric values, performing the usual numeric conversions. + + The expected value + The actual value + The relationship of the values to each other + + + + NUnitComparer encapsulates NUnit's default behavior + in comparing two objects. + + + + + Compares two objects + + + + + + + + Returns the default NUnitComparer. + + + + + Generic version of NUnitComparer + + + + + + Compare two objects of the same type + + + + + NUnitEqualityComparer encapsulates NUnit's handling of + equality tests between objects. + + + + + + + + + + Compares two objects for equality within a tolerance + + The first object to compare + The second object to compare + The tolerance to use in the comparison + + + + + If true, all string comparisons will ignore case + + + + + If true, arrays will be treated as collections, allowing + those of different dimensions to be compared + + + + + Comparison objects used in comparisons for some constraints. + + + + + List of points at which a failure occured. + + + + + RecursionDetector used to check for recursion when + evaluating self-referencing enumerables. + + + + + Compares two objects for equality within a tolerance, setting + the tolerance to the actual tolerance used if an empty + tolerance is supplied. + + + + + Helper method to compare two arrays + + + + + Method to compare two DirectoryInfo objects + + first directory to compare + second directory to compare + true if equivalent, false if not + + + + Returns the default NUnitEqualityComparer + + + + + Gets and sets a flag indicating whether case should + be ignored in determining equality. + + + + + Gets and sets a flag indicating that arrays should be + compared as collections, without regard to their shape. + + + + + Gets the list of external comparers to be used to + test for equality. They are applied to members of + collections, in place of NUnit's own logic. + + + + + Gets the list of failure points for the last Match performed. + The list consists of objects to be interpreted by the caller. + This generally means that the caller may only make use of + objects it has placed on the list at a particular depthy. + + + + + RecursionDetector detects when a comparison + between two enumerables has reached a point + where the same objects that were previously + compared are again being compared. This allows + the caller to stop the comparison if desired. + + + + + Check whether two objects have previously + been compared, returning true if they have. + The two objects are remembered, so that a + second call will always return true. + + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Apply the member constraints to an actual value, succeeding + succeeding as soon as one of them succeeds. + + The actual value + True if either constraint succeeded + + + + Write a description for this contraint to a MessageWriter + + The MessageWriter to receive the description + + + + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. + + + + + The expected path used in the constraint + + + + + Flag indicating whether a caseInsensitive comparison should be made + + + + + Construct a PathConstraint for a give expected path + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns true if the expected path and actual path match + + + + + Returns the string representation of this constraint + + + + + Transform the provided path to its canonical form so that it + may be more easily be compared with other paths. + + The original path + The path in canonical form + + + + Test whether one path in canonical form is under another. + + The first path - supposed to be the parent path + The second path - supposed to be the child path + Indicates whether case should be ignored + + + + + Modifies the current instance to be case-insensitve + and returns it. + + + + + Modifies the current instance to be case-sensitve + and returns it. + + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Writes the description to a MessageWriter + + + + + PropertyConstraint extracts a named property and uses + its value as the actual value for a chained constraint. + + + + + Initializes a new instance of the class. + + The name. + The constraint to apply to the property. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation of the constraint. + + + + + + PropertyExistsConstraint tests that a named property + exists on the object provided through Match. + + Originally, PropertyConstraint provided this feature + in addition to making optional tests on the vaue + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. + + The writer on which the actual value is displayed + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whether two values are within a + specified range. + + + + + Initializes a new instance of the class. + + From. + To. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + RegexConstraint can test whether a string matches + the pattern provided. + + + + + Initializes a new instance of the class. + + The pattern. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + ResolvableConstraintExpression is used to represent a compound + constraint being constructed at a point where the last operator + may either terminate the expression or may have additional + qualifying constraints added to it. + + It is used, for example, for a Property element or for + an Exception element, either of which may be optionally + followed by constraints that apply to the property or + exception. + + + + + Create a new instance of ResolvableConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + Resolve the current expression to a Constraint + + + + + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. + + + + + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. + + + + + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. + + + + + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. + + + + + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. + + + + + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. + + + + + This operator creates a constraint that is satisfied if the + argument constraint is not satisfied. + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + ReusableConstraint wraps a constraint expression after + resolving it so that it can be reused consistently. + + + + + Construct a ReusableConstraint from a constraint expression + + The expression to be resolved and reused + + + + Converts a constraint to a ReusableConstraint + + The constraint to be converted + A ReusableConstraint + + + + Returns the string representation of the constraint. + + A string representing the constraint + + + + Resolves the ReusableConstraint by returning the constraint + that it originally wrapped. + + A resolved constraint + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The expected path + The actual path + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + Initializes a new instance of the class. + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The expected path + The actual path + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + SomeItemsConstraint applies another constraint to each + item in a collection, succeeding if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + StartsWithConstraint can test whether a string starts + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + SubPathConstraint tests that the actual path is under the expected path + + + + + Initializes a new instance of the class. + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The expected path + The actual path + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + SubstringConstraint can test whether a string contains + the expected substring. + + + + + Initializes a new instance of the class. + + The expected. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + ThrowsConstraint is used to test the exception thrown by + a delegate by applying a constraint to it. + + + + + Initializes a new instance of the class, + using a constraint to be applied to the exception. + + A constraint to apply to the caught exception. + + + + Executes the code of the delegate and captures any exception. + If a non-null base constraint was provided, it applies that + constraint to the exception. + + A delegate representing the code to be tested + True if an exception is thrown and the constraint succeeds, otherwise false + + + + Converts an ActualValueDelegate to a TestDelegate + before calling the primary overload. + + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation of this constraint + + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. Overridden in ThrowsNothingConstraint to write + information about the exception that was actually caught. + + The writer on which the actual value is displayed + + + + The Tolerance class generalizes the notion of a tolerance + within which an equality test succeeds. Normally, it is + used with numeric types, but it can be used with any + type that supports taking a difference between two + objects and comparing that difference to a value. + + + + + Constructs a linear tolerance of a specdified amount + + + + + Constructs a tolerance given an amount and ToleranceMode + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Returns an empty Tolerance object, equivalent to + specifying no tolerance. In most cases, it results + in an exact match but for floats and doubles a + default tolerance may be used. + + + + + Returns a zero Tolerance object, equivalent to + specifying an exact match. + + + + + Gets the ToleranceMode for the current Tolerance + + + + + Gets the value of the current Tolerance instance. + + + + + Returns a new tolerance, using the current amount as a percentage. + + + + + Returns a new tolerance, using the current amount in Ulps. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of clock ticks. + + + + + Returns true if the current tolerance is empty. + + + + + Modes in which the tolerance value for a comparison can be interpreted. + + + + + The tolerance was created with a value, without specifying + how the value would be used. This is used to prevent setting + the mode more than once and is generally changed to Linear + upon execution of the test. + + + + + The tolerance is used as a numeric range within which + two compared values are considered to be equal. + + + + + Interprets the tolerance as the percentage by which + the two compared values my deviate from each other. + + + + + Compares two values based in their distance in + representable numbers. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + Check that all items are unique. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + XmlSerializableConstraint tests whether + an object is serializable in XML format. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation of this constraint + + + + + Represents a constraint that succeeds if all the + members of a collection match a base constraint. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + PrefixOperator takes a single constraint and modifies + it's action in some way. + + + + + The ConstraintOperator class is used internally by a + ConstraintBuilder to represent an operator that + modifies or combines constraints. + + Constraint operators use left and right precedence + values to determine whether the top operator on the + stack should be reduced before pushing a new operator. + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + The syntax element preceding this operator + + + + + The syntax element folowing this operator + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Returns the constraint created by applying this + prefix to another constraint. + + + + + + + Constructs a CollectionOperator + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + they all succeed. + + + + + Operator that requires both it's arguments to succeed + + + + + Abstract base class for all binary operators + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + Operator that tests for the presence of a particular attribute + on a type and optionally applies further tests to the attribute. + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + Construct an AttributeOperator for a particular Type + + The Type of attribute tested + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. + + + + + Construct an ExactCountOperator for a specified count + + The expected count + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + Represents a constraint that succeeds if none of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + Operator used to test for the presence of a named Property + on an object and optionally apply further tests to the + value of that property. + + + + + Constructs a PropOperator for a particular named property + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Gets the name of the property to which the operator applies + + + + + Represents a constraint that succeeds if any of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + any of them succeed. + + + + + Operator that tests that an exception is thrown and + optionally applies further tests to the exception. + + + + + Construct a ThrowsOperator + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifes the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + Thrown when an assertion failed. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Thrown when a test executes inconclusively. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + + + + + + + Compares two objects of a given Type for equality within a tolerance + + The first object to compare + The second object to compare + The tolerance to use in the comparison + + + + diff --git a/packages/NUnit.2.6.2/license.txt b/packages/NUnit.2.6.3/license.txt similarity index 89% rename from packages/NUnit.2.6.2/license.txt rename to packages/NUnit.2.6.3/license.txt index 724e4652e..b12903afb 100644 --- a/packages/NUnit.2.6.2/license.txt +++ b/packages/NUnit.2.6.3/license.txt @@ -1,15 +1,15 @@ -Copyright 2002-2012 Charlie Poole -Copyright 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov -Copyright 2000-2002 Philip A. Craig - -This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment (see the following) in the product documentation is required. - -Portions Copyright 2002-2012 Charlie Poole or Copyright 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright 2000-2002 Philip A. Craig - -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source distribution. +Copyright 2002-2013 Charlie Poole +Copyright 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov +Copyright 2000-2002 Philip A. Craig + +This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment (see the following) in the product documentation is required. + +Portions Copyright 2002-2013 Charlie Poole or Copyright 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright 2000-2002 Philip A. Craig + +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source distribution. diff --git a/packages/Newtonsoft.Json.4.5.11/Newtonsoft.Json.4.5.11.nupkg b/packages/Newtonsoft.Json.4.5.11/Newtonsoft.Json.4.5.11.nupkg new file mode 100644 index 000000000..0b6dc21a5 Binary files /dev/null and b/packages/Newtonsoft.Json.4.5.11/Newtonsoft.Json.4.5.11.nupkg differ diff --git a/packages/Newtonsoft.Json.4.5.11/Newtonsoft.Json.4.5.11.nuspec b/packages/Newtonsoft.Json.4.5.11/Newtonsoft.Json.4.5.11.nuspec new file mode 100644 index 000000000..5236069c1 --- /dev/null +++ b/packages/Newtonsoft.Json.4.5.11/Newtonsoft.Json.4.5.11.nuspec @@ -0,0 +1,19 @@ + + + + Newtonsoft.Json + 4.5.11 + Json.NET + James Newton-King + James Newton-King + http://json.codeplex.com/license + http://james.newtonking.com/projects/json-net.aspx + false + Json.NET is a popular high-performance JSON framework for .NET + en-US + json + + + + + \ No newline at end of file diff --git a/packages/Newtonsoft.Json.4.5.11/lib/net20/Newtonsoft.Json.dll b/packages/Newtonsoft.Json.4.5.11/lib/net20/Newtonsoft.Json.dll new file mode 100644 index 000000000..1ff7b36ac Binary files /dev/null and b/packages/Newtonsoft.Json.4.5.11/lib/net20/Newtonsoft.Json.dll differ diff --git a/packages/Newtonsoft.Json.4.5.11/lib/net20/Newtonsoft.Json.xml b/packages/Newtonsoft.Json.4.5.11/lib/net20/Newtonsoft.Json.xml new file mode 100644 index 000000000..c923197e2 --- /dev/null +++ b/packages/Newtonsoft.Json.4.5.11/lib/net20/Newtonsoft.Json.xml @@ -0,0 +1,8526 @@ + + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token. + + The to read the token from. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a binary value to and from a base 64 string value. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + A cached representation of the Enum string representation to respect per Enum field name. + + The type of the Enum. + A map of enum field name to either the field name, or the configured enum member name (). + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Represents a trace writer that writes to the application's instances. + + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Provides a set of static (Shared in Visual Basic) methods for + querying objects that implement . + + + + + Returns the input typed as . + + + + + Returns an empty that has the + specified type argument. + + + + + Converts the elements of an to the + specified type. + + + + + Filters the elements of an based on a specified type. + + + + + Generates a sequence of integral numbers within a specified range. + + The value of the first integer in the sequence. + The number of sequential integers to generate. + + + + Generates a sequence that contains one repeated value. + + + + + Filters a sequence of values based on a predicate. + + + + + Filters a sequence of values based on a predicate. + Each element's index is used in the logic of the predicate function. + + + + + Projects each element of a sequence into a new form. + + + + + Projects each element of a sequence into a new form by + incorporating the element's index. + + + + + Projects each element of a sequence to an + and flattens the resulting sequences into one sequence. + + + + + Projects each element of a sequence to an , + and flattens the resulting sequences into one sequence. The + index of each source element is used in the projected form of + that element. + + + + + Projects each element of a sequence to an , + flattens the resulting sequences into one sequence, and invokes + a result selector function on each element therein. + + + + + Projects each element of a sequence to an , + flattens the resulting sequences into one sequence, and invokes + a result selector function on each element therein. The index of + each source element is used in the intermediate projected form + of that element. + + + + + Returns elements from a sequence as long as a specified condition is true. + + + + + Returns elements from a sequence as long as a specified condition is true. + The element's index is used in the logic of the predicate function. + + + + + Base implementation of First operator. + + + + + Returns the first element of a sequence. + + + + + Returns the first element in a sequence that satisfies a specified condition. + + + + + Returns the first element of a sequence, or a default value if + the sequence contains no elements. + + + + + Returns the first element of the sequence that satisfies a + condition or a default value if no such element is found. + + + + + Base implementation of Last operator. + + + + + Returns the last element of a sequence. + + + + + Returns the last element of a sequence that satisfies a + specified condition. + + + + + Returns the last element of a sequence, or a default value if + the sequence contains no elements. + + + + + Returns the last element of a sequence that satisfies a + condition or a default value if no such element is found. + + + + + Base implementation of Single operator. + + + + + Returns the only element of a sequence, and throws an exception + if there is not exactly one element in the sequence. + + + + + Returns the only element of a sequence that satisfies a + specified condition, and throws an exception if more than one + such element exists. + + + + + Returns the only element of a sequence, or a default value if + the sequence is empty; this method throws an exception if there + is more than one element in the sequence. + + + + + Returns the only element of a sequence that satisfies a + specified condition or a default value if no such element + exists; this method throws an exception if more than one element + satisfies the condition. + + + + + Returns the element at a specified index in a sequence. + + + + + Returns the element at a specified index in a sequence or a + default value if the index is out of range. + + + + + Inverts the order of the elements in a sequence. + + + + + Returns a specified number of contiguous elements from the start + of a sequence. + + + + + Bypasses a specified number of elements in a sequence and then + returns the remaining elements. + + + + + Bypasses elements in a sequence as long as a specified condition + is true and then returns the remaining elements. + + + + + Bypasses elements in a sequence as long as a specified condition + is true and then returns the remaining elements. The element's + index is used in the logic of the predicate function. + + + + + Returns the number of elements in a sequence. + + + + + Returns a number that represents how many elements in the + specified sequence satisfy a condition. + + + + + Returns an that represents the total number + of elements in a sequence. + + + + + Returns an that represents how many elements + in a sequence satisfy a condition. + + + + + Concatenates two sequences. + + + + + Creates a from an . + + + + + Creates an array from an . + + + + + Returns distinct elements from a sequence by using the default + equality comparer to compare values. + + + + + Returns distinct elements from a sequence by using a specified + to compare values. + + + + + Creates a from an + according to a specified key + selector function. + + + + + Creates a from an + according to a specified key + selector function and a key comparer. + + + + + Creates a from an + according to specified key + and element selector functions. + + + + + Creates a from an + according to a specified key + selector function, a comparer and an element selector function. + + + + + Groups the elements of a sequence according to a specified key + selector function. + + + + + Groups the elements of a sequence according to a specified key + selector function and compares the keys by using a specified + comparer. + + + + + Groups the elements of a sequence according to a specified key + selector function and projects the elements for each group by + using a specified function. + + + + + Groups the elements of a sequence according to a specified key + selector function and creates a result value from each group and + its key. + + + + + Groups the elements of a sequence according to a key selector + function. The keys are compared by using a comparer and each + group's elements are projected by using a specified function. + + + + + Groups the elements of a sequence according to a specified key + selector function and creates a result value from each group and + its key. The elements of each group are projected by using a + specified function. + + + + + Groups the elements of a sequence according to a specified key + selector function and creates a result value from each group and + its key. The keys are compared by using a specified comparer. + + + + + Groups the elements of a sequence according to a specified key + selector function and creates a result value from each group and + its key. Key values are compared by using a specified comparer, + and the elements of each group are projected by using a + specified function. + + + + + Applies an accumulator function over a sequence. + + + + + Applies an accumulator function over a sequence. The specified + seed value is used as the initial accumulator value. + + + + + Applies an accumulator function over a sequence. The specified + seed value is used as the initial accumulator value, and the + specified function is used to select the result value. + + + + + Produces the set union of two sequences by using the default + equality comparer. + + + + + Produces the set union of two sequences by using a specified + . + + + + + Returns the elements of the specified sequence or the type + parameter's default value in a singleton collection if the + sequence is empty. + + + + + Returns the elements of the specified sequence or the specified + value in a singleton collection if the sequence is empty. + + + + + Determines whether all elements of a sequence satisfy a condition. + + + + + Determines whether a sequence contains any elements. + + + + + Determines whether any element of a sequence satisfies a + condition. + + + + + Determines whether a sequence contains a specified element by + using the default equality comparer. + + + + + Determines whether a sequence contains a specified element by + using a specified . + + + + + Determines whether two sequences are equal by comparing the + elements by using the default equality comparer for their type. + + + + + Determines whether two sequences are equal by comparing their + elements by using a specified . + + + + + Base implementation for Min/Max operator. + + + + + Base implementation for Min/Max operator for nullable types. + + + + + Returns the minimum value in a generic sequence. + + + + + Invokes a transform function on each element of a generic + sequence and returns the minimum resulting value. + + + + + Returns the maximum value in a generic sequence. + + + + + Invokes a transform function on each element of a generic + sequence and returns the maximum resulting value. + + + + + Makes an enumerator seen as enumerable once more. + + + The supplied enumerator must have been started. The first element + returned is the element the enumerator was on when passed in. + DO NOT use this method if the caller must be a generator. It is + mostly safe among aggregate operations. + + + + + Sorts the elements of a sequence in ascending order according to a key. + + + + + Sorts the elements of a sequence in ascending order by using a + specified comparer. + + + + + Sorts the elements of a sequence in descending order according to a key. + + + + + Sorts the elements of a sequence in descending order by using a + specified comparer. + + + + + Performs a subsequent ordering of the elements in a sequence in + ascending order according to a key. + + + + + Performs a subsequent ordering of the elements in a sequence in + ascending order by using a specified comparer. + + + + + Performs a subsequent ordering of the elements in a sequence in + descending order, according to a key. + + + + + Performs a subsequent ordering of the elements in a sequence in + descending order by using a specified comparer. + + + + + Base implementation for Intersect and Except operators. + + + + + Produces the set intersection of two sequences by using the + default equality comparer to compare values. + + + + + Produces the set intersection of two sequences by using the + specified to compare values. + + + + + Produces the set difference of two sequences by using the + default equality comparer to compare values. + + + + + Produces the set difference of two sequences by using the + specified to compare values. + + + + + Creates a from an + according to a specified key + selector function. + + + + + Creates a from an + according to a specified key + selector function and key comparer. + + + + + Creates a from an + according to specified key + selector and element selector functions. + + + + + Creates a from an + according to a specified key + selector function, a comparer, and an element selector function. + + + + + Correlates the elements of two sequences based on matching keys. + The default equality comparer is used to compare keys. + + + + + Correlates the elements of two sequences based on matching keys. + The default equality comparer is used to compare keys. A + specified is used to compare keys. + + + + + Correlates the elements of two sequences based on equality of + keys and groups the results. The default equality comparer is + used to compare keys. + + + + + Correlates the elements of two sequences based on equality of + keys and groups the results. The default equality comparer is + used to compare keys. A specified + is used to compare keys. + + + + + Computes the sum of a sequence of nullable values. + + + + + Computes the sum of a sequence of nullable + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of nullable values. + + + + + Computes the average of a sequence of nullable values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Computes the sum of a sequence of values. + + + + + Computes the sum of a sequence of + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of values. + + + + + Computes the average of a sequence of values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Returns the minimum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the minimum nullable value. + + + + + Returns the maximum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the maximum nullable value. + + + + + Computes the sum of a sequence of nullable values. + + + + + Computes the sum of a sequence of nullable + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of nullable values. + + + + + Computes the average of a sequence of nullable values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Computes the sum of a sequence of values. + + + + + Computes the sum of a sequence of + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of values. + + + + + Computes the average of a sequence of values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Returns the minimum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the minimum nullable value. + + + + + Returns the maximum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the maximum nullable value. + + + + + Computes the sum of a sequence of nullable values. + + + + + Computes the sum of a sequence of nullable + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of nullable values. + + + + + Computes the average of a sequence of nullable values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Computes the sum of a sequence of values. + + + + + Computes the sum of a sequence of + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of values. + + + + + Computes the average of a sequence of values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Returns the minimum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the minimum nullable value. + + + + + Returns the maximum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the maximum nullable value. + + + + + Computes the sum of a sequence of nullable values. + + + + + Computes the sum of a sequence of nullable + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of nullable values. + + + + + Computes the average of a sequence of nullable values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Computes the sum of a sequence of values. + + + + + Computes the sum of a sequence of + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of values. + + + + + Computes the average of a sequence of values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Returns the minimum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the minimum nullable value. + + + + + Returns the maximum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the maximum nullable value. + + + + + Computes the sum of a sequence of nullable values. + + + + + Computes the sum of a sequence of nullable + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of nullable values. + + + + + Computes the average of a sequence of nullable values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Computes the sum of a sequence of values. + + + + + Computes the sum of a sequence of + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of values. + + + + + Computes the average of a sequence of values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Returns the minimum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the minimum nullable value. + + + + + Returns the maximum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the maximum nullable value. + + + + + Represents a collection of objects that have a common key. + + + + + Gets the key of the . + + + + + Defines an indexer, size property, and Boolean search method for + data structures that map keys to + sequences of values. + + + + + Represents a sorted sequence. + + + + + Performs a subsequent ordering on the elements of an + according to a key. + + + + + Represents a collection of keys each mapped to one or more values. + + + + + Determines whether a specified key is in the . + + + + + Applies a transform function to each key and its associated + values and returns the results. + + + + + Returns a generic enumerator that iterates through the . + + + + + Gets the number of key/value collection pairs in the . + + + + + Gets the collection of values indexed by the specified key. + + + + + See issue #11 + for why this method is needed and cannot be expressed as a + lambda at the call site. + + + + + See issue #11 + for why this method is needed and cannot be expressed as a + lambda at the call site. + + + + + This attribute allows us to define extension methods without + requiring .NET Framework 3.5. For more information, see the section, + Extension Methods in .NET Framework 2.0 Apps, + of Basic Instincts: Extension Methods + column in MSDN Magazine, + issue Nov 2007. + + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + Type of the property. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. When the or methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Represents an abstract JSON token. + + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + The that matches the object path or a null reference if no matching token is found. + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + A flag to indicate whether an error should be thrown if no token is found. + The that matches the object path. + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Specifies reference handling options for the . + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current Json token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current Json token. + + + + + + Gets the Common Language Runtime (CLR) type for the current Json token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts XML to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Represents a collection of . + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Serializes the XML node to a JSON string. + + The node to serialize. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string. + + The node to serialize. + Indicates how the output is formatted. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XmlNode. + + + + Deserializes the XmlNode from a JSON string. + + The JSON string. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XmlNode + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance using the specified . + + The settings to be applied to the . + A new instance using the specified . + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a JSON constructor. + + + + + Represents a token that can contain other tokens. + + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the properties for this instance of a component. + + + A that represents the properties for this component instance. + + + + + Returns the properties for this instance of a component using the attribute array as a filter. + + An array of type that is used as a filter. + + A that represents the filtered properties for this component instance. + + + + + Returns a collection of custom attributes for this instance of a component. + + + An containing the attributes for this object. + + + + + Returns the class name of this instance of a component. + + + The class name of the object, or null if the class does not have a name. + + + + + Returns the name of this instance of a component. + + + The name of the object, or null if the object does not have a name. + + + + + Returns a type converter for this instance of a component. + + + A that is the converter for this object, or null if there is no for this object. + + + + + Returns the default event for this instance of a component. + + + An that represents the default event for this object, or null if this object does not have events. + + + + + Returns the default property for this instance of a component. + + + A that represents the default property for this object, or null if this object does not have properties. + + + + + Returns an editor of the specified type for this instance of a component. + + A that represents the editor for this object. + + An of the specified type that is the editor for this object, or null if the editor cannot be found. + + + + + Returns the events for this instance of a component using the specified attribute array as a filter. + + An array of type that is used as a filter. + + An that represents the filtered events for this component instance. + + + + + Returns the events for this instance of a component. + + + An that represents the events for this component instance. + + + + + Returns an object that contains the property described by the specified property descriptor. + + A that represents the property whose owner is to be found. + + An that represents the owner of the specified property. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON array. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified id. + + The id. + A for the specified id. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + Get and set values for a using dynamic methods. + + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides information surrounding an error. + + + + + Gets or sets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the ISerializable object constructor. + + The ISerializable object constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets the member converter. + + The member converter. + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets the property null value handling. + + The null value handling. + + + + Gets the property default value handling. + + The default value handling. + + + + Gets the property reference loop handling. + + The reference loop handling. + + + + Gets the property object creation handling. + + The object creation handling. + + + + Gets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the identity. + + The identity. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets a collection of options. + + A collection of options. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the extend . + + The extended . + + + + Gets or sets the format. + + The format. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/packages/Newtonsoft.Json.4.5.11/lib/net35/Newtonsoft.Json.dll b/packages/Newtonsoft.Json.4.5.11/lib/net35/Newtonsoft.Json.dll new file mode 100644 index 000000000..0b07407f6 Binary files /dev/null and b/packages/Newtonsoft.Json.4.5.11/lib/net35/Newtonsoft.Json.dll differ diff --git a/packages/Newtonsoft.Json.4.5.11/lib/net35/Newtonsoft.Json.xml b/packages/Newtonsoft.Json.4.5.11/lib/net35/Newtonsoft.Json.xml new file mode 100644 index 000000000..814735b84 --- /dev/null +++ b/packages/Newtonsoft.Json.4.5.11/lib/net35/Newtonsoft.Json.xml @@ -0,0 +1,7662 @@ + + + + Newtonsoft.Json + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + + A . This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token. + + The to read the token from. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Converts a binary value to and from a base 64 string value. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an Entity Framework EntityKey to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + A cached representation of the Enum string representation to respect per Enum field name. + + The type of the Enum. + A map of enum field name to either the field name, or the configured enum member name (). + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + Type of the property. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. When the or methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Represents a trace writer that writes to the application's instances. + + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Represents an abstract JSON token. + + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + The that matches the object path or a null reference if no matching token is found. + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + A flag to indicate whether an error should be thrown if no token is found. + The that matches the object path. + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the ISerializable object constructor. + + The ISerializable object constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Get and set values for a using dynamic methods. + + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Specifies reference handling options for the . + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current Json token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current Json token. + + + + + + Gets the Common Language Runtime (CLR) type for the current Json token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts XML to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Represents a collection of . + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Serializes the XML node to a JSON string. + + The node to serialize. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string. + + The node to serialize. + Indicates how the output is formatted. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XmlNode. + + + + Deserializes the XmlNode from a JSON string. + + The JSON string. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XmlNode + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance using the specified . + + The settings to be applied to the . + A new instance using the specified . + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a JSON constructor. + + + + + Represents a token that can contain other tokens. + + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the properties for this instance of a component. + + + A that represents the properties for this component instance. + + + + + Returns the properties for this instance of a component using the attribute array as a filter. + + An array of type that is used as a filter. + + A that represents the filtered properties for this component instance. + + + + + Returns a collection of custom attributes for this instance of a component. + + + An containing the attributes for this object. + + + + + Returns the class name of this instance of a component. + + + The class name of the object, or null if the class does not have a name. + + + + + Returns the name of this instance of a component. + + + The name of the object, or null if the object does not have a name. + + + + + Returns a type converter for this instance of a component. + + + A that is the converter for this object, or null if there is no for this object. + + + + + Returns the default event for this instance of a component. + + + An that represents the default event for this object, or null if this object does not have events. + + + + + Returns the default property for this instance of a component. + + + A that represents the default property for this object, or null if this object does not have properties. + + + + + Returns an editor of the specified type for this instance of a component. + + A that represents the editor for this object. + + An of the specified type that is the editor for this object, or null if the editor cannot be found. + + + + + Returns the events for this instance of a component using the specified attribute array as a filter. + + An array of type that is used as a filter. + + An that represents the filtered events for this component instance. + + + + + Returns the events for this instance of a component. + + + An that represents the events for this component instance. + + + + + Returns an object that contains the property described by the specified property descriptor. + + A that represents the property whose owner is to be found. + + An that represents the owner of the specified property. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Occurs when a property value is changing. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON array. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified id. + + The id. + A for the specified id. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + Provides information surrounding an error. + + + + + Gets or sets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets the member converter. + + The member converter. + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets the property null value handling. + + The null value handling. + + + + Gets the property default value handling. + + The default value handling. + + + + Gets the property reference loop handling. + + The reference loop handling. + + + + Gets the property object creation handling. + + The object creation handling. + + + + Gets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the identity. + + The identity. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets a collection of options. + + A collection of options. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the extend . + + The extended . + + + + Gets or sets the format. + + The format. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Represents a method that constructs an object. + + The object type to create. + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/packages/Newtonsoft.Json.4.5.11/lib/net40/Newtonsoft.Json.dll b/packages/Newtonsoft.Json.4.5.11/lib/net40/Newtonsoft.Json.dll new file mode 100644 index 000000000..81639f9b1 Binary files /dev/null and b/packages/Newtonsoft.Json.4.5.11/lib/net40/Newtonsoft.Json.dll differ diff --git a/packages/Newtonsoft.Json.4.5.11/lib/net40/Newtonsoft.Json.xml b/packages/Newtonsoft.Json.4.5.11/lib/net40/Newtonsoft.Json.xml new file mode 100644 index 000000000..fd3b523d8 --- /dev/null +++ b/packages/Newtonsoft.Json.4.5.11/lib/net40/Newtonsoft.Json.xml @@ -0,0 +1,7905 @@ + + + + Newtonsoft.Json + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + + A . This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token. + + The to read the token from. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Converts a binary value to and from a base 64 string value. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an Entity Framework EntityKey to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an ExpandoObject to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + A cached representation of the Enum string representation to respect per Enum field name. + + The type of the Enum. + A map of enum field name to either the field name, or the configured enum member name (). + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Represents a trace writer that writes to the application's instances. + + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Represents an abstract JSON token. + + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + The that matches the object path or a null reference if no matching token is found. + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + A flag to indicate whether an error should be thrown if no token is found. + The that matches the object path. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the object's properties. + + The object's properties. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the ISerializable object constructor. + + The ISerializable object constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Get and set values for a using dynamic methods. + + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + Type of the property. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. When the or methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Specifies reference handling options for the . + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current Json token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current Json token. + + + + + + Gets the Common Language Runtime (CLR) type for the current Json token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts XML to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Represents a collection of . + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using a collection of . + + The object to serialize. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Asynchronously deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Asynchronously populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous populate operation. + + + + + Serializes the XML node to a JSON string. + + The node to serialize. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string. + + The node to serialize. + Indicates how the output is formatted. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XmlNode. + + + + Deserializes the XmlNode from a JSON string. + + The JSON string. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XmlNode + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance using the specified . + + The settings to be applied to the . + A new instance using the specified . + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a JSON constructor. + + + + + Represents a token that can contain other tokens. + + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the properties for this instance of a component. + + + A that represents the properties for this component instance. + + + + + Returns the properties for this instance of a component using the attribute array as a filter. + + An array of type that is used as a filter. + + A that represents the filtered properties for this component instance. + + + + + Returns a collection of custom attributes for this instance of a component. + + + An containing the attributes for this object. + + + + + Returns the class name of this instance of a component. + + + The class name of the object, or null if the class does not have a name. + + + + + Returns the name of this instance of a component. + + + The name of the object, or null if the object does not have a name. + + + + + Returns a type converter for this instance of a component. + + + A that is the converter for this object, or null if there is no for this object. + + + + + Returns the default event for this instance of a component. + + + An that represents the default event for this object, or null if this object does not have events. + + + + + Returns the default property for this instance of a component. + + + A that represents the default property for this object, or null if this object does not have properties. + + + + + Returns an editor of the specified type for this instance of a component. + + A that represents the editor for this object. + + An of the specified type that is the editor for this object, or null if the editor cannot be found. + + + + + Returns the events for this instance of a component using the specified attribute array as a filter. + + An array of type that is used as a filter. + + An that represents the filtered events for this component instance. + + + + + Returns the events for this instance of a component. + + + An that represents the events for this component instance. + + + + + Returns an object that contains the property described by the specified property descriptor. + + A that represents the property whose owner is to be found. + + An that represents the owner of the specified property. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Occurs when a property value is changing. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON array. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified id. + + The id. + A for the specified id. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Provides information surrounding an error. + + + + + Gets or sets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets the member converter. + + The member converter. + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets the property null value handling. + + The null value handling. + + + + Gets the property default value handling. + + The default value handling. + + + + Gets the property reference loop handling. + + The reference loop handling. + + + + Gets the property object creation handling. + + The object creation handling. + + + + Gets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the identity. + + The identity. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets a collection of options. + + A collection of options. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the extend . + + The extended . + + + + Gets or sets the format. + + The format. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic that returns a result + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Returns a Restrictions object which includes our current restrictions merged + with a restriction limiting our type + + + + + Represents a method that constructs an object. + + The object type to create. + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/packages/Newtonsoft.Json.4.5.11/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.dll b/packages/Newtonsoft.Json.4.5.11/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.dll new file mode 100644 index 000000000..40646a892 Binary files /dev/null and b/packages/Newtonsoft.Json.4.5.11/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.dll differ diff --git a/packages/Newtonsoft.Json.4.5.11/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.xml b/packages/Newtonsoft.Json.4.5.11/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.xml new file mode 100644 index 000000000..7ce6fd564 --- /dev/null +++ b/packages/Newtonsoft.Json.4.5.11/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.xml @@ -0,0 +1,7091 @@ + + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + + A . This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token. + + The to read the token from. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a to and from JSON and BSON. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + A cached representation of the Enum string representation to respect per Enum field name. + + The type of the Enum. + A map of enum field name to either the field name, or the configured enum member name (). + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Indicates the method that will be used during deserialization for locating and loading assemblies. + + + + + In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method is used to load the assembly. + + + + + In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the Assembly class is used to load the assembly. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance using the specified . + + The settings to be applied to the . + A new instance using the specified . + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current Json token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current Json token. + + + + + + Gets the Common Language Runtime (CLR) type for the current Json token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Represents a token that can contain other tokens. + + + + + Represents an abstract JSON token. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + The that matches the object path or a null reference if no matching token is found. + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + A flag to indicate whether an error should be thrown if no token is found. + The that matches the object path. + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Represents a JSON constructor. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the identity. + + The identity. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets a collection of options. + + A collection of options. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the extend . + + The extended . + + + + Gets or sets the format. + + The format. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified id. + + The id. + A for the specified id. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + Allows users to control class loading and mandate what class to load. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object + The type of the object the formatter creates a new instance of. + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Provides information surrounding an error. + + + + + Gets or sets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets the member converter. + + The member converter. + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets the property null value handling. + + The null value handling. + + + + Gets the property default value handling. + + The default value handling. + + + + Gets the property reference loop handling. + + The reference loop handling. + + + + Gets the property object creation handling. + + The object creation handling. + + + + Gets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Specifies what messages to output for the class. + + + + + Output no tracing and debugging messages. + + + + + Output error-handling messages. + + + + + Output warnings and error-handling messages. + + + + + Output informational messages, warnings, and error-handling messages. + + + + + Output all debugging and tracing messages. + + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/packages/Newtonsoft.Json.4.5.11/lib/sl3-wp/Newtonsoft.Json.dll b/packages/Newtonsoft.Json.4.5.11/lib/sl3-wp/Newtonsoft.Json.dll new file mode 100644 index 000000000..93e740db3 Binary files /dev/null and b/packages/Newtonsoft.Json.4.5.11/lib/sl3-wp/Newtonsoft.Json.dll differ diff --git a/packages/Newtonsoft.Json.4.5.11/lib/sl3-wp/Newtonsoft.Json.xml b/packages/Newtonsoft.Json.4.5.11/lib/sl3-wp/Newtonsoft.Json.xml new file mode 100644 index 000000000..c72659524 --- /dev/null +++ b/packages/Newtonsoft.Json.4.5.11/lib/sl3-wp/Newtonsoft.Json.xml @@ -0,0 +1,7212 @@ + + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + + A . This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token. + + The to read the token from. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a to and from JSON and BSON. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + A cached representation of the Enum string representation to respect per Enum field name. + + The type of the Enum. + A map of enum field name to either the field name, or the configured enum member name (). + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts XML to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Indicates the method that will be used during deserialization for locating and loading assemblies. + + + + + In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method is used to load the assembly. + + + + + In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the Assembly class is used to load the assembly. + + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance using the specified . + + The settings to be applied to the . + A new instance using the specified . + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current Json token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current Json token. + + + + + + Gets the Common Language Runtime (CLR) type for the current Json token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Represents a token that can contain other tokens. + + + + + Represents an abstract JSON token. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + The that matches the object path or a null reference if no matching token is found. + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + A flag to indicate whether an error should be thrown if no token is found. + The that matches the object path. + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Represents a JSON constructor. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Allows users to control class loading and mandate what class to load. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object + The type of the object the formatter creates a new instance of. + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Provides information surrounding an error. + + + + + Gets or sets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets the member converter. + + The member converter. + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets the property null value handling. + + The null value handling. + + + + Gets the property default value handling. + + The default value handling. + + + + Gets the property reference loop handling. + + The reference loop handling. + + + + Gets the property object creation handling. + + The object creation handling. + + + + Gets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Specifies what messages to output for the class. + + + + + Output no tracing and debugging messages. + + + + + Output error-handling messages. + + + + + Output warnings and error-handling messages. + + + + + Output informational messages, warnings, and error-handling messages. + + + + + Output all debugging and tracing messages. + + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the identity. + + The identity. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets a collection of options. + + A collection of options. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the extend . + + The extended . + + + + Gets or sets the format. + + The format. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified id. + + The id. + A for the specified id. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/packages/Newtonsoft.Json.4.5.11/lib/sl4-windowsphone71/Newtonsoft.Json.dll b/packages/Newtonsoft.Json.4.5.11/lib/sl4-windowsphone71/Newtonsoft.Json.dll new file mode 100644 index 000000000..93e740db3 Binary files /dev/null and b/packages/Newtonsoft.Json.4.5.11/lib/sl4-windowsphone71/Newtonsoft.Json.dll differ diff --git a/packages/Newtonsoft.Json.4.5.11/lib/sl4-windowsphone71/Newtonsoft.Json.xml b/packages/Newtonsoft.Json.4.5.11/lib/sl4-windowsphone71/Newtonsoft.Json.xml new file mode 100644 index 000000000..c72659524 --- /dev/null +++ b/packages/Newtonsoft.Json.4.5.11/lib/sl4-windowsphone71/Newtonsoft.Json.xml @@ -0,0 +1,7212 @@ + + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + + A . This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token. + + The to read the token from. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a to and from JSON and BSON. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + A cached representation of the Enum string representation to respect per Enum field name. + + The type of the Enum. + A map of enum field name to either the field name, or the configured enum member name (). + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts XML to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Indicates the method that will be used during deserialization for locating and loading assemblies. + + + + + In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method is used to load the assembly. + + + + + In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the Assembly class is used to load the assembly. + + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance using the specified . + + The settings to be applied to the . + A new instance using the specified . + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current Json token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current Json token. + + + + + + Gets the Common Language Runtime (CLR) type for the current Json token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Represents a token that can contain other tokens. + + + + + Represents an abstract JSON token. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + The that matches the object path or a null reference if no matching token is found. + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + A flag to indicate whether an error should be thrown if no token is found. + The that matches the object path. + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Represents a JSON constructor. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Allows users to control class loading and mandate what class to load. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object + The type of the object the formatter creates a new instance of. + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Provides information surrounding an error. + + + + + Gets or sets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets the member converter. + + The member converter. + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets the property null value handling. + + The null value handling. + + + + Gets the property default value handling. + + The default value handling. + + + + Gets the property reference loop handling. + + The reference loop handling. + + + + Gets the property object creation handling. + + The object creation handling. + + + + Gets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Specifies what messages to output for the class. + + + + + Output no tracing and debugging messages. + + + + + Output error-handling messages. + + + + + Output warnings and error-handling messages. + + + + + Output informational messages, warnings, and error-handling messages. + + + + + Output all debugging and tracing messages. + + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the identity. + + The identity. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets a collection of options. + + A collection of options. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the extend . + + The extended . + + + + Gets or sets the format. + + The format. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified id. + + The id. + A for the specified id. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/packages/Newtonsoft.Json.4.5.11/lib/sl4/Newtonsoft.Json.dll b/packages/Newtonsoft.Json.4.5.11/lib/sl4/Newtonsoft.Json.dll new file mode 100644 index 000000000..f44757ae3 Binary files /dev/null and b/packages/Newtonsoft.Json.4.5.11/lib/sl4/Newtonsoft.Json.dll differ diff --git a/packages/Newtonsoft.Json.4.5.11/lib/sl4/Newtonsoft.Json.xml b/packages/Newtonsoft.Json.4.5.11/lib/sl4/Newtonsoft.Json.xml new file mode 100644 index 000000000..3d63c3b2f --- /dev/null +++ b/packages/Newtonsoft.Json.4.5.11/lib/sl4/Newtonsoft.Json.xml @@ -0,0 +1,7234 @@ + + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + + A . This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token. + + The to read the token from. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a to and from JSON and BSON. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an ExpandoObject to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + A cached representation of the Enum string representation to respect per Enum field name. + + The type of the Enum. + A map of enum field name to either the field name, or the configured enum member name (). + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Indicates the method that will be used during deserialization for locating and loading assemblies. + + + + + In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method is used to load the assembly. + + + + + In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the Assembly class is used to load the assembly. + + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance using the specified . + + The settings to be applied to the . + A new instance using the specified . + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current Json token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current Json token. + + + + + + Gets the Common Language Runtime (CLR) type for the current Json token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Represents a token that can contain other tokens. + + + + + Represents an abstract JSON token. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + The that matches the object path or a null reference if no matching token is found. + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + A flag to indicate whether an error should be thrown if no token is found. + The that matches the object path. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Represents a JSON constructor. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Allows users to control class loading and mandate what class to load. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object + The type of the object the formatter creates a new instance of. + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Provides information surrounding an error. + + + + + Gets or sets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the object's properties. + + The object's properties. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets the member converter. + + The member converter. + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets the property null value handling. + + The null value handling. + + + + Gets the property default value handling. + + The default value handling. + + + + Gets the property reference loop handling. + + The reference loop handling. + + + + Gets the property object creation handling. + + The object creation handling. + + + + Gets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Specifies what messages to output for the class. + + + + + Output no tracing and debugging messages. + + + + + Output error-handling messages. + + + + + Output warnings and error-handling messages. + + + + + Output informational messages, warnings, and error-handling messages. + + + + + Output all debugging and tracing messages. + + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic that returns a result + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Returns a Restrictions object which includes our current restrictions merged + with a restriction limiting our type + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the identity. + + The identity. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets a collection of options. + + A collection of options. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the extend . + + The extended . + + + + Gets or sets the format. + + The format. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified id. + + The id. + A for the specified id. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/packages/Newtonsoft.Json.4.5.11/lib/winrt45/Newtonsoft.Json.dll b/packages/Newtonsoft.Json.4.5.11/lib/winrt45/Newtonsoft.Json.dll new file mode 100644 index 000000000..0ec801d69 Binary files /dev/null and b/packages/Newtonsoft.Json.4.5.11/lib/winrt45/Newtonsoft.Json.dll differ diff --git a/packages/Newtonsoft.Json.4.5.11/lib/winrt45/Newtonsoft.Json.xml b/packages/Newtonsoft.Json.4.5.11/lib/winrt45/Newtonsoft.Json.xml new file mode 100644 index 000000000..21b048950 --- /dev/null +++ b/packages/Newtonsoft.Json.4.5.11/lib/winrt45/Newtonsoft.Json.xml @@ -0,0 +1,7430 @@ + + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + + A . This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token. + + The to read the token from. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a to and from JSON and BSON. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an ExpandoObject to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + A cached representation of the Enum string representation to respect per Enum field name. + + The type of the Enum. + A map of enum field name to either the field name, or the configured enum member name (). + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts XML to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Indicates the method that will be used during deserialization for locating and loading assemblies. + + + + + In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method is used to load the assembly. + + + + + In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the Assembly class is used to load the assembly. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using a collection of . + + The object to serialize. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using a collection of . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Asynchronously deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Asynchronously populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous populate operation. + + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance using the specified . + + The settings to be applied to the . + A new instance using the specified . + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current Json token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current Json token. + + + + + + Gets the Common Language Runtime (CLR) type for the current Json token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Represents a token that can contain other tokens. + + + + + Represents an abstract JSON token. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + The that matches the object path or a null reference if no matching token is found. + + + + Selects the token that matches the object path. + + + The object path from the current to the + to be returned. This must be a string of property names or array indexes separated + by periods, such as Tables[0].DefaultView[0].Price in C# or + Tables(0).DefaultView(0).Price in Visual Basic. + + A flag to indicate whether an error should be thrown if no token is found. + The that matches the object path. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Represents a JSON constructor. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has childen tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the identity. + + The identity. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets a collection of options. + + A collection of options. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the extend . + + The extended . + + + + Gets or sets the format. + + The format. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified id. + + The id. + A for the specified id. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + Allows users to control class loading and mandate what class to load. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object + The type of the object the formatter creates a new instance of. + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Provides information surrounding an error. + + + + + Gets or sets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the object's properties. + + The object's properties. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets the member converter. + + The member converter. + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets the property null value handling. + + The null value handling. + + + + Gets the property default value handling. + + The default value handling. + + + + Gets the property reference loop handling. + + The reference loop handling. + + + + Gets the property object creation handling. + + The object creation handling. + + + + Gets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Specifies what messages to output for the class. + + + + + Output no tracing and debugging messages. + + + + + Output error-handling messages. + + + + + Output warnings and error-handling messages. + + + + + Output informational messages, warnings, and error-handling messages. + + + + + Output all debugging and tracing messages. + + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic that returns a result + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Returns a Restrictions object which includes our current restrictions merged + with a restriction limiting our type + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/packages/Npgsql.2.0.11/Npgsql.2.0.11.nupkg b/packages/Npgsql.2.0.11/Npgsql.2.0.11.nupkg deleted file mode 100644 index 9e6989208..000000000 Binary files a/packages/Npgsql.2.0.11/Npgsql.2.0.11.nupkg and /dev/null differ diff --git a/packages/Npgsql.2.0.11/lib/Net11/Npgsql.dll b/packages/Npgsql.2.0.11/lib/Net11/Npgsql.dll deleted file mode 100644 index d28e743df..000000000 Binary files a/packages/Npgsql.2.0.11/lib/Net11/Npgsql.dll and /dev/null differ diff --git a/packages/Npgsql.2.0.11/lib/Net35/Npgsql.dll b/packages/Npgsql.2.0.11/lib/Net35/Npgsql.dll deleted file mode 100644 index b5e62bd69..000000000 Binary files a/packages/Npgsql.2.0.11/lib/Net35/Npgsql.dll and /dev/null differ diff --git a/packages/Npgsql.2.0.11/lib/Net40/Mono.Security.dll b/packages/Npgsql.2.0.11/lib/Net40/Mono.Security.dll deleted file mode 100644 index 6accde791..000000000 Binary files a/packages/Npgsql.2.0.11/lib/Net40/Mono.Security.dll and /dev/null differ diff --git a/packages/Npgsql.2.0.11/lib/Net40/Npgsql.dll b/packages/Npgsql.2.0.11/lib/Net40/Npgsql.dll deleted file mode 100644 index c761f5a77..000000000 Binary files a/packages/Npgsql.2.0.11/lib/Net40/Npgsql.dll and /dev/null differ diff --git a/packages/Npgsql.2.0.14.3/Npgsql.2.0.14.3.nupkg b/packages/Npgsql.2.0.14.3/Npgsql.2.0.14.3.nupkg new file mode 100644 index 000000000..791b92eed Binary files /dev/null and b/packages/Npgsql.2.0.14.3/Npgsql.2.0.14.3.nupkg differ diff --git a/packages/Npgsql.2.0.14.3/Npgsql.2.0.14.3.nuspec b/packages/Npgsql.2.0.14.3/Npgsql.2.0.14.3.nuspec new file mode 100644 index 000000000..8877298bd --- /dev/null +++ b/packages/Npgsql.2.0.14.3/Npgsql.2.0.14.3.nuspec @@ -0,0 +1,19 @@ + + + + Npgsql + 2.0.14.3 + Npgsql + Francisco Figueiredo Jr., Josh Cooley, Dave Page, Jon Asher, Brar Piening, Chris Morgan, Hiroshi Saito, Jon Hanna, Federico Di Gregorio, Glen Parker, Shay Rojansky + Francisco Figueiredo Jr., Josh Cooley, Dave Page, Jon Asher, Brar Piening, Chris Morgan, Hiroshi Saito, Jon Hanna, Federico Di Gregorio, Glen Parker, Shay Rojansky + http://www.opensource.org/licenses/bsd-license.php + http://project.npgsql.org/ + false + Npgsql is a .Net data provider for Postgresql. It allows any program developed for .Net framework to access database server. It is implemented in 100% C# code. Works with Postgresql 7.x and above. + Npgsql is a .Net data provider for Postgresql. + This is a small bugfix release for EF. + Copyright 2002 - 2013 Npgsql Development Team + en-US + Npgsql postgres data database Postgresql + + \ No newline at end of file diff --git a/packages/Npgsql.2.0.11/lib/Net11/Mono.Security.dll b/packages/Npgsql.2.0.14.3/lib/net20/Mono.Security.dll similarity index 100% rename from packages/Npgsql.2.0.11/lib/Net11/Mono.Security.dll rename to packages/Npgsql.2.0.14.3/lib/net20/Mono.Security.dll diff --git a/packages/Npgsql.2.0.14.3/lib/net20/Npgsql.dll b/packages/Npgsql.2.0.14.3/lib/net20/Npgsql.dll new file mode 100644 index 000000000..7d44df265 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net20/Npgsql.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net20/Npgsql.pdb b/packages/Npgsql.2.0.14.3/lib/net20/Npgsql.pdb new file mode 100644 index 000000000..b244987e1 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net20/Npgsql.pdb differ diff --git a/packages/Npgsql.2.0.11/lib/Net35/Npgsql.XML b/packages/Npgsql.2.0.14.3/lib/net20/Npgsql.xml similarity index 83% rename from packages/Npgsql.2.0.11/lib/Net35/Npgsql.XML rename to packages/Npgsql.2.0.14.3/lib/net20/Npgsql.xml index 428af55d5..9643cce41 100644 --- a/packages/Npgsql.2.0.11/lib/Net35/Npgsql.XML +++ b/packages/Npgsql.2.0.14.3/lib/net20/Npgsql.xml @@ -4,1492 +4,1931 @@ Npgsql - + - This class represents a parameter to a command that will be sent to server + Handles serialisation of .NET array or IEnumeration to pg format. + Arrays of arrays, enumerations of enumerations, arrays of enumerations etc. + are treated as multi-dimensional arrays (in much the same manner as an array of arrays + is used to emulate multi-dimensional arrays in languages that lack native support for them). + If such an enumeration of enumerations is "jagged" (as opposed to rectangular, cuboid, + hypercuboid, hyperhypercuboid, etc) then this class will "correctly" serialise it, but pg + will raise an error as it doesn't allow jagged arrays. - + - Initializes a new instance of the NpgsqlParameter class. + Create an ArrayNativeToBackendTypeConverter with the element converter passed + The that would be used to serialise the element type. - + - Initializes a new instance of the NpgsqlParameter - class with the parameter m_Name and a value of the new NpgsqlParameter. + Serialise the enumeration or array. - The m_Name of the parameter to map. - An Object that is the value of the NpgsqlParameter. - -

When you specify an Object - in the value parameter, the DbType is - inferred from the .NET Framework type of the Object.

-

When using this constructor, you must be aware of a possible misuse of the constructor which takes a DbType parameter. - This happens when calling this constructor passing an int 0 and the compiler thinks you are passing a value of DbType. - Use Convert.ToInt32(value) for example to have compiler calling the correct constructor.

-
- + - Initializes a new instance of the NpgsqlParameter - class with the parameter m_Name and the data type. + Handles parsing of pg arrays into .NET arrays. - The m_Name of the parameter to map. - One of the DbType values. - + - Initializes a new instance of the NpgsqlParameter - class with the parameter m_Name, the DbType, and the size. + Takes a string representation of a pg 1-dimensional array + (or a 1-dimensional row within an n-dimensional array) + and allows enumeration of the string represenations of each items. - The m_Name of the parameter to map. - One of the DbType values. - The length of the parameter. - + - Initializes a new instance of the NpgsqlParameter - class with the parameter m_Name, the DbType, the size, - and the source column m_Name. + Takes a string representation of a pg n-dimensional array + and allows enumeration of the string represenations of the next + lower level of rows (which in turn can be taken as (n-1)-dimensional arrays. - The m_Name of the parameter to map. - One of the DbType values. - The length of the parameter. - The m_Name of the source column. - + - Initializes a new instance of the NpgsqlParameter - class with the parameter m_Name, the DbType, the size, - the source column m_Name, a ParameterDirection, - the precision of the parameter, the scale of the parameter, a - DataRowVersion to use, and the - value of the parameter. + Takes an ArrayList which may be an ArrayList of ArrayLists, an ArrayList of ArrayLists of ArrayLists + and so on and enumerates the items that aren't ArrayLists (the leaf nodes if we think of the ArrayList + passed as a tree). Simply uses the ArrayLists' own IEnumerators to get that of the next, + pushing them onto a stack until we hit something that isn't an ArrayList. + ArrayList to enumerate + IEnumerable - The m_Name of the parameter to map. - One of the DbType values. - The length of the parameter. - The m_Name of the source column. - One of the ParameterDirection values. - true if the value of the field can be null, otherwise false. - The total number of digits to the left and right of the decimal point to which - Value is resolved. - The total number of decimal places to which - Value is resolved. - One of the DataRowVersion values. - An Object that is the value - of the NpgsqlParameter. - + - Creates a new NpgsqlParameter that - is a copy of the current instance. + Create a new ArrayBackendToNativeTypeConverter - A new NpgsqlParameter that is a copy of this instance. + for the element type. - + - Gets or sets the maximum number of digits used to represent the - Value property. + Creates an array from pg representation. - The maximum number of digits used to represent the - Value property. - The default value is 0, which indicates that the data provider - sets the precision for Value. - + - Gets or sets the number of decimal places to which - Value is resolved. + Creates an array list from pg represenation of an array. + Multidimensional arrays are treated as ArrayLists of ArrayLists - The number of decimal places to which - Value is resolved. The default is 0. - + - Gets or sets the maximum size, in bytes, of the data within the column. + Creates an n-dimensional array from an ArrayList of ArrayLists or + a 1-dimensional array from something else. - The maximum size, in bytes, of the data within the column. - The default value is inferred from the parameter value. + to convert + produced. - + - Gets or sets the DbType of the parameter. + Takes an array of ints and treats them like the limits of a set of counters. + Retains a matching set of ints that is set to all zeros on the first ++ + On a ++ it increments the "right-most" int. If that int reaches it's + limit it is set to zero and the one before it is incremented, and so on. + + Making this a more general purpose class is pretty straight-forward, but we'll just put what we need here. - One of the DbType values. The default is String. - + - Gets or sets the DbType of the parameter. + Implements a bit string; a collection of zero or more bits which can each be 1 or 0. + BitString's behave as a list of bools, though like most strings and unlike most collections the position + tends to be of as much significance as the value. + BitStrings are often used as masks, and are commonly cast to and from other values. - One of the DbType values. The default is String. - + - Gets or sets a value indicating whether the parameter is input-only, - output-only, bidirectional, or a stored procedure return value parameter. + Represents the empty string. - One of the ParameterDirection - values. The default is Input. - + - Gets or sets a value indicating whether the parameter accepts null values. + Create a BitString from an enumeration of boolean values. The BitString will contain + those booleans in the order they came in. - true if null values are accepted; otherwise, false. The default is false. + The boolean values. - + - Gets or sets the m_Name of the NpgsqlParameter. + Creates a BitString filled with a given number of true or false values. - The m_Name of the NpgsqlParameter. - The default is an empty string. + The value to fill the string with. + The number of bits to fill. - + - The m_Name scrubbed of any optional marker + Creats a bitstring from a string. + The string to copy from. + - + - Gets or sets the m_Name of the source column that is mapped to the - DataSet and used for loading or - returning the Value. + Creates a single-bit element from a boolean value. - The m_Name of the source column that is mapped to the - DataSet. The default is an empty string. + The bool value which determines whether + the bit is 1 or 0. - + - Gets or sets the DataRowVersion - to use when loading Value. + Creates a bitstring from an unsigned integer value. The string will be the shortest required to + contain the integer (e.g. 1 bit for 0 or 1, 2 for 2 or 3, 3 for 4-7, and so on). - One of the DataRowVersion values. - The default is Current. + The integer. + This method is not CLS Compliant, and may not be available to some languages. - + - Gets or sets the value of the parameter. + Creates a bitstring from an integer value. The string will be the shortest required to + contain the integer (e.g. 1 bit for 0 or 1, 2 for 2 or 3, 3 for 4-7, and so on). - An Object that is the value of the parameter. - The default value is null. + The integer. - + - Gets or sets the value of the parameter. + Finds the first instance of a given value - An Object that is the value of the parameter. - The default value is null. - - - - This class represents the Parse message sent to PostgreSQL - server. - - + The value - whether true or false - to search for. + The index of the value found, or -1 if none are present. - + - For classes representing messages sent from the client to the server. + True if there is at least one bit with the value looked for. + The value - true or false - to detect. + True if at least one bit was the same as item, false otherwise. - + - Writes given objects into a stream for PostgreSQL COPY in default copy format (not CSV or BINARY). + Copies the bitstring to an array of bools. + The boolean array to copy to. + The index in the array to start copying from. - + - Return an exact copy of this NpgsqlConnectionString. + Returns an enumerator that enumerates through the string. + The enumerator. - + - This function will set value for known key, both private member and base[key]. + Creats a bitstring by concatenating another onto this one. - - + The string to append to this one. + The combined strings. - + - The function will modify private member only, not base[key]. + Returns a substring of this string. - - + The position to start from, must be between 0 and the length of the string. + The length of the string to return, must be greater than zero, and may not be + so large that the start + length exceeds the bounds of this instance. + The Bitstring identified - + - Clear the member and assign them to the default value. + Returns a substring of this string. + The position to start from, must be between 0 and the length of the string, + the rest of the string is returned. + The Bitstring identified - + - Compatibilty version. When possible, behaviour caused by breaking changes will be preserved - if this version is less than that where the breaking change was introduced. + A logical and between this string and another. The two strings must be the same length. - - + Another BitString to AND with this one. + A bitstring with 1 where both BitStrings had 1 and 0 otherwise. + + - Case insensative accessor for indivual connection string values. + A logical or between this string and another. The two strings must be the same length. + Another BitString to OR with this one. + A bitstring with 1 where either BitString had 1 and 0 otherwise. - + - Common base class for all derived MD5 implementations. + A logical xor between this string and another. The two strings must be the same length. + Another BitString to XOR with this one. + A bitstring with 1 where one BitStrings and the other had 0, + and 0 where they both had 1 or both had 0. - + - Called from constructor of derived class. + A bitstring that is the logical inverse of this one. + A bitstring of the same length as this with 1 where this has 0 and vice-versa. - + - Finalizer for HashAlgorithm + Shifts the string operand bits to the left, filling with zeros to produce a + string of the same length. + The number of bits to shift to the left. + A left-shifted bitstring. + The behaviour of LShift is closer to what one would expect from dealing + with PostgreSQL bit-strings than in using the same operations on integers in .NET + In particular, negative operands result in a right-shift, and operands greater than + the length of the string will shift it entirely, resulting in a zero-filled string. + - + - Computes the entire hash of all the bytes in the byte array. + Shifts the string operand bits to the right, filling with zeros to produce a + string of the same length. + The number of bits to shift to the right. + A right-shifted bitstring. + The behaviour of RShift is closer to what one would expect from dealing + with PostgreSQL bit-strings than in using the same operations on integers in .NET + In particular, negative operands result in a left-shift, and operands greater than + the length of the string will shift it entirely, resulting in a zero-filled string. It also performs + a logical shift, rather than an arithmetic shift, so it always sets the vacated bit positions to zero + (like PostgreSQL and like .NET for unsigned integers but not for signed integers). + - + - When overridden in a derived class, drives the hashing function. + Returns true if the this string is identical to the argument passed. - - - - + - When overridden in a derived class, this pads and hashes whatever data might be left in the buffers and then returns the hash created. + Compares two strings. Strings are compared as strings, so while 0 being less than 1 will + mean a comparison between two strings of the same size is the same as treating them as numbers, + in the case of two strings of differing lengths the comparison starts at the right-most (most significant) + bit, and if all bits of the shorter string are exhausted without finding a comparison, then the larger + string is deemed to be greater than the shorter (0010 is greater than 0001 but less than 00100). + Another string to compare with this one. + A value if the two strings are identical, an integer less + than zero if this is less than the argument, and an integer greater + than zero otherwise. - + - When overridden in a derived class, initializes the object to prepare for hashing. + Compares the string with another object. + The object to compare with. + If the object is null then this string is considered greater. If the object is another BitString + then they are compared as in the explicit comparison for BitStrings + in any other case a is thrown. - + - Used for stream chaining. Computes hash as data passes through it. + Compares this BitString with an object for equality. - The buffer from which to grab the data to be copied. - The offset into the input buffer to start reading at. - The number of bytes to be copied. - The buffer to write the copied data to. - At what point in the outputBuffer to write the data at. - + - Used for stream chaining. Computes hash as data passes through it. Finishes off the hash. + Returns a code for use in hashing operations. - The buffer from which to grab the data to be copied. - The offset into the input buffer to start reading at. - The number of bytes to be copied. - + - Get whether or not the hash can transform multiple blocks at a time. - Note: MUST be overriden if descendant can transform multiple block - on a single call! + Returns a string representation of the BitString. + + A string which can contain a letter and optionally a number which sets a minimum size for the string + returned. In each case using the lower-case form of the letter will result in a lower-case string + being returned. + + + B + A string of 1s and 0s. + + + X + An hexadecimal string (will result in an error unless the string's length is divisible by 4). + + + G + A string of 1s and 0s in single-quotes preceded by 'B' (Postgres bit string literal syntax). + + Y + An hexadecimal string in single-quotes preceded by 'X' (Postgres bit literal syntax, will result in an error unless the string's length is divisible by 4. + + C + The format produced by format-string "Y" if legal, otherwise that produced by format-string "G". + E + The most compact safe representation for Postgres. If single bit will be either a 0 or a 1. Otherwise if it + can be that produce by format string "Y" it will, otherwise if there are less than 9bits in length it will be that + produced by format-string "G". For longer strings that cannot be represented in hexadecimal it will be a string + representing the first part of the string in format "Y" followed by the PostgreSQL concatenation operator, followed + by the final bits in the format "G". E.g. "X'13DCE'||B'110'" + If format is empty or null, it is treated as if "B" had been passed (the default repreesentation, and that + generally used by PostgreSQL for display). + + The formatted string. - + - Gets the previously computed hash. + Returns a string representation for the Bitstring + A string containing '0' and '1' characters. - + - Returns the size in bits of the hash. + Returns the same string as . formatProvider is ignored. - + - Must be overriden if not 1 + Parses a string to produce a BitString. Most formats that can be produced by + can be accepted, but hexadecimal + can be interpreted with the preceding X' to mark the following characters as + being hexadecimal rather than binary. - + - Must be overriden if not 1 + Performs a logical AND on the two operands. - + - Called from constructor of derived class. + Performs a logcial OR on the two operands. - + - Creates the default derived class. + Perofrms a logical EXCLUSIVE-OR on the two operands - + - Given a join expression and a projection, fetch all columns in the projection - that reference columns in the join. + Performs a logical NOT on the operand. - + - Given an InputExpression append all from names (including nested joins) to the list. + Concatenates the operands. - + - Get new ColumnExpression that will be used in projection that had it's existing columns moved. - These should be simple references to the inner column + Left-shifts the string BitString. - + - Every property accessed in the list of columns must be adjusted for a new scope + Right-shifts the string BitString. - + - This class provides many util methods to handle - reading and writing of PostgreSQL protocol messages. - + Compares the two operands. + - + - This method takes a ProtocolVersion and returns an integer - version number that the Postgres backend will recognize in a - startup packet. - + Compares the two operands. + - + - This method takes a version string as returned by SELECT VERSION() and returns - a valid version string ("7.2.2" for example). - This is only needed when running protocol version 2. - This does not do any validity checks. + Compares the two operands. - + - This method gets a C NULL terminated string from the network stream. - It keeps reading a byte in each time until a NULL byte is returned. - It returns the resultant string of bytes read. - This string is sent from backend. - + Compares the two operands. + - + - Reads requested number of bytes from stream with retries until Stream.Read returns 0 or count is reached. + Compares the two operands. - Stream to read - byte buffer to fill - starting position to fill the buffer - number of bytes to read - The number of bytes read. May be less than count if no more bytes are available. - - - This method writes a C NULL terminated string to the network stream. - It appends a NULL terminator to the end of the String. - + - This method writes a C NULL terminated string to the network stream. - It appends a NULL terminator to the end of the String. - + Compares the two operands. + - + - This method writes a C NULL terminated string limited in length to the - backend server. - It pads the string with null bytes to the size specified. - + Interprets the bitstring as a series of bits in an encoded character string, + encoded according to the Encoding passed, and returns that string. + The bitstring must contain a whole number of octets(bytes) and also be + valid according to the Encoding passed. + + The to use in producing the string. + The string that was encoded in the BitString. - + - Write a 32-bit integer to the given stream in the correct byte order. + Interprets the bitstring as a series of octets (bytes) and returns those octets. Fails + if the Bitstring does not contain a whole number of octets (its length is not evenly + divisible by 8). - + - Read a 32-bit integer from the given stream in the correct byte order. + Interprets the bitstring as a series of signed octets (bytes) and returns those octets. Fails + if the Bitstring does not contain a whole number of octets (its length is not evenly + divisible by 8). + This method is not CLS-Compliant and may not be available to languages that cannot + handle signed bytes. - + - Write a 16-bit integer to the given stream in the correct byte order. + Interprets the bitstring as a series of unsigned 16-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 16. + This method is not CLS-Compliant and may not be available to languages that cannot + handle unsigned integers. - + - Read a 16-bit integer from the given stream in the correct byte order. + Interprets the bitstring as a series of 16-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 16. - + - Represent the frontend/backend protocol version. + Interprets the bitstring as a series of unsigned 32-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 32. + This method is not CLS-Compliant and may not be available to languages that cannot + handle unsigned integers. - + - Represent the backend server version. - As this class offers no functionality beyond that offered by it has been - deprecated in favour of that class. + Interprets the bitstring as a series of signed 32-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 32. - - + - Returns the string representation of this version in three place dot notation (Major.Minor.Patch). + Interprets the bitstring as a series of unsigned 64-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 64. + This method is not CLS-Compliant and may not be available to languages that cannot + handle unsigned integers. - + - Server version major number. + Interprets the bitstring as a series of signed 64-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 64. - + - Server version minor number. + The length of the string. - + - Server version patch level number. + Retrieves the value of the bit at the given index. - - - Represents a PostgreSQL COPY TO STDOUT operation with a corresponding SQL statement - to execute against a PostgreSQL database - and an associated stream used to write results to (if provided by user) - or for reading the results (when generated by driver). - Eg. new NpgsqlCopyOut("COPY (SELECT * FROM mytable) TO STDOUT", connection, streamToWrite).Start(); + + + Represents the PostgreSQL interval datatype. + PostgreSQL differs from .NET in how it's interval type doesn't assume 24 hours in a day + (to deal with 23- and 25-hour days caused by daylight savings adjustments) and has a concept + of months that doesn't exist in .NET's class. (Neither datatype + has any concessions for leap-seconds). + For most uses just casting to and from TimeSpan will work correctly — in particular, + the results of subtracting one or the PostgreSQL date, time and + timestamp types from another should be the same whether you do so in .NET or PostgreSQL — + but if the handling of days and months in PostgreSQL is important to your application then you + should use this class instead of . + If you don't know whether these differences are important to your application, they + probably arent! Just use and do not use this class directly ☺ + To avoid forcing unnecessary provider-specific concerns on users who need not be concerned + with them a call to on a field containing an + value will return a rather than an + . If you need the extra functionality of + then use . + + + + + - + - Creates NpgsqlCommand to run given query upon Start(), after which CopyStream provides data from database as requested in the query. + Represents the number of ticks (100ns periods) in one microsecond. This field is constant. - + - Given command is run upon Start(), after which CopyStream provides data from database as requested in the query. + Represents the number of ticks (100ns periods) in one millisecond. This field is constant. - + - Given command is executed upon Start() and all requested copy data is written to toStream immediately. + Represents the number of ticks (100ns periods) in one second. This field is constant. - + - Returns true if this operation is currently active and field at given location is in binary format. + Represents the number of ticks (100ns periods) in one minute. This field is constant. - + - Command specified upon creation is executed as a non-query. - If CopyStream is set upon creation, all copy data from server will be written to it, and operation will be finished immediately. - Otherwise the CopyStream member can be used for reading copy data from server until no more data is available. + Represents the number of ticks (100ns periods) in one hour. This field is constant. - + - Flush generated CopyStream at once. Effectively reads and discard all the rest of copy data from server. + Represents the number of ticks (100ns periods) in one day. This field is constant. - + - Returns true if the connection is currently reserved for this operation. + Represents the number of hours in one day (assuming no daylight savings adjustments). This field is constant. - + - The stream provided by user or generated upon Start() + Represents the number of days assumed in one month if month justification or unjustifcation is performed. + This is set to 30 for consistency with PostgreSQL. Note that this is means that month adjustments cause + a year to be taken as 30 × 12 = 360 rather than 356/366 days. - + - The Command used to execute this copy operation. + Represents the number of ticks (100ns periods) in one day, assuming 30 days per month. - + - Returns true if this operation is currently active and in binary format. + Represents the number of months in a year. This field is constant. - + - Returns number of fields if this operation is currently active, otherwise -1 + Represents the maximum . This field is read-only. - + - Faster alternative to using the generated CopyStream. + Represents the minimum . This field is read-only. - + - This class manages all connector objects, pooled AND non-pooled. + Represents the zero . This field is read-only. - - Unique static instance of the connector pool - mamager. - - - Map of index to unused pooled connectors, avaliable to the - next RequestConnector() call. - This hashmap will be indexed by connection string. - This key will hold a list of queues of pooled connectors available to be used. - - - Timer for tracking unused connections in pools. - - + - Searches the shared and pooled connector lists for a - matching connector object or creates a new one. + Initializes a new to the specified number of ticks. - The NpgsqlConnection that is requesting - the connector. Its ConnectionString will be used to search the - pool for available connectors. - A connector object. + A time period expressed in 100ns units. - + - Find a pooled connector. Handle locking and timeout here. + Initializes a new to hold the same time as a + A time period expressed in a - + - Find a pooled connector. Handle shared/non-shared here. + Initializes a new to the specified number of months, days + & ticks. + Number of months. + Number of days. + Number of 100ns units. - + - Releases a connector, possibly back to the pool for future use. + Initializes a new to the specified number of + days, hours, minutes & seconds. - - Pooled connectors will be put back into the pool if there is room. - Shared connectors should just have their use count decremented - since they always stay in the shared pool. - - The connector to release. + Number of days. + Number of hours. + Number of minutes. + Number of seconds. - + - Release a pooled connector. Handle locking here. + Initializes a new to the specified number of + days, hours, minutes, seconds & milliseconds. + Number of days. + Number of hours. + Number of minutes. + Number of seconds. + Number of milliseconds. - + - Release a pooled connector. Handle shared/non-shared here. + Initializes a new to the specified number of + months, days, hours, minutes, seconds & milliseconds. + Number of months. + Number of days. + Number of hours. + Number of minutes. + Number of seconds. + Number of milliseconds. - + - Create a connector without any pooling functionality. + Initializes a new to the specified number of + years, months, days, hours, minutes, seconds & milliseconds. + Years are calculated exactly equivalent to 12 months. + Number of years. + Number of months. + Number of days. + Number of hours. + Number of minutes. + Number of seconds. + Number of milliseconds. - + - Find an available pooled connector in the non-shared pool, or create - a new one if none found. + Creates an from a number of ticks. + The number of ticks (100ns units) in the interval. + A d with the given number of ticks. - + - This method is only called when NpgsqlConnection.Dispose(false) is called which means a - finalization. This also means, an NpgsqlConnection was leak. We clear pool count so that - client doesn't end running out of connections from pool. When the connection is finalized, its underlying - socket is closed. + Creates an from a number of microseconds. + The number of microseconds in the interval. + A d with the given number of microseconds. - + - Close the connector. + Creates an from a number of milliseconds. - - Connector to release + The number of milliseconds in the interval. + A d with the given number of milliseconds. - + - Put a pooled connector into the pool queue. + Creates an from a number of seconds. - Connector to pool + The number of seconds in the interval. + A d with the given number of seconds. - + - A queue with an extra Int32 for keeping track of busy connections. + Creates an from a number of minutes. + The number of minutes in the interval. + A d with the given number of minutes. - + - The number of pooled Connectors that belong to this queue but - are currently in use. + Creates an from a number of hours. + The number of hours in the interval. + A d with the given number of hours. - + - This class represents a BackEndKeyData message received - from PostgreSQL + Creates an from a number of days. + The number of days in the interval. + A d with the given number of days. - + - Used when a connection is closed + Creates an from a number of months. + The number of months in the interval. + A d with the given number of months. - + - Summary description for NpgsqlQuery + Adds another interval to this instance and returns the result. + An to add to this instance. + An whose values are the sums of the two instances. - + - Represents the method that handles the Notice events. + Subtracts another interval from this instance and returns the result. - A NpgsqlNoticeEventArgs that contains the event data. + An to subtract from this instance. + An whose values are the differences of the two instances. - + - Represents the method that handles the Notification events. + Returns an whose value is the negated value of this instance. - The source of the event. - A NpgsqlNotificationEventArgs that contains the event data. + An whose value is the negated value of this instance. - + - This class represents a connection to a - PostgreSQL server. + This absolute value of this instance. In the case of some, but not all, components being negative, + the rules used for justification are used to determine if the instance is positive or negative. + An whose value is the absolute value of this instance. - + - Initializes a new instance of the - NpgsqlConnection class. + Equivalent to PostgreSQL's justify_days function. + An based on this one, but with any hours outside of the range [-23, 23] + converted into days. - + - Initializes a new instance of the - NpgsqlConnection class - and sets the ConnectionString. + Opposite to PostgreSQL's justify_days function. - The connection used to open the PostgreSQL database. + An based on this one, but with any days converted to multiples of ±24hours. - + - Begins a database transaction with the specified isolation level. + Equivalent to PostgreSQL's justify_months function. - The isolation level under which the transaction should run. - An DbTransaction - object representing the new transaction. - - Currently the IsolationLevel ReadCommitted and Serializable are supported by the PostgreSQL backend. - There's no support for nested transactions. - + An based on this one, but with any days outside of the range [-30, 30] + converted into months. - + - Begins a database transaction. + Opposite to PostgreSQL's justify_months function. - A NpgsqlTransaction - object representing the new transaction. - - Currently there's no support for nested transactions. - + An based on this one, but with any months converted to multiples of ±30days. - + - Begins a database transaction with the specified isolation level. + Equivalent to PostgreSQL's justify_interval function. - The isolation level under which the transaction should run. - A NpgsqlTransaction - object representing the new transaction. - - Currently the IsolationLevel ReadCommitted and Serializable are supported by the PostgreSQL backend. - There's no support for nested transactions. - + An based on this one, + but with any months converted to multiples of ±30days + and then with any days converted to multiples of ±24hours - + - Opens a database connection with the property settings specified by the - ConnectionString. + Opposite to PostgreSQL's justify_interval function. + An based on this one, but with any months converted to multiples of ±30days and then any days converted to multiples of ±24hours; - + + - This method changes the current database by disconnecting from the actual - database and connecting to the specified. + Implicit cast of a to an - The name of the database to use in place of the current database. + A + An eqivalent, canonical, . - + - Releases the connection to the database. If the connection is pooled, it will be - made available for re-use. If it is non-pooled, the actual connection will be shutdown. + Implicit cast of an to a . + A . + An equivalent . - + - Creates and returns a DbCommand - object associated with the IDbConnection. + Returns true if another is exactly the same as this instance. - A DbCommand object. + An for comparison. + true if the two instances are exactly the same, + false otherwise. - + - Creates and returns a NpgsqlCommand - object associated with the NpgsqlConnection. + Returns true if another object is an , that is exactly the same as + this instance - A NpgsqlCommand object. + An for comparison. + true if the argument is an and is exactly the same + as this one, false otherwise. - + - Releases all resources used by the - NpgsqlConnection. + Compares two instances. - true when called from Dispose(); - false when being called from the finalizer. + The first . + The second . + 0 if the two are equal or equivalent. A value greater than zero if x is greater than y, + a value less than zero if x is less than y. - + - Create a new connection based on this one. + A hash code suitable for uses with hashing algorithms. - A new NpgsqlConnection object. + An signed integer. - + - Create a new connection based on this one. + Compares this instance with another/ - A new NpgsqlConnection object. + An to compare this with. + 0 if the instances are equal or equivalent. A value less than zero if + this instance is less than the argument. A value greater than zero if this instance + is greater than the instance. - + - Default SSL CertificateSelectionCallback implementation. + Compares this instance with another/ + An object to compare this with. + 0 if the argument is an and the instances are equal or equivalent. + A value less than zero if the argument is an and + this instance is less than the argument. + A value greater than zero if the argument is an and this instance + is greater than the instance. + A value greater than zero if the argument is null. + The argument is not an . - + - Default SSL CertificateValidationCallback implementation. + Parses a and returns a instance. + Designed to use the formats generally returned by PostgreSQL. + The to parse. + An represented by the argument. + The string was null. + A value obtained from parsing the string exceeded the values allowed for the relevant component. + The string was not in a format that could be parsed to produce an . - + - Default SSL PrivateKeySelectionCallback implementation. + Attempt to parse a to produce an . + The to parse. + (out) The produced, or if the parsing failed. + true if the parsing succeeded, false otherwise. - + - Default SSL ProvideClientCertificatesCallback implementation. + Create a representation of the instance. + The format returned is of the form: + [M mon[s]] [d day[s]] [HH:mm:ss[.f[f[f[f[f[f[f[f[f]]]]]]]]]] + A zero is represented as 00:00:00 + + Ticks are 100ns, Postgress resolution is only to 1µs at most. Hence we lose 1 or more decimal + precision in storing values in the database. Despite this, this method will output that extra + digit of precision. It's forward-compatible with any future increases in resolution up to 100ns, + and also makes this ToString() more applicable to any other use-case. + + The representation. - + - Write each key/value pair in the connection string to the log. + Adds two together. + The first to add. + The second to add. + An whose values are the sum of the arguments. - + - Returns the supported collections + Subtracts one from another. + The to subtract the other from. + The to subtract from the other. + An whose values are the difference of the arguments - + - Returns the schema collection specified by the collection name. + Returns true if two are exactly the same. - The collection name. - The collection specified. + The first to compare. + The second to compare. + true if the two arguments are exactly the same, false otherwise. - + - Returns the schema collection specified by the collection name filtered by the restrictions. + Returns false if two are exactly the same. - The collection name. - - The restriction values to filter the results. A description of the restrictions is contained - in the Restrictions collection. - - The collection specified. + The first to compare. + The second to compare. + false if the two arguments are exactly the same, true otherwise. - + - Occurs on NoticeResponses from the PostgreSQL backend. + Compares two instances to see if the first is less than the second + The first to compare. + The second to compare. + true if the first is less than second, false otherwise. - + - Occurs on NotificationResponses from the PostgreSQL backend. + Compares two instances to see if the first is less than or equivalent to the second + The first to compare. + The second to compare. + true if the first is less than or equivalent to second, false otherwise. - + - Called to provide client certificates for SSL handshake. + Compares two instances to see if the first is greater than the second + The first to compare. + The second to compare. + true if the first is greater than second, false otherwise. - + - Mono.Security.Protocol.Tls.CertificateSelectionCallback delegate. + Compares two instances to see if the first is greater than or equivalent the second + The first to compare. + The second to compare. + true if the first is greater than or equivalent to the second, false otherwise. - + - Mono.Security.Protocol.Tls.CertificateValidationCallback delegate. + Returns the instance. + An . + The argument. - + - Mono.Security.Protocol.Tls.PrivateKeySelectionCallback delegate. + Negates an instance. + An . + The negation of the argument. - + - Gets or sets the string used to connect to a PostgreSQL database. - Valid values are: -
    -
  • - Server: Address/Name of Postgresql Server; -
  • -
  • - Port: Port to connect to; -
  • -
  • - Protocol: Protocol version to use, instead of automatic; Integer 2 or 3; -
  • -
  • - Database: Database name. Defaults to user name if not specified; -
  • -
  • - User Id: User name; -
  • -
  • - Password: Password for clear text authentication; -
  • -
  • - SSL: True or False. Controls whether to attempt a secure connection. Default = False; -
  • -
  • - Pooling: True or False. Controls whether connection pooling is used. Default = True; -
  • -
  • - MinPoolSize: Min size of connection pool; -
  • -
  • - MaxPoolSize: Max size of connection pool; -
  • -
  • - Timeout: Time to wait for connection open in seconds. Default is 15. -
  • -
  • - CommandTimeout: Time to wait for command to finish execution before throw an exception. In seconds. Default is 20. -
  • -
  • - Sslmode: Mode for ssl connection control. Can be Prefer, Require, Allow or Disable. Default is Disable. Check user manual for explanation of values. -
  • -
  • - ConnectionLifeTime: Time to wait before closing unused connections in the pool in seconds. Default is 15. -
  • -
  • - SyncNotification: Specifies if Npgsql should use synchronous notifications. -
  • -
  • - SearchPath: Changes search path to specified and public schemas. -
  • -
+ The total number of ticks(100ns units) contained. This is the resolution of the + type. This ignores the number of days and + months held. If you want them included use first. + The resolution of the PostgreSQL + interval type is by default 1µs = 1,000 ns. It may be smaller as follows: + + + interval(0) + resolution of 1s (1 second) + + + interval(1) + resolution of 100ms = 0.1s (100 milliseconds) + + + interval(2) + resolution of 10ms = 0.01s (10 milliseconds) + + + interval(3) + resolution of 1ms = 0.001s (1 millisecond) + + + interval(4) + resolution of 100µs = 0.0001s (100 microseconds) + + + interval(5) + resolution of 10µs = 0.00001s (10 microseconds) + + + interval(6) or interval + resolution of 1µs = 0.000001s (1 microsecond) + + + As such, if the 100-nanosecond resolution is significant to an application, a PostgreSQL interval will + not suffice for those purposes. + In more frequent cases though, the resolution of the interval suffices. + will always suffice to handle the resolution of any interval value, and upon + writing to the database, will be rounded to the resolution used. + + The number of ticks in the instance.
- The connection string that includes the server name, - the database name, and other parameters needed to establish - the initial connection. The default value is an empty string. -
- + - Backend server host name. + Gets the number of whole microseconds held in the instance. + An in the range [-999999, 999999]. - + - Backend server port. + Gets the number of whole milliseconds held in the instance. + An in the range [-999, 999]. - + - If true, the connection will attempt to use SSL. + Gets the number of whole seconds held in the instance. + An in the range [-59, 59]. - + - Gets the time to wait while trying to establish a connection - before terminating the attempt and generating an error. + Gets the number of whole minutes held in the instance. + An in the range [-59, 59]. - The time (in seconds) to wait for a connection to open. The default value is 15 seconds. - + - Gets the time to wait while trying to execute a command - before terminating the attempt and generating an error. + Gets the number of whole hours held in the instance. + Note that this can be less than -23 or greater than 23 unless + has been used to produce this instance. - The time (in seconds) to wait for a command to complete. The default value is 20 seconds. - + - Gets the time to wait before closing unused connections in the pool if the count - of all connections exeeds MinPoolSize. + Gets the number of days held in the instance. + Note that this does not pay attention to a time component with -24 or less hours or + 24 or more hours, unless has been called to produce this instance. - - If connection pool contains unused connections for ConnectionLifeTime seconds, - the half of them will be closed. If there will be unused connections in a second - later then again the half of them will be closed and so on. - This strategy provide smooth change of connection count in the pool. - - The time (in seconds) to wait. The default value is 15 seconds. - + - Gets the name of the current database or the database to be used after a connection is opened. - - The name of the current database or the name of the database to be - used after a connection is opened. The default value is the empty string. + Gets the number of months held in the instance. + Note that this does not pay attention to a day component with -30 or less days or + 30 or more days, unless has been called to produce this instance. +
- + - Whether datareaders are loaded in their entirety (for compatibility with earlier code). + Returns a representing the time component of the instance. + Note that this may have a value beyond the range ±23:59:59.9999999 unless + has been called to produce this instance. - + - Gets the database server name. + The total number of ticks (100ns units) in the instance, assuming 24 hours in each day and + 30 days in a month. - + - Gets flag indicating if we are using Synchronous notification or not. - The default value is false. + The total number of microseconds in the instance, assuming 24 hours in each day and + 30 days in a month. - + - Gets the current state of the connection. + The total number of milliseconds in the instance, assuming 24 hours in each day and + 30 days in a month. - A bitwise combination of the ConnectionState values. The default is Closed. - + - Gets whether the current state of the connection is Open or Closed + The total number of seconds in the instance, assuming 24 hours in each day and + 30 days in a month. - ConnectionState.Open or ConnectionState.Closed - + - Version of the PostgreSQL backend. - This can only be called when there is an active connection. + The total number of minutes in the instance, assuming 24 hours in each day and + 30 days in a month. - + - Protocol version in use. - This can only be called when there is an active connection. + The total number of hours in the instance, assuming 24 hours in each day and + 30 days in a month. - + - Process id of backend server. - This can only be called when there is an active connection. + The total number of days in the instance, assuming 24 hours in each day and + 30 days in a month. - + - The connector object connected to the backend. + The total number of months in the instance, assuming 24 hours in each day and + 30 days in a month. - + - Gets the NpgsqlConnectionStringBuilder containing the parsed connection string values. + Normalise this time; if it is 24:00:00, convert it to 00:00:00 + This time, normalised - + - User name. + The total number of ticks(100ns units) contained. This is the resolution of the + type. + The resolution of the PostgreSQL + interval type is by default 1µs = 1,000 ns. It may be smaller as follows: + + + time(0) + resolution of 1s (1 second) + + + time(1) + resolution of 100ms = 0.1s (100 milliseconds) + + + time(2) + resolution of 10ms = 0.01s (10 milliseconds) + + + time(3) + resolution of 1ms = 0.001s (1 millisecond) + + + time(4) + resolution of 100µs = 0.0001s (100 microseconds) + + + time(5) + resolution of 10µs = 0.00001s (10 microseconds) + + + time(6) or interval + resolution of 1µs = 0.000001s (1 microsecond) + + + As such, if the 100-nanosecond resolution is significant to an application, a PostgreSQL time will + not suffice for those purposes. + In more frequent cases though, the resolution of time suffices. + will always suffice to handle the resolution of any time value, and upon + writing to the database, will be rounded to the resolution used. + + The number of ticks in the instance. - + - Password. + Gets the number of whole microseconds held in the instance. + An integer in the range [0, 999999]. - + - Determine if connection pooling will be used for this connection. + Gets the number of whole milliseconds held in the instance. + An integer in the range [0, 999]. - - - This class represents the CancelRequest message sent to PostgreSQL - server. - - + + + Gets the number of whole seconds held in the instance. + An interger in the range [0, 59]. + - - - - - - - - - - - - - - - - A time period expressed in 100ns units. + + + Gets the number of whole minutes held in the instance. + An integer in the range [0, 59]. + - - A time period expressed in a + + + Gets the number of whole hours held in the instance. + Note that the time 24:00:00 can be stored for roundtrip compatibility. Any calculations on such a + value will normalised it to 00:00:00. + - - Number of 100ns units. + + + Normalise this time; if it is 24:00:00, convert it to 00:00:00 + + This time, normalised - - Number of seconds. + + + Compares this with another . As per postgres' rules, + first the times are compared as if they were both in the same timezone. If they are equal then + then timezones are compared (+01:00 being "smaller" than -01:00). + + the to compare with. + An integer which is 0 if they are equal, < 0 if this is the smaller and > 0 if this is the larger. - - Number of milliseconds. + + + Gets the number of whole microseconds held in the instance. + An integer in the range [0, 999999]. + - - Number of milliseconds. + + + Gets the number of whole milliseconds held in the instance. + An integer in the range [0, 999]. + - - Number of milliseconds. + + + Gets the number of whole seconds held in the instance. + An interger in the range [0, 59]. + - - A d with the given number of ticks. + + + Gets the number of whole minutes held in the instance. + An integer in the range [0, 59]. + - - A d with the given number of microseconds. + + + Gets the number of whole hours held in the instance. + Note that the time 24:00:00 can be stored for roundtrip compatibility. Any calculations on such a + value will normalised it to 00:00:00. + - - A d with the given number of milliseconds. + + + Summary description for LargeObjectManager. + - - A d with the given number of seconds. + + + Provide event handlers to convert all native supported basic data types from their backend + text representation to a .NET object. + - - A d with the given number of minutes. + + + Binary data. + - - A d with the given number of hours. + + + Convert a postgresql boolean to a System.Boolean. + - - A d with the given number of days. + + + Convert a postgresql bit to a System.Boolean. + - - A d with the given number of months. + + + Convert a postgresql datetime to a System.DateTime. + - - An whose values are the sums of the two instances. + + + Convert a postgresql date to a System.DateTime. + - - An whose values are the differences of the two instances. + + + Convert a postgresql time to a System.DateTime. + - - An whose value is the negated value of this instance. + + + Convert a postgresql money to a System.Decimal. + - - An whose value is the absolute value of this instance. + + + Provide event handlers to convert the basic native supported data types from + native form to backend representation. + - - - An based on this one, but with any days converted to multiples of ±24hours. + + + Binary data. + - - - An based on this one, but with any months converted to multiples of ±30days. + + + Convert to a postgresql boolean. + - - - An based on this one, but with any months converted to multiples of ±30days and then any days converted to multiples of ±24hours; + + + Convert to a postgresql bit. + - - - An eqivalent, canonical, . + + + Convert to a postgresql timestamp. + - - An equivalent . + + + Convert to a postgresql date. + - - - - - An signed integer. + + + Convert to a postgresql time. + - - - The argument is not an . + + + Convert to a postgres money. + - - The string was not in a format that could be parsed to produce an . + + + Convert to a postgres double with maximum precision. + - - true if the parsing succeeded, false otherwise. + + + Provide event handlers to convert extended native supported data types from their backend + text representation to a .NET object. + - - The representation. + + + Convert a postgresql point to a System.NpgsqlPoint. + - - An whose values are the sum of the arguments. + + + Convert a postgresql point to a System.RectangleF. + - - An whose values are the difference of the arguments + + + LDeg. + - - true if the two arguments are exactly the same, false otherwise. + + + Path. + - - false if the two arguments are exactly the same, true otherwise. + + + Polygon. + - - true if the first is less than second, false otherwise. + + + Circle. + - - true if the first is less than or equivalent to second, false otherwise. + + + Inet. + - - true if the first is greater than second, false otherwise. + + + MAC Address. + - - true if the first is greater than or equivalent to the second, false otherwise. + + + interval + - - The argument. + + + Provide event handlers to convert extended native supported data types from + native form to backend representation. + - - The negation of the argument. + + + Point. + - - - - - - - - - - - - - - - - - - - This time, normalised + + + Box. + - - - - - - - - This time, normalised + + + LSeg. + - - An integer which is 0 if they are equal, < 0 if this is the smaller and > 0 if this is the larger. + + + Open path. + - - - - - - + - A class to handle everything associated with SSPI authentication + Polygon. - + - Simplified SecBufferDesc struct with only one SecBuffer + Convert to a postgres MAC Address. - - - This class represents the Parse message sent to PostgreSQL - server. - - + + + Circle. + - + - EventArgs class to send Notice parameters, which are just NpgsqlError's in a lighter context. + Convert to a postgres inet. - + - Notice information. + Convert to a postgres interval - + - This class represents the ErrorResponse and NoticeResponse - message sent from PostgreSQL server. + Represents a PostgreSQL Point type - + - Return a string representation of this error object. + Represents a PostgreSQL Line Segment type. - + - Severity code. All versions. + Represents a PostgreSQL Path type. + + + + + Represents a PostgreSQL Polygon type. + + + + + Represents a PostgreSQL Circle type. + + + + + Represents a PostgreSQL inet type. + + + + + Represents a PostgreSQL MacAddress type. + + + + + + + The macAddr parameter must contain a string that can only consist of numbers + and upper-case letters as hexadecimal digits. (See PhysicalAddress.Parse method on MSDN) + + + + This class contains helper methods for type conversion between + the .Net type system and postgresql. + + + + + A cache of basic datatype mappings keyed by server version. This way we don't + have to load the basic type mappings for every connection. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given NpgsqlDbType. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given NpgsqlDbType. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given DbType. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given System.Type. + + + + + This method is responsible to convert the string received from the backend + to the corresponding NpgsqlType. + The given TypeInfo is called upon to do the conversion. + If no TypeInfo object is provided, no conversion is performed. + + + + + Create the one and only native to backend type map. + This map is used when formatting native data + types to backend representations. + + + + + This method creates (or retrieves from cache) a mapping between type and OID + of all natively supported postgresql data types. + This is needed as from one version to another, this mapping can be changed and + so we avoid hardcoding them. + + NpgsqlTypeMapping containing all known data types. The mapping must be + cloned before it is modified because it is cached; changes made by one connection may + effect another connection. + + + + Attempt to map types by issuing a query against pg_type. + This function takes a list of NpgsqlTypeInfo and attempts to resolve the OID field + of each by querying pg_type. If the mapping is found, the type info object is + updated (OID) and added to the provided NpgsqlTypeMapping object. + + NpgsqlConnector to send query through. + Mapping object to add types too. + List of types that need to have OID's mapped. + + + + Delegate called to convert the given backend data to its native representation. + + + + + Delegate called to convert the given native data to its backand representation. + + + + + Represents a backend data type. + This class can be called upon to convert a backend field representation to a native object. + + + + + Construct a new NpgsqlTypeInfo with the given attributes and conversion handlers. + + Type OID provided by the backend server. + Type name provided by the backend server. + NpgsqlDbType + System type to convert fields of this type to. + Data conversion handler. + + + + Perform a data conversion from a backend representation to + a native object. + + Data sent from the backend. + Type modifier field sent from the backend. + + + + Type OID provided by the backend server. + + + + + Type name provided by the backend server. + + + + + NpgsqlDbType. + + + + + NpgsqlDbType. + + + + + Provider type to convert fields of this type to. + + + + + System type to convert fields of this type to. + + + + + Represents a backend data type. + This class can be called upon to convert a native object to its backend field representation, + + + + + Returns an NpgsqlNativeTypeInfo for an array where the elements are of the type + described by the NpgsqlNativeTypeInfo supplied. + + + + + Construct a new NpgsqlTypeInfo with the given attributes and conversion handlers. + + Type name provided by the backend server. + NpgsqlDbType + Data conversion handler. + + + + Perform a data conversion from a native object to + a backend representation. + DBNull and null values are handled differently depending if a plain query is used + When + + Native .NET object to be converted. + Flag indicating if the conversion has to be done for + plain queries or extended queries + + + + Type name provided by the backend server. + + + + + NpgsqlDbType. + + + + + DbType. + + + + + Apply quoting. + + + + + Use parameter size information. + + + + + Provide mapping between type OID, type name, and a NpgsqlBackendTypeInfo object that represents it. + + + + + Construct an empty mapping. + + + + + Copy constuctor. + + + + + Add the given NpgsqlBackendTypeInfo to this mapping. + + + + + Add a new NpgsqlBackendTypeInfo with the given attributes and conversion handlers to this mapping. + + Type OID provided by the backend server. + Type name provided by the backend server. + NpgsqlDbType + System type to convert fields of this type to. + Data conversion handler. + + + + Make a shallow copy of this type mapping. + + + + + Determine if a NpgsqlBackendTypeInfo with the given backend type OID exists in this mapping. + + + + + Determine if a NpgsqlBackendTypeInfo with the given backend type name exists in this mapping. + + + + + Get the number of type infos held. + + + + + Retrieve the NpgsqlBackendTypeInfo with the given backend type OID, or null if none found. + + + + + Retrieve the NpgsqlBackendTypeInfo with the given backend type name, or null if none found. + + + + + Provide mapping between type Type, NpgsqlDbType and a NpgsqlNativeTypeInfo object that represents it. - + - Error code. PostgreSQL 7.4 and up. + Add the given NpgsqlNativeTypeInfo to this mapping. - + - Terse error message. All versions. + Add a new NpgsqlNativeTypeInfo with the given attributes and conversion handlers to this mapping. + Type name provided by the backend server. + NpgsqlDbType + Data conversion handler. - + - Detailed error message. PostgreSQL 7.4 and up. + Retrieve the NpgsqlNativeTypeInfo with the given NpgsqlDbType. - + - Suggestion to help resolve the error. PostgreSQL 7.4 and up. + Retrieve the NpgsqlNativeTypeInfo with the given DbType. - + - Position (one based) within the query string where the error was encounterd. PostgreSQL 7.4 and up. + Retrieve the NpgsqlNativeTypeInfo with the given Type. - + - Position (one based) within the query string where the error was encounterd. This position refers to an internal command executed for example inside a PL/pgSQL function. PostgreSQL 7.4 and up. + Determine if a NpgsqlNativeTypeInfo with the given backend type name exists in this mapping. - + - Internal query string where the error was encounterd. This position refers to an internal command executed for example inside a PL/pgSQL function. PostgreSQL 7.4 and up. + Determine if a NpgsqlNativeTypeInfo with the given NpgsqlDbType exists in this mapping. - + - Trace back information. PostgreSQL 7.4 and up. + Determine if a NpgsqlNativeTypeInfo with the given Type name exists in this mapping. - + - Source file (in backend) reporting the error. PostgreSQL 7.4 and up. + Get the number of type infos held. - + - Source file line number (in backend) reporting the error. PostgreSQL 7.4 and up. + Set Cache Size. The default value is 20. - + - Source routine (in backend) reporting the error. PostgreSQL 7.4 and up. + Lookup cached entity. null will returned if not match. + For both get{} and set{} apply LRU rule. + key + - + - String containing the sql sent which produced this error. + Called from constructor of derived class. - + - Backend protocol version in use. + Finalizer for HashAlgorithm - + - Represents an ongoing COPY TO STDOUT operation. - Provides methods to read data from server or end the operation. + Computes the entire hash of all the bytes in the byte array. - - This class represents the base class for the state pattern design pattern - implementation. - - - - + - This method is used by the states to change the state of the context. - + When overridden in a derived class, drives the hashing function. + + + + - + - This method is responsible to handle all protocol messages sent from the backend. - It holds all the logic to do it. - To exchange data, it uses a Mediator object from which it reads/writes information - to handle backend requests. - - + When overridden in a derived class, this pads and hashes whatever data might be left in the buffers and then returns the hash created. + - + - This method is responsible to handle all protocol messages sent from the backend. - It holds all the logic to do it. - To exchange data, it uses a Mediator object from which it reads/writes information - to handle backend requests. - - + When overridden in a derived class, initializes the object to prepare for hashing. + - + - Called from NpgsqlState.ProcessBackendResponses upon CopyOutResponse. - If CopyStream is already set, it is used to write data received from server, after which the copy ends. - Otherwise CopyStream is set to a readable NpgsqlCopyOutStream that receives data from server. + Used for stream chaining. Computes hash as data passes through it. + The buffer from which to grab the data to be copied. + The offset into the input buffer to start reading at. + The number of bytes to be copied. + The buffer to write the copied data to. + At what point in the outputBuffer to write the data at. - + - Called from NpgsqlOutStream.Read to read copy data from server. + Used for stream chaining. Computes hash as data passes through it. Finishes off the hash. + The buffer from which to grab the data to be copied. + The offset into the input buffer to start reading at. + The number of bytes to be copied. - + - Copy format information returned from server. + Get whether or not the hash can transform multiple blocks at a time. + Note: MUST be overriden if descendant can transform multiple block + on a single call! - + - Handles serialisation of .NET array or IEnumeration to pg format. - Arrays of arrays, enumerations of enumerations, arrays of enumerations etc. - are treated as multi-dimensional arrays (in much the same manner as an array of arrays - is used to emulate multi-dimensional arrays in languages that lack native support for them). - If such an enumeration of enumerations is "jagged" (as opposed to rectangular, cuboid, - hypercuboid, hyperhypercuboid, etc) then this class will "correctly" serialise it, but pg - will raise an error as it doesn't allow jagged arrays. + Gets the previously computed hash. - + - Create an ArrayNativeToBackendTypeConverter with the element converter passed + Returns the size in bits of the hash. - The that would be used to serialise the element type. - + - Serialise the enumeration or array. + Must be overriden if not 1 - + - Handles parsing of pg arrays into .NET arrays. + Must be overriden if not 1 - + - Takes a string representation of a pg 1-dimensional array - (or a 1-dimensional row within an n-dimensional array) - and allows enumeration of the string represenations of each items. + Common base class for all derived MD5 implementations. - + - Takes a string representation of a pg n-dimensional array - and allows enumeration of the string represenations of the next - lower level of rows (which in turn can be taken as (n-1)-dimensional arrays. + Called from constructor of derived class. - + - Takes an ArrayList which may be an ArrayList of ArrayLists, an ArrayList of ArrayLists of ArrayLists - and so on and enumerates the items that aren't ArrayLists (the leaf nodes if we think of the ArrayList - passed as a tree). Simply uses the ArrayLists' own IEnumerators to get that of the next, - pushing them onto a stack until we hit something that isn't an ArrayList. - ArrayList to enumerate - IEnumerable + Creates the default derived class. - + - Create a new ArrayBackendToNativeTypeConverter + C# implementation of the MD5 cryptographic hash function. - for the element type. - + - Creates an array from pg representation. + Creates a new MD5CryptoServiceProvider. - + - Creates an array list from pg represenation of an array. - Multidimensional arrays are treated as ArrayLists of ArrayLists + Drives the hashing function. + Byte array containing the data to hash. + Where in the input buffer to start. + Size in bytes of the data in the buffer to hash. - + - Creates an n-dimensional array from an ArrayList of ArrayLists or - a 1-dimensional array from something else. + This finalizes the hash. Takes the data from the chaining variables and returns it. - to convert - produced. - + - Takes an array of ints and treats them like the limits of a set of counters. - Retains a matching set of ints that is set to all zeros on the first ++ - On a ++ it increments the "right-most" int. If that int reaches it's - limit it is set to zero and the one before it is incremented, and so on. - - Making this a more general purpose class is pretty straight-forward, but we'll just put what we need here. + Resets the class after use. Called automatically after hashing is done. - - - This class represents the ParameterStatus message sent from PostgreSQL - server. - - - - + - This class is responsible for serving as bridge between the backend - protocol handling and the core classes. It is used as the mediator for - exchanging data generated/sent from/to backend. - - + This is the meat of the hash function. It is what processes each block one at a time. + + Byte array to process data from. + Where in the byte array to start processing. - + - This class is responsible to create database commands for automatic insert, update and delete operations. + Pads and then processes the final block. + Buffer to grab data from. + Position in buffer in bytes to get data from. + How much data in bytes in the buffer to use. - + - - This method is reponsible to derive the command parameter list with values obtained from function definition. - It clears the Parameters collection of command. Also, if there is any parameter type which is not supported by Npgsql, an InvalidOperationException will be thrown. - Parameters name will be parameter1, parameter2, ... - For while, only parameter name and NpgsqlDbType are obtained. + Implements for version 3 of the protocol. - NpgsqlCommand whose function parameters will be obtained. - + - Represents a completed response message. + Reads a row, field by field, allowing a DataRow to be built appropriately. - Marker interface which identifies a class which may take possession of a stream for the duration of @@ -1501,2578 +1940,2743 @@ we can't make that inherit from this interface, alas. - + + - The exception that is thrown when the PostgreSQL backend reports errors. + Reads part of a field, as needed (for + and - + - Construct a backend error exception based on a list of one or more - backend errors. The basic Exception.Message will be built from the - first (usually the only) error in the list. + Adds further functionality to stream that is dependant upon the type of data read. - + - Format a .NET style exception string. - Include all errors in the list, including any hints. + Completes the implementation of Streamer for char data. + + + + + Completes the implementation of Streamer for byte data. - + - Append a line to the given Stream, first checking for zero-length. + Implements for version 2 of the protocol. - + - Provide access to the entire list of errors provided by the PostgreSQL backend. + Encapsulates the null mapping bytes sent at the start of a version 2 + datarow message, and the process of identifying the nullity of the data + at a particular index - + - Severity code. All versions. + This class represents a BackEndKeyData message received + from PostgreSQL - + + + This class represents the Bind message sent to PostgreSQL + server. + + + + - Error code. PostgreSQL 7.4 and up. + For classes representing messages sent from the client to the server. - + + + This class represents the CancelRequest message sent to PostgreSQL + server. + + + + + This class represents the base class for the state pattern design pattern + implementation. + + + + - Basic error message. All versions. - + This method is used by the states to change the state of the context. + - + - Detailed error message. PostgreSQL 7.4 and up. - + This method is responsible to handle all protocol messages sent from the backend. + It holds all the logic to do it. + To exchange data, it uses a Mediator object from which it reads/writes information + to handle backend requests. + + - + - Suggestion to help resolve the error. PostgreSQL 7.4 and up. - + This method is responsible to handle all protocol messages sent from the backend. + It holds all the logic to do it. + To exchange data, it uses a Mediator object from which it reads/writes information + to handle backend requests. + + - + - Position (one based) within the query string where the error was encounterd. PostgreSQL 7.4 and up. + Checks for context socket availability. + Socket.Poll supports integer as microseconds parameter. + This limits the usable command timeout value + to 2,147 seconds: (2,147 x 1,000,000 less than max_int). + In order to bypass this limit, the availability of + the socket is checked in 2,147 seconds cycles + true, if for context socket availability was checked, false otherwise. + Context. + Select mode. - + - Trace back information. PostgreSQL 7.4 and up. + Resolve a host name or IP address. + This is needed because if you call Dns.Resolve() with an IP address, it will attempt + to resolve it as a host name, when it should just convert it to an IP address. + - + - Source file (in backend) reporting the error. PostgreSQL 7.4 and up. + Represents a SQL statement or function (stored procedure) to execute + against a PostgreSQL database. This class cannot be inherited. - + - Source file line number (in backend) reporting the error. PostgreSQL 7.4 and up. + Initializes a new instance of the NpgsqlCommand class. - + - Source routine (in backend) reporting the error. PostgreSQL 7.4 and up. + Initializes a new instance of the NpgsqlCommand class with the text of the query. + The text of the query. - + - String containing the sql sent which produced this error. + Initializes a new instance of the NpgsqlCommand class with the text of the query and a NpgsqlConnection. + The text of the query. + A NpgsqlConnection that represents the connection to a PostgreSQL server. - + - Returns the entire list of errors provided by the PostgreSQL backend. + Initializes a new instance of the NpgsqlCommand class with the text of the query, a NpgsqlConnection, and the NpgsqlTransaction. + The text of the query. + A NpgsqlConnection that represents the connection to a PostgreSQL server. + The NpgsqlTransaction in which the NpgsqlCommand executes. - + - The level of verbosity of the NpgsqlEventLog + Used to execute internal commands. - + - Don't log at all + Attempts to cancel the execution of a NpgsqlCommand. + This Method isn't implemented yet. - + - Only log the most common issues + Create a new command based on this one. + A new NpgsqlCommand object. - + - Log everything + Create a new command based on this one. + A new NpgsqlCommand object. - + - This class handles all the Npgsql event and debug logging + Creates a new instance of an DbParameter object. + An DbParameter object. - + - Writes a string to the Npgsql event log if msglevel is bigger then NpgsqlEventLog.Level + Creates a new instance of a NpgsqlParameter object. - - This method is obsolete and should no longer be used. - It is likely to be removed in future versions of Npgsql - - The message to write to the event log - The minimum LogLevel for which this message should be logged. + A NpgsqlParameter object. - + - Writes a string to the Npgsql event log if msglevel is bigger then NpgsqlEventLog.Level + Slightly optimised version of ExecuteNonQuery() for internal ues in cases where the number + of affected rows is of no interest. - The ResourceManager to get the localized resources - The name of the resource that should be fetched by the ResourceManager - The minimum LogLevel for which this message should be logged. - The additional parameters that shall be included into the log-message (must be compatible with the string in the resource): - + - Writes the default log-message for the action of calling the Get-part of an Indexer to the log file. + Executes a SQL statement against the connection and returns the number of rows affected. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Indexer - The parameter given to the Indexer + The number of rows affected if known; -1 otherwise. - + - Writes the default log-message for the action of calling the Set-part of an Indexer to the logfile. + Sends the CommandText to + the Connection and builds a + NpgsqlDataReader + using one of the CommandBehavior values. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Indexer - The parameter given to the Indexer - The value the Indexer is set to + One of the CommandBehavior values. + A NpgsqlDataReader object. - + - Writes the default log-message for the action of calling the Get-part of a Property to the logfile. + Sends the CommandText to + the Connection and builds a + NpgsqlDataReader. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Property - The name of the Property + A NpgsqlDataReader object. - + - Writes the default log-message for the action of calling the Set-part of a Property to the logfile. + Sends the CommandText to + the Connection and builds a + NpgsqlDataReader + using one of the CommandBehavior values. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Property - The name of the Property - The value the Property is set to + One of the CommandBehavior values. + A NpgsqlDataReader object. + Currently the CommandBehavior parameter is ignored. - + - Writes the default log-message for the action of calling a Method without Arguments to the logfile. + This method binds the parameters from parameters collection to the bind + message. + + + + + Executes the query, and returns the first column of the first row + in the result set returned by the query. Extra columns or rows are ignored. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Method - The name of the Method + The first column of the first row in the result set, + or a null reference if the result set is empty. - + - Writes the default log-message for the action of calling a Method with one Argument to the logfile. + Creates a prepared version of the command on a PostgreSQL server. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Method - The name of the Method - The value of the Argument of the Method - + - Writes the default log-message for the action of calling a Method with two Arguments to the logfile. + This method checks the connection state to see if the connection + is set or it is open. If one of this conditions is not met, throws + an InvalidOperationException - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Method - The name of the Method - The value of the first Argument of the Method - The value of the second Argument of the Method - + - Writes the default log-message for the action of calling a Method with three Arguments to the logfile. + This method substitutes the Parameters, if exist, in the command + to their actual values. + The parameter name format is :ParameterName. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Method - The name of the Method - The value of the first Argument of the Method - The value of the second Argument of the Method - The value of the third Argument of the Method + A version of CommandText with the Parameters inserted. - + - Writes the default log-message for the action of calling a Method with more than three Arguments to the logfile. + Gets or sets the SQL statement or function (stored procedure) to execute at the data source. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Method - The name of the Method - A Object-Array with zero or more Ojects that are Arguments of the Method. + The Transact-SQL statement or stored procedure to execute. The default is an empty string. - + - Sets/Returns the level of information to log to the logfile. - - The current LogLevel + Gets or sets the wait time before terminating the attempt + to execute a command and generating an error. + + The time (in seconds) to wait for the command to execute. + The default is 20 seconds. - + - Sets/Returns the filename to use for logging. - - The filename of the current Log file. + Gets or sets a value indicating how the + CommandText property is to be interpreted. + + One of the CommandType values. The default is CommandType.Text. - + - Sets/Returns whether Log messages should be echoed to the console - - true if Log messages are echoed to the console, otherwise false - - - - This class represents the Parse message sent to PostgreSQL - server. - - + Gets or sets the NpgsqlConnection + used by this instance of the NpgsqlCommand. + + The connection to a data source. The default value is a null reference. - + - Represents a PostgreSQL COPY FROM STDIN operation with a corresponding SQL statement - to execute against a PostgreSQL database - and an associated stream used to read data from (if provided by user) - or for writing it (when generated by driver). - Eg. new NpgsqlCopyIn("COPY mytable FROM STDIN", connection, streamToRead).Start(); + Gets the NpgsqlParameterCollection. + The parameters of the SQL statement or function (stored procedure). The default is an empty collection. - + - Creates NpgsqlCommand to run given query upon Start(). Data for the requested COPY IN operation can then be written to CopyData stream followed by a call to End() or Cancel(). + Gets or sets the NpgsqlTransaction + within which the NpgsqlCommand executes. + The NpgsqlTransaction. + The default value is a null reference. - + - Given command is run upon Start(). Data for the requested COPY IN operation can then be written to CopyData stream followed by a call to End() or Cancel(). + Gets or sets how command results are applied to the DataRow + when used by the Update + method of the DbDataAdapter. + One of the UpdateRowSource values. - + - Given command is executed upon Start() and all data from fromStream is passed to it as copy data. + Returns oid of inserted row. This is only updated when using executenonQuery and when command inserts just a single row. If table is created without oids, this will always be 0. - + - Returns true if this operation is currently active and field at given location is in binary format. + This class is responsible to create database commands for automatic insert, update and delete operations. - + - Command specified upon creation is executed as a non-query. - If CopyStream is set upon creation, it will be flushed to server as copy data, and operation will be finished immediately. - Otherwise the CopyStream member can be used for writing copy data to server and operation finished with a call to End() or Cancel(). + + This method is reponsible to derive the command parameter list with values obtained from function definition. + It clears the Parameters collection of command. Also, if there is any parameter type which is not supported by Npgsql, an InvalidOperationException will be thrown. + Parameters name will be parameter1, parameter2, ... + For while, only parameter name and NpgsqlDbType are obtained. + NpgsqlCommand whose function parameters will be obtained. - + - Called after writing all data to CopyStream to successfully complete this copy operation. + Represents the method that handles the Notice events. + A NpgsqlNoticeEventArgs that contains the event data. - + - Withdraws an already started copy operation. The operation will fail with given error message. - Will do nothing if current operation is not active. + Represents the method that handles the Notification events. + The source of the event. + A NpgsqlNotificationEventArgs that contains the event data. - + - Returns true if the connection is currently reserved for this operation. + This class represents a connection to a + PostgreSQL server. - + - The stream provided by user or generated upon Start(). - User may provide a stream to constructor; it is used to pass to server all data read from it. - Otherwise, call to Start() sets this to a writable NpgsqlCopyInStream that passes all data written to it to server. - In latter case this is only available while the copy operation is active and null otherwise. + Initializes a new instance of the + NpgsqlConnection class. - + - Returns true if this operation is currently active and in binary format. + Initializes a new instance of the + NpgsqlConnection class + and sets the ConnectionString. + The connection used to open the PostgreSQL database. - + - Returns number of fields expected on each input row if this operation is currently active, otherwise -1 + Begins a database transaction with the specified isolation level. + The isolation level under which the transaction should run. + An DbTransaction + object representing the new transaction. + + Currently the IsolationLevel ReadCommitted and Serializable are supported by the PostgreSQL backend. + There's no support for nested transactions. + - + - The Command used to execute this copy operation. + Begins a database transaction. + A NpgsqlTransaction + object representing the new transaction. + + Currently there's no support for nested transactions. + - + - Set before a COPY IN query to define size of internal buffer for reading from given CopyStream. + Begins a database transaction with the specified isolation level. + The isolation level under which the transaction should run. + A NpgsqlTransaction + object representing the new transaction. + + Currently the IsolationLevel ReadCommitted and Serializable are supported by the PostgreSQL backend. + There's no support for nested transactions. + - + - Represents information about COPY operation data transfer format as returned by server. + Opens a database connection with the property settings specified by the + ConnectionString. - + - Only created when a CopyInResponse or CopyOutResponse is received by NpgsqlState.ProcessBackendResponses() + This method changes the current database by disconnecting from the actual + database and connecting to the specified. + The name of the database to use in place of the current database. - + - Returns true if this operation is currently active and field at given location is in binary format. + Releases the connection to the database. If the connection is pooled, it will be + made available for re-use. If it is non-pooled, the actual connection will be shutdown. - + - Returns true if this operation is currently active and in binary format. + Creates and returns a DbCommand + object associated with the IDbConnection. + A DbCommand object. - + - Returns number of fields if this operation is currently active, otherwise -1 + Creates and returns a NpgsqlCommand + object associated with the NpgsqlConnection. + A NpgsqlCommand object. - - - + + + Releases all resources used by the + NpgsqlConnection. + + true when called from Dispose(); + false when being called from the finalizer. - + - Provide event handlers to convert all native supported basic data types from their backend - text representation to a .NET object. + Create a new connection based on this one. + A new NpgsqlConnection object. - + - Binary data. + Create a new connection based on this one. + A new NpgsqlConnection object. - + - Convert a postgresql boolean to a System.Boolean. + Default SSL CertificateSelectionCallback implementation. - + - Convert a postgresql bit to a System.Boolean. + Default SSL CertificateValidationCallback implementation. - + - Convert a postgresql datetime to a System.DateTime. + Default SSL PrivateKeySelectionCallback implementation. - + - Convert a postgresql date to a System.DateTime. + Default SSL ProvideClientCertificatesCallback implementation. - + - Convert a postgresql time to a System.DateTime. + Write each key/value pair in the connection string to the log. - + - Convert a postgresql money to a System.Decimal. + Returns the supported collections - + - Provide event handlers to convert the basic native supported data types from - native form to backend representation. + Returns the schema collection specified by the collection name. + The collection name. + The collection specified. - + - Binary data. + Returns the schema collection specified by the collection name filtered by the restrictions. + The collection name. + + The restriction values to filter the results. A description of the restrictions is contained + in the Restrictions collection. + + The collection specified. - + - Convert to a postgresql boolean. + Occurs on NoticeResponses from the PostgreSQL backend. - + - Convert to a postgresql bit. + Occurs on NotificationResponses from the PostgreSQL backend. - + - Convert to a postgresql timestamp. + Called to provide client certificates for SSL handshake. - + - Convert to a postgresql date. + Mono.Security.Protocol.Tls.CertificateSelectionCallback delegate. - + - Convert to a postgresql time. + Mono.Security.Protocol.Tls.CertificateValidationCallback delegate. - + - Convert to a postgres money. + Mono.Security.Protocol.Tls.PrivateKeySelectionCallback delegate. - + - Provide event handlers to convert extended native supported data types from their backend - text representation to a .NET object. + Gets or sets the string used to connect to a PostgreSQL database. + Valid values are: +
    +
  • + Server: Address/Name of Postgresql Server; +
  • +
  • + Port: Port to connect to; +
  • +
  • + Protocol: Protocol version to use, instead of automatic; Integer 2 or 3; +
  • +
  • + Database: Database name. Defaults to user name if not specified; +
  • +
  • + User Id: User name; +
  • +
  • + Password: Password for clear text authentication; +
  • +
  • + SSL: True or False. Controls whether to attempt a secure connection. Default = False; +
  • +
  • + Pooling: True or False. Controls whether connection pooling is used. Default = True; +
  • +
  • + MinPoolSize: Min size of connection pool; +
  • +
  • + MaxPoolSize: Max size of connection pool; +
  • +
  • + Timeout: Time to wait for connection open in seconds. Default is 15. +
  • +
  • + CommandTimeout: Time to wait for command to finish execution before throw an exception. In seconds. Default is 20. +
  • +
  • + Sslmode: Mode for ssl connection control. Can be Prefer, Require, Allow or Disable. Default is Disable. Check user manual for explanation of values. +
  • +
  • + ConnectionLifeTime: Time to wait before closing unused connections in the pool in seconds. Default is 15. +
  • +
  • + SyncNotification: Specifies if Npgsql should use synchronous notifications. +
  • +
  • + SearchPath: Changes search path to specified and public schemas. +
  • +
+ The connection string that includes the server name, + the database name, and other parameters needed to establish + the initial connection. The default value is an empty string. +
- + - Convert a postgresql point to a System.NpgsqlPoint. + Backend server host name. - + - Convert a postgresql point to a System.RectangleF. + Backend server port. - + - LDeg. + If true, the connection will attempt to use SSL. - + - Path. + Gets the time to wait while trying to establish a connection + before terminating the attempt and generating an error. + The time (in seconds) to wait for a connection to open. The default value is 15 seconds. - + - Polygon. + Gets the time to wait while trying to execute a command + before terminating the attempt and generating an error. + The time (in seconds) to wait for a command to complete. The default value is 20 seconds. - + - Circle. + Gets the time to wait before closing unused connections in the pool if the count + of all connections exeeds MinPoolSize. + + If connection pool contains unused connections for ConnectionLifeTime seconds, + the half of them will be closed. If there will be unused connections in a second + later then again the half of them will be closed and so on. + This strategy provide smooth change of connection count in the pool. + + The time (in seconds) to wait. The default value is 15 seconds. - + - Inet. - + Gets the name of the current database or the database to be used after a connection is opened. + + The name of the current database or the name of the database to be + used after a connection is opened. The default value is the empty string. - + - interval + Whether datareaders are loaded in their entirety (for compatibility with earlier code). - + - Provide event handlers to convert extended native supported data types from - native form to backend representation. + Gets the database server name. - + - Point. + Gets flag indicating if we are using Synchronous notification or not. + The default value is false. - + - Box. + Gets the current state of the connection. + A bitwise combination of the ConnectionState values. The default is Closed. - + - LSeg. + Gets whether the current state of the connection is Open or Closed + ConnectionState.Open or ConnectionState.Closed - + - Open path. + Version of the PostgreSQL backend. + This can only be called when there is an active connection. - + - Polygon. + Protocol version in use. + This can only be called when there is an active connection. - + - Circle. + Process id of backend server. + This can only be called when there is an active connection. - + - Convert to a postgres inet. + The connector object connected to the backend. - + - Convert to a postgres interval + Gets the NpgsqlConnectionStringBuilder containing the parsed connection string values. - + - EventArgs class to send Notification parameters. + User name. - + - Process ID of the PostgreSQL backend that sent this notification. + Password. - + - Condition that triggered that notification. + Determine if connection pooling will be used for this connection. - + - Additional Information From Notifiying Process (for future use, currently postgres always sets this to an empty string) + Return an exact copy of this NpgsqlConnectionString. - + - Resolve a host name or IP address. - This is needed because if you call Dns.Resolve() with an IP address, it will attempt - to resolve it as a host name, when it should just convert it to an IP address. + This function will set value for known key, both private member and base[key]. - - - - - This class represents a RowDescription message sent from - the PostgreSQL. - - + + - + - This struct represents the internal data of the RowDescription message. + The function will modify private member only, not base[key]. + + - - - This class represents the Parse message sent to PostgreSQL - server. - - - - + - A factory to create instances of various Npgsql objects. + Clear the member and assign them to the default value. - + - Creates an NpgsqlCommand object. + Compatibilty version. When possible, behaviour caused by breaking changes will be preserved + if this version is less than that where the breaking change was introduced. - - - This class represents the Parse message sent to PostgreSQL - server. - - - - + - Represents the method that handles the RowUpdated events. + Case insensative accessor for indivual connection string values. - The source of the event. - A NpgsqlRowUpdatedEventArgs that contains the event data. - + - Represents the method that handles the RowUpdating events. + Represents the method that allows the application to provide a certificate collection to be used for SSL clien authentication - The source of the event. - A NpgsqlRowUpdatingEventArgs that contains the event data. + A X509CertificateCollection to be filled with one or more client certificates. - + - This class represents an adapter from many commands: select, update, insert and delete to fill Datasets. + !!! Helper class, for compilation only. + Connector implements the logic for the Connection Objects to + access the physical connection to the database, and isolate + the application developer from connection pooling internals. - + - Stream for reading data from a table or select on a PostgreSQL version 7.4 or newer database during an active COPY TO STDOUT operation. - Passes data exactly as provided by the server. + Constructor. + Controls whether the connector can be shared. - + - Created only by NpgsqlCopyOutState.StartCopy() + This method checks if the connector is still ok. + We try to send a simple query text, select 1 as ConnectionTest; - + - Discards copy data as long as server pushes it. Returns after operation is finished. - Does nothing if this stream is not the active copy operation reader. + This method is responsible for releasing all resources associated with this Connector. - + - Not writable. + This method is responsible to release all portals used by this Connector. - + - Not flushable. + Default SSL CertificateSelectionCallback implementation. - + - Copies data read from server to given byte buffer. - Since server returns data row by row, length will differ each time, but it is only zero once the operation ends. - Can be mixed with calls to the more efficient NpgsqlCopyOutStream.Read() : byte[] though that would not make much sense. + Default SSL CertificateValidationCallback implementation. - + - Not seekable + Default SSL PrivateKeySelectionCallback implementation. - + - Not supported + Default SSL ProvideClientCertificatesCallback implementation. - + - Returns a whole row of data from server without extra work. - If standard Stream.Read(...) has been called before, it's internal buffers remains are returned. + This method is required to set all the version dependent features flags. + SupportsPrepare means the server can use prepared query plans (7.3+) - + - True while this stream can be used to read copy data from server + Opens the physical connection to the server. + Usually called by the RequestConnector + Method of the connection pool manager. - + - True + Closes the physical connection to the server. - + - False + Returns next portal index. - + - False + Returns next plan index. - + - Number of bytes read so far + Occurs on NoticeResponses from the PostgreSQL backend. - + - Number of bytes read so far; can not be set. + Occurs on NotificationResponses from the PostgreSQL backend. - - - This class represents the Bind message sent to PostgreSQL - server. - - - - + - Summary description for LargeObjectManager. + Called to provide client certificates for SSL handshake. - + - Represents a transaction to be made in a PostgreSQL database. This class cannot be inherited. + Mono.Security.Protocol.Tls.CertificateSelectionCallback delegate. - + - Commits the database transaction. + Mono.Security.Protocol.Tls.CertificateValidationCallback delegate. - + - Rolls back a transaction from a pending state. + Mono.Security.Protocol.Tls.PrivateKeySelectionCallback delegate. - + - Rolls back a transaction from a pending savepoint state. + Gets the current state of the connection. - + - Creates a transaction save point. + Return Connection String. - + - Cancel the transaction without telling the backend about it. This is - used to make the transaction go away when closing a connection. + Version of backend server this connector is connected to. - + - Gets the NpgsqlConnection - object associated with the transaction, or a null reference if the - transaction is no longer valid. + Backend protocol version in use by this connector. - The NpgsqlConnection - object associated with the transaction. - + - Specifies the IsolationLevel for this transaction. + The physical connection stream to the backend. - The IsolationLevel for this transaction. - The default is ReadCommitted. - - - - This class represents a StartupPacket message of PostgreSQL - protocol. - - - + - Provides a means of reading a forward-only stream of rows from a PostgreSQL backend. This class cannot be inherited. + The physical connection socket to the backend. - + - Return the data type name of the column at index . + Reports if this connector is fully connected. - + - Return the data type of the column at index . + The connection mediator. - + - Return the Npgsql specific data type of the column at requested ordinal. + Report if the connection is in a transaction. - column position - Appropriate Npgsql type for column. - + - Return the column name of the column at index . + Report whether the current connection can support prepare functionality. - + - Return the data type OID of the column at index . + This class manages all connector objects, pooled AND non-pooled. - FIXME: Why this method returns String? - + + Unique static instance of the connector pool + mamager. + + + Map of index to unused pooled connectors, avaliable to the + next RequestConnector() call. + This hashmap will be indexed by connection string. + This key will hold a list of queues of pooled connectors available to be used. + + + Timer for tracking unused connections in pools. + + - Return the column name of the column named . + Searches the shared and pooled connector lists for a + matching connector object or creates a new one. + The NpgsqlConnection that is requesting + the connector. Its ConnectionString will be used to search the + pool for available connectors. + A connector object. - + - Return the data DbType of the column at index . + Find a pooled connector. Handle locking and timeout here. - + - Return the data NpgsqlDbType of the column at index . + Find a pooled connector. Handle shared/non-shared here. - + - Get the value of a column as a . - If the differences between and - in handling of days and months is not important to your application, use - instead. + Releases a connector, possibly back to the pool for future use. - Index of the field to find. - value of the field. + + Pooled connectors will be put back into the pool if there is room. + Shared connectors should just have their use count decremented + since they always stay in the shared pool. + + The connector to release. - + - Gets the value of a column converted to a Guid. + Release a pooled connector. Handle locking here. - + - Gets the value of a column as Int16. + Release a pooled connector. Handle shared/non-shared here. - + - Gets the value of a column as Int32. + Create a connector without any pooling functionality. - + - Gets the value of a column as Int64. + Find an available pooled connector in the non-shared pool, or create + a new one if none found. - + - Gets the value of a column as Single. + This method is only called when NpgsqlConnection.Dispose(false) is called which means a + finalization. This also means, an NpgsqlConnection was leak. We clear pool count so that + client doesn't end running out of connections from pool. When the connection is finalized, its underlying + socket is closed. - + - Gets the value of a column as Double. + Close the connector. + + Connector to release - + - Gets the value of a column as String. + Put a pooled connector into the pool queue. + Connector to pool - + - Gets the value of a column as Decimal. + A queue with an extra Int32 for keeping track of busy connections. - + - Copy values from each column in the current row into . + Connections available to the end user - The number of column values copied. - + - Copy values from each column in the current row into . + Connections currently in use - An array appropriately sized to store values from all columns. - The number of column values copied. - + - Gets the value of a column as Boolean. + Represents information about COPY operation data transfer format as returned by server. - + - Gets the value of a column as Byte. Not implemented. + Only created when a CopyInResponse or CopyOutResponse is received by NpgsqlState.ProcessBackendResponses() - + - Gets the value of a column as Char. + Returns true if this operation is currently active and field at given location is in binary format. - + - Gets the value of a column as DateTime. + Returns true if this operation is currently active and in binary format. - + - Returns a System.Data.DataTable that describes the column metadata of the DataReader. + Returns number of fields if this operation is currently active, otherwise -1 - + - This methods parses the command text and tries to get the tablename - from it. + Represents a PostgreSQL COPY FROM STDIN operation with a corresponding SQL statement + to execute against a PostgreSQL database + and an associated stream used to read data from (if provided by user) + or for writing it (when generated by driver). + Eg. new NpgsqlCopyIn("COPY mytable FROM STDIN", connection, streamToRead).Start(); - + - Is raised whenever Close() is called. + Creates NpgsqlCommand to run given query upon Start(). Data for the requested COPY IN operation can then be written to CopyData stream followed by a call to End() or Cancel(). - + - Gets the number of columns in the current row. + Given command is run upon Start(). Data for the requested COPY IN operation can then be written to CopyData stream followed by a call to End() or Cancel(). - + - Gets the value of a column in its native format. + Given command is executed upon Start() and all data from fromStream is passed to it as copy data. - + - Gets the value of a column in its native format. + Returns true if this operation is currently active and field at given location is in binary format. - + - Gets a value indicating the depth of nesting for the current row. Always returns zero. + Command specified upon creation is executed as a non-query. + If CopyStream is set upon creation, it will be flushed to server as copy data, and operation will be finished immediately. + Otherwise the CopyStream member can be used for writing copy data to server and operation finished with a call to End() or Cancel(). - + - Gets a value indicating whether the data reader is closed. + Called after writing all data to CopyStream to successfully complete this copy operation. - + - Contains the column names as the keys + Withdraws an already started copy operation. The operation will fail with given error message. + Will do nothing if current operation is not active. - + - Contains all unique columns + Returns true if the connection is currently reserved for this operation. - + - This is the primary implementation of NpgsqlDataReader. It is the one used in normal cases (where the - preload-reader option is not set in the connection string to resolve some potential backwards-compatibility - issues), the only implementation used internally, and in cases where CachingDataReader is used, it is still - used to do the actual "leg-work" of turning a response stream from the server into a datareader-style - object - with CachingDataReader then filling it's cache from here. + The stream provided by user or generated upon Start(). + User may provide a stream to constructor; it is used to pass to server all data read from it. + Otherwise, call to Start() sets this to a writable NpgsqlCopyInStream that passes all data written to it to server. + In latter case this is only available while the copy operation is active and null otherwise. - + - Iterate through the objects returned through from the server. - If it's a CompletedResponse the rowsaffected count is updated appropriately, - and we iterate again, otherwise we return it (perhaps updating our cache of pending - rows if appropriate). + Returns true if this operation is currently active and in binary format. - The next we will deal with. - + - Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend. + Returns number of fields expected on each input row if this operation is currently active, otherwise -1 - True if the reader was advanced, otherwise false. - + - Releases the resources used by the NpgsqlCommand. + The Command used to execute this copy operation. - + - Closes the data reader object. + Set before a COPY IN query to define size of internal buffer for reading from given CopyStream. - + - Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend. + Represents an ongoing COPY FROM STDIN operation. + Provides methods to push data to server and end or cancel the operation. - True if the reader was advanced, otherwise false. - + - Advances the data reader to the next row. + Called from NpgsqlState.ProcessBackendResponses upon CopyInResponse. + If CopyStream is already set, it is used to read data to push to server, after which the copy is completed. + Otherwise CopyStream is set to a writable NpgsqlCopyInStream that calls SendCopyData each time it is written to. - True if the reader was advanced, otherwise false. - + - Return the value of the column at index . + Sends given packet to server as a CopyData message. + Does not check for notifications! Use another thread for that. - + - Gets raw data from a column. + Sends CopyDone message to server. Handles responses, ie. may throw an exception. - + - Gets raw data from a column. + Sends CopyFail message to server. Handles responses, ie. should always throw an exception: + in CopyIn state the server responds to CopyFail with an error response; + outside of a CopyIn state the server responds to CopyFail with an error response; + without network connection or whatever, there's going to eventually be a failure, timeout or user intervention. - + - Report whether the value in a column is DBNull. + Copy format information returned from server. - + - Gets the number of rows changed, inserted, or deleted by execution of the SQL statement. + Stream for writing data to a table on a PostgreSQL version 7.4 or newer database during an active COPY FROM STDIN operation. + Passes data exactly as is and when given, so see to it that you use server encoding, correct format and reasonably sized writes! - + - Indicates if NpgsqlDatareader has rows to be read. + Created only by NpgsqlCopyInState.StartCopy() - + - Provides an implementation of NpgsqlDataReader in which all data is pre-loaded into memory. - This operates by first creating a ForwardsOnlyDataReader as usual, and then loading all of it's - Rows into memory. There is a general principle that when there is a trade-off between a class design that - is more efficient and/or scalable on the one hand and one that is less efficient but has more functionality - (in this case the internal-only functionality of caching results) that one can build the less efficent class - from the most efficient without significant extra loss in efficiency, but not the other way around. The relationship - between ForwardsOnlyDataReader and CachingDataReader is an example of this). - Since the interface presented to the user is still forwards-only, queues are used to - store this information, so that dequeueing as we go we give the garbage collector the best opportunity - possible to reclaim any memory that is no longer in use. - ForwardsOnlyDataReader being used to actually - obtain the information from the server means that the "leg-work" is still only done (and need only be - maintained) in one place. - This class exists to allow for certain potential backwards-compatibility issues to be resolved - with little effort on the part of affected users. It is considerably less efficient than ForwardsOnlyDataReader - and hence never used internally. + Successfully completes copying data to server. Returns after operation is finished. + Does nothing if this stream is not the active copy operation writer. - + - Represents the method that allows the application to provide a certificate collection to be used for SSL clien authentication + Withdraws an already started copy operation. The operation will fail with given error message. + Does nothing if this stream is not the active copy operation writer. - A X509CertificateCollection to be filled with one or more client certificates. - + - !!! Helper class, for compilation only. - Connector implements the logic for the Connection Objects to - access the physical connection to the database, and isolate - the application developer from connection pooling internals. + Writes given bytes to server. + Fails if this stream is not the active copy operation writer. - + - Constructor. + Flushes stream contents to server. + Fails if this stream is not the active copy operation writer. - Controls whether the connector can be shared. - + - This method checks if the connector is still ok. - We try to send a simple query text, select 1 as ConnectionTest; + Not readable - + - This method is responsible for releasing all resources associated with this Connector. + Not seekable - + - This method is responsible to release all portals used by this Connector. + Not supported - + - Default SSL CertificateSelectionCallback implementation. + True while this stream can be used to write copy data to server - + - Default SSL CertificateValidationCallback implementation. + False - + - Default SSL PrivateKeySelectionCallback implementation. + True - + - Default SSL ProvideClientCertificatesCallback implementation. + False - + - This method is required to set all the version dependent features flags. - SupportsPrepare means the server can use prepared query plans (7.3+) + Number of bytes written so far - + - Opens the physical connection to the server. + Number of bytes written so far; not settable - Usually called by the RequestConnector - Method of the connection pool manager. - + - Closes the physical connection to the server. + Represents a PostgreSQL COPY TO STDOUT operation with a corresponding SQL statement + to execute against a PostgreSQL database + and an associated stream used to write results to (if provided by user) + or for reading the results (when generated by driver). + Eg. new NpgsqlCopyOut("COPY (SELECT * FROM mytable) TO STDOUT", connection, streamToWrite).Start(); - + - Returns next portal index. + Creates NpgsqlCommand to run given query upon Start(), after which CopyStream provides data from database as requested in the query. - + - Returns next plan index. + Given command is run upon Start(), after which CopyStream provides data from database as requested in the query. - + - Occurs on NoticeResponses from the PostgreSQL backend. + Given command is executed upon Start() and all requested copy data is written to toStream immediately. - + - Occurs on NotificationResponses from the PostgreSQL backend. + Returns true if this operation is currently active and field at given location is in binary format. - + - Called to provide client certificates for SSL handshake. + Command specified upon creation is executed as a non-query. + If CopyStream is set upon creation, all copy data from server will be written to it, and operation will be finished immediately. + Otherwise the CopyStream member can be used for reading copy data from server until no more data is available. - + - Mono.Security.Protocol.Tls.CertificateSelectionCallback delegate. + Flush generated CopyStream at once. Effectively reads and discard all the rest of copy data from server. - + - Mono.Security.Protocol.Tls.CertificateValidationCallback delegate. + Returns true if the connection is currently reserved for this operation. - + - Mono.Security.Protocol.Tls.PrivateKeySelectionCallback delegate. + The stream provided by user or generated upon Start() - + - Gets the current state of the connection. + The Command used to execute this copy operation. - + - Return Connection String. + Returns true if this operation is currently active and in binary format. - + - Version of backend server this connector is connected to. + Returns number of fields if this operation is currently active, otherwise -1 - + - Backend protocol version in use by this connector. + Faster alternative to using the generated CopyStream. - + - The physical connection stream to the backend. + Represents an ongoing COPY TO STDOUT operation. + Provides methods to read data from server or end the operation. - + - The physical connection socket to the backend. + Called from NpgsqlState.ProcessBackendResponses upon CopyOutResponse. + If CopyStream is already set, it is used to write data received from server, after which the copy ends. + Otherwise CopyStream is set to a readable NpgsqlCopyOutStream that receives data from server. - + - Reports if this connector is fully connected. + Called from NpgsqlOutStream.Read to read copy data from server. - + - The connection mediator. + Copy format information returned from server. - + - Report if the connection is in a transaction. + Stream for reading data from a table or select on a PostgreSQL version 7.4 or newer database during an active COPY TO STDOUT operation. + Passes data exactly as provided by the server. - + - Report whether the current connection can support prepare functionality. + Created only by NpgsqlCopyOutState.StartCopy() - + - This class contains helper methods for type conversion between - the .Net type system and postgresql. + Discards copy data as long as server pushes it. Returns after operation is finished. + Does nothing if this stream is not the active copy operation reader. - + - A cache of basic datatype mappings keyed by server version. This way we don't - have to load the basic type mappings for every connection. + Not writable. - + - Find a NpgsqlNativeTypeInfo in the default types map that can handle objects - of the given NpgsqlDbType. + Not flushable. - + - Find a NpgsqlNativeTypeInfo in the default types map that can handle objects - of the given NpgsqlDbType. + Copies data read from server to given byte buffer. + Since server returns data row by row, length will differ each time, but it is only zero once the operation ends. + Can be mixed with calls to the more efficient NpgsqlCopyOutStream.Read() : byte[] though that would not make much sense. - + - Find a NpgsqlNativeTypeInfo in the default types map that can handle objects - of the given DbType. + Not seekable - + - Find a NpgsqlNativeTypeInfo in the default types map that can handle objects - of the given System.Type. + Not supported - + - This method is responsible to convert the string received from the backend - to the corresponding NpgsqlType. - The given TypeInfo is called upon to do the conversion. - If no TypeInfo object is provided, no conversion is performed. - + Returns a whole row of data from server without extra work. + If standard Stream.Read(...) has been called before, it's internal buffers remains are returned. + - + - Create the one and only native to backend type map. - This map is used when formatting native data - types to backend representations. + True while this stream can be used to read copy data from server - + - This method creates (or retrieves from cache) a mapping between type and OID - of all natively supported postgresql data types. - This is needed as from one version to another, this mapping can be changed and - so we avoid hardcoding them. - - NpgsqlTypeMapping containing all known data types. The mapping must be - cloned before it is modified because it is cached; changes made by one connection may - effect another connection. + True + - + - Attempt to map types by issuing a query against pg_type. - This function takes a list of NpgsqlTypeInfo and attempts to resolve the OID field - of each by querying pg_type. If the mapping is found, the type info object is - updated (OID) and added to the provided NpgsqlTypeMapping object. + False - NpgsqlConnector to send query through. - Mapping object to add types too. - List of types that need to have OID's mapped. - + - Delegate called to convert the given backend data to its native representation. + False - + - Delegate called to convert the given native data to its backand representation. + Number of bytes read so far - + - Represents a backend data type. - This class can be called upon to convert a backend field representation to a native object. + Number of bytes read so far; can not be set. - + - Construct a new NpgsqlTypeInfo with the given attributes and conversion handlers. + Writes given objects into a stream for PostgreSQL COPY in default copy format (not CSV or BINARY). - Type OID provided by the backend server. - Type name provided by the backend server. - NpgsqlDbType - System type to convert fields of this type to. - Data conversion handler. - + - Perform a data conversion from a backend representation to - a native object. + Represents the method that handles the RowUpdated events. - Data sent from the backend. - Type modifier field sent from the backend. + The source of the event. + A NpgsqlRowUpdatedEventArgs that contains the event data. - + - Type OID provided by the backend server. + Represents the method that handles the RowUpdating events. + The source of the event. + A NpgsqlRowUpdatingEventArgs that contains the event data. - + - Type name provided by the backend server. + This class represents an adapter from many commands: select, update, insert and delete to fill Datasets. - + - NpgsqlDbType. + Provides a means of reading a forward-only stream of rows from a PostgreSQL backend. This class cannot be inherited. - + - NpgsqlDbType. + Return the data type name of the column at index . - + - Provider type to convert fields of this type to. + Return the data type of the column at index . - + - System type to convert fields of this type to. + Return the Npgsql specific data type of the column at requested ordinal. + column position + Appropriate Npgsql type for column. - + - Represents a backend data type. - This class can be called upon to convert a native object to its backend field representation, + Return the column name of the column at index . - + - Returns an NpgsqlNativeTypeInfo for an array where the elements are of the type - described by the NpgsqlNativeTypeInfo supplied. + Return the data type OID of the column at index . + FIXME: Why this method returns String? - + - Construct a new NpgsqlTypeInfo with the given attributes and conversion handlers. + Return the column name of the column named . - Type name provided by the backend server. - NpgsqlDbType - Data conversion handler. - + - Perform a data conversion from a native object to - a backend representation. - DBNull and null values are handled differently depending if a plain query is used - When + Return the data DbType of the column at index . - Native .NET object to be converted. - Flag indicating if the conversion has to be done for - plain queries or extended queries - + - Type name provided by the backend server. + Return the data NpgsqlDbType of the column at index . - + - NpgsqlDbType. + Get the value of a column as a . + If the differences between and + in handling of days and months is not important to your application, use + instead. + Index of the field to find. + value of the field. - + - DbType. + Gets the value of a column converted to a Guid. - + - Apply quoting. + Gets the value of a column as Int16. - + - Use parameter size information. + Gets the value of a column as Int32. - + - Provide mapping between type OID, type name, and a NpgsqlBackendTypeInfo object that represents it. + Gets the value of a column as Int64. - + - Construct an empty mapping. + Gets the value of a column as Single. - + - Copy constuctor. + Gets the value of a column as Double. - + - Add the given NpgsqlBackendTypeInfo to this mapping. + Gets the value of a column as String. - + - Add a new NpgsqlBackendTypeInfo with the given attributes and conversion handlers to this mapping. + Gets the value of a column as Decimal. - Type OID provided by the backend server. - Type name provided by the backend server. - NpgsqlDbType - System type to convert fields of this type to. - Data conversion handler. - + - Make a shallow copy of this type mapping. + Gets the value of a column as TimeSpan. - + - Determine if a NpgsqlBackendTypeInfo with the given backend type OID exists in this mapping. + Copy values from each column in the current row into . + The number of column values copied. - + - Determine if a NpgsqlBackendTypeInfo with the given backend type name exists in this mapping. + Copy values from each column in the current row into . + An array appropriately sized to store values from all columns. + The number of column values copied. - + - Get the number of type infos held. + Gets the value of a column as Boolean. - + - Retrieve the NpgsqlBackendTypeInfo with the given backend type OID, or null if none found. + Gets the value of a column as Byte. Not implemented. - + - Retrieve the NpgsqlBackendTypeInfo with the given backend type name, or null if none found. + Gets the value of a column as Char. - + - Provide mapping between type Type, NpgsqlDbType and a NpgsqlNativeTypeInfo object that represents it. + Gets the value of a column as DateTime. - + - Add the given NpgsqlNativeTypeInfo to this mapping. + Returns a System.Data.DataTable that describes the column metadata of the DataReader. - + - Add a new NpgsqlNativeTypeInfo with the given attributes and conversion handlers to this mapping. + This methods parses the command text and tries to get the tablename + from it. - Type name provided by the backend server. - NpgsqlDbType - Data conversion handler. - + - Retrieve the NpgsqlNativeTypeInfo with the given NpgsqlDbType. + Is raised whenever Close() is called. - + - Retrieve the NpgsqlNativeTypeInfo with the given DbType. + Gets the number of columns in the current row. - + - Retrieve the NpgsqlNativeTypeInfo with the given Type. + Gets the value of a column in its native format. - + - Determine if a NpgsqlNativeTypeInfo with the given backend type name exists in this mapping. + Gets the value of a column in its native format. - + - Determine if a NpgsqlNativeTypeInfo with the given NpgsqlDbType exists in this mapping. + Gets a value indicating the depth of nesting for the current row. Always returns zero. - + - Determine if a NpgsqlNativeTypeInfo with the given Type name exists in this mapping. + Gets a value indicating whether the data reader is closed. - + - Get the number of type infos held. + Contains the column names as the keys - + - Implements for version 3 of the protocol. + Contains all unique columns - + - Reads a row, field by field, allowing a DataRow to be built appropriately. + This is the primary implementation of NpgsqlDataReader. It is the one used in normal cases (where the + preload-reader option is not set in the connection string to resolve some potential backwards-compatibility + issues), the only implementation used internally, and in cases where CachingDataReader is used, it is still + used to do the actual "leg-work" of turning a response stream from the server into a datareader-style + object - with CachingDataReader then filling it's cache from here. - + - Reads part of a field, as needed (for - and + Iterate through the objects returned through from the server. + If it's a CompletedResponse the rowsaffected count is updated appropriately, + and we iterate again, otherwise we return it (perhaps updating our cache of pending + rows if appropriate). + The next we will deal with. - + - Adds further functionality to stream that is dependant upon the type of data read. + Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend. + True if the reader was advanced, otherwise false. - + - Completes the implementation of Streamer for char data. + Releases the resources used by the NpgsqlCommand. - + - Completes the implementation of Streamer for byte data. + Closes the data reader object. - + - Implements for version 2 of the protocol. + Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend. + True if the reader was advanced, otherwise false. - + - Encapsulates the null mapping bytes sent at the start of a version 2 - datarow message, and the process of identifying the nullity of the data - at a particular index + Advances the data reader to the next row. + True if the reader was advanced, otherwise false. - + - Provides the underlying mechanism for reading schema information. + Return the value of the column at index . - + - Creates an NpgsqlSchema that can read schema information from the database. + Gets raw data from a column. - An open database connection for reading metadata. - + - Returns the MetaDataCollections that lists all possible collections. + Gets raw data from a column. - The MetaDataCollections - + - Returns the Restrictions that contains the meaning and position of the values in the restrictions array. + Report whether the value in a column is DBNull. - The Restrictions - + - Returns the Databases that contains a list of all accessable databases. + Gets the number of rows changed, inserted, or deleted by execution of the SQL statement. - The restrictions to filter the collection. - The Databases - + - Returns the Tables that contains table and view names and the database and schema they come from. + Indicates if NpgsqlDatareader has rows to be read. - The restrictions to filter the collection. - The Tables - + - Returns the Columns that contains information about columns in tables. + Provides an implementation of NpgsqlDataReader in which all data is pre-loaded into memory. + This operates by first creating a ForwardsOnlyDataReader as usual, and then loading all of it's + Rows into memory. There is a general principle that when there is a trade-off between a class design that + is more efficient and/or scalable on the one hand and one that is less efficient but has more functionality + (in this case the internal-only functionality of caching results) that one can build the less efficent class + from the most efficient without significant extra loss in efficiency, but not the other way around. The relationship + between ForwardsOnlyDataReader and CachingDataReader is an example of this). + Since the interface presented to the user is still forwards-only, queues are used to + store this information, so that dequeueing as we go we give the garbage collector the best opportunity + possible to reclaim any memory that is no longer in use. + ForwardsOnlyDataReader being used to actually + obtain the information from the server means that the "leg-work" is still only done (and need only be + maintained) in one place. + This class exists to allow for certain potential backwards-compatibility issues to be resolved + with little effort on the part of affected users. It is considerably less efficient than ForwardsOnlyDataReader + and hence never used internally. - The restrictions to filter the collection. - The Columns. - + + + This class represents the Parse message sent to PostgreSQL + server. + + + + - Returns the Views that contains view names and the database and schema they come from. + EventArgs class to send Notice parameters, which are just NpgsqlError's in a lighter context. - The restrictions to filter the collection. - The Views - + - Returns the Users containing user names and the sysid of those users. + Notice information. - The restrictions to filter the collection. - The Users. - + - This is the abstract base class for NpgsqlAsciiRow and NpgsqlBinaryRow. + This class represents the ErrorResponse and NoticeResponse + message sent from PostgreSQL server. - + - Implements a bit string; a collection of zero or more bits which can each be 1 or 0. - BitString's behave as a list of bools, though like most strings and unlike most collections the position - tends to be of as much significance as the value. - BitStrings are often used as masks, and are commonly cast to and from other values. + Return a string representation of this error object. - + - Represents the empty string. + Severity code. All versions. - + - Create a BitString from an enumeration of boolean values. The BitString will contain - those booleans in the order they came in. + Error code. PostgreSQL 7.4 and up. - The boolean values. - + - Creates a BitString filled with a given number of true or false values. + Terse error message. All versions. - The value to fill the string with. - The number of bits to fill. - + - Creats a bitstring from a string. - The string to copy from. - + Detailed error message. PostgreSQL 7.4 and up. - + - Creates a single-bit element from a boolean value. + Suggestion to help resolve the error. PostgreSQL 7.4 and up. - The bool value which determines whether - the bit is 1 or 0. - + - Creates a bitstring from an unsigned integer value. The string will be the shortest required to - contain the integer (e.g. 1 bit for 0 or 1, 2 for 2 or 3, 3 for 4-7, and so on). + Position (one based) within the query string where the error was encounterd. PostgreSQL 7.4 and up. - The integer. - This method is not CLS Compliant, and may not be available to some languages. - + - Creates a bitstring from an integer value. The string will be the shortest required to - contain the integer (e.g. 1 bit for 0 or 1, 2 for 2 or 3, 3 for 4-7, and so on). + Position (one based) within the query string where the error was encounterd. This position refers to an internal command executed for example inside a PL/pgSQL function. PostgreSQL 7.4 and up. - The integer. - + - Finds the first instance of a given value + Internal query string where the error was encounterd. This position refers to an internal command executed for example inside a PL/pgSQL function. PostgreSQL 7.4 and up. - The value - whether true or false - to search for. - The index of the value found, or -1 if none are present. - + - True if there is at least one bit with the value looked for. + Trace back information. PostgreSQL 7.4 and up. - The value - true or false - to detect. - True if at least one bit was the same as item, false otherwise. - + - Copies the bitstring to an array of bools. + Source file (in backend) reporting the error. PostgreSQL 7.4 and up. - The boolean array to copy to. - The index in the array to start copying from. - + - Returns an enumerator that enumerates through the string. + Source file line number (in backend) reporting the error. PostgreSQL 7.4 and up. - The enumerator. - + - Creats a bitstring by concatenating another onto this one. + Source routine (in backend) reporting the error. PostgreSQL 7.4 and up. - The string to append to this one. - The combined strings. - + - Returns a substring of this string. + String containing the sql sent which produced this error. - The position to start from, must be between 0 and the length of the string. - The length of the string to return, must be greater than zero, and may not be - so large that the start + length exceeds the bounds of this instance. - The Bitstring identified - + - Returns a substring of this string. + Backend protocol version in use. - The position to start from, must be between 0 and the length of the string, - the rest of the string is returned. - The Bitstring identified - + - A logical and between this string and another. The two strings must be the same length. + The level of verbosity of the NpgsqlEventLog - Another BitString to AND with this one. - A bitstring with 1 where both BitStrings had 1 and 0 otherwise. - + - A logical or between this string and another. The two strings must be the same length. + Don't log at all - Another BitString to OR with this one. - A bitstring with 1 where either BitString had 1 and 0 otherwise. - + - A logical xor between this string and another. The two strings must be the same length. + Only log the most common issues - Another BitString to XOR with this one. - A bitstring with 1 where one BitStrings and the other had 0, - and 0 where they both had 1 or both had 0. - + - A bitstring that is the logical inverse of this one. + Log everything - A bitstring of the same length as this with 1 where this has 0 and vice-versa. - + - Shifts the string operand bits to the left, filling with zeros to produce a - string of the same length. + This class handles all the Npgsql event and debug logging - The number of bits to shift to the left. - A left-shifted bitstring. - The behaviour of LShift is closer to what one would expect from dealing - with PostgreSQL bit-strings than in using the same operations on integers in .NET - In particular, negative operands result in a right-shift, and operands greater than - the length of the string will shift it entirely, resulting in a zero-filled string. - - + - Shifts the string operand bits to the right, filling with zeros to produce a - string of the same length. + Writes a string to the Npgsql event log if msglevel is bigger then NpgsqlEventLog.Level - The number of bits to shift to the right. - A right-shifted bitstring. - The behaviour of RShift is closer to what one would expect from dealing - with PostgreSQL bit-strings than in using the same operations on integers in .NET - In particular, negative operands result in a left-shift, and operands greater than - the length of the string will shift it entirely, resulting in a zero-filled string. It also performs - a logical shift, rather than an arithmetic shift, so it always sets the vacated bit positions to zero - (like PostgreSQL and like .NET for unsigned integers but not for signed integers). + + This method is obsolete and should no longer be used. + It is likely to be removed in future versions of Npgsql + The message to write to the event log + The minimum LogLevel for which this message should be logged. - + - Returns true if the this string is identical to the argument passed. + Writes a string to the Npgsql event log if msglevel is bigger then NpgsqlEventLog.Level + The ResourceManager to get the localized resources + The name of the resource that should be fetched by the ResourceManager + The minimum LogLevel for which this message should be logged. + The additional parameters that shall be included into the log-message (must be compatible with the string in the resource): - + - Compares two strings. Strings are compared as strings, so while 0 being less than 1 will - mean a comparison between two strings of the same size is the same as treating them as numbers, - in the case of two strings of differing lengths the comparison starts at the right-most (most significant) - bit, and if all bits of the shorter string are exhausted without finding a comparison, then the larger - string is deemed to be greater than the shorter (0010 is greater than 0001 but less than 00100). + Writes the default log-message for the action of calling the Get-part of an Indexer to the log file. - Another string to compare with this one. - A value if the two strings are identical, an integer less - than zero if this is less than the argument, and an integer greater - than zero otherwise. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Indexer + The parameter given to the Indexer - + - Compares the string with another object. + Writes the default log-message for the action of calling the Set-part of an Indexer to the logfile. - The object to compare with. - If the object is null then this string is considered greater. If the object is another BitString - then they are compared as in the explicit comparison for BitStrings - in any other case a is thrown. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Indexer + The parameter given to the Indexer + The value the Indexer is set to - + - Compares this BitString with an object for equality. + Writes the default log-message for the action of calling the Get-part of a Property to the logfile. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Property + The name of the Property - + - Returns a code for use in hashing operations. + Writes the default log-message for the action of calling the Set-part of a Property to the logfile. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Property + The name of the Property + The value the Property is set to - + - Returns a string representation of the BitString. + Writes the default log-message for the action of calling a Method without Arguments to the logfile. - - A string which can contain a letter and optionally a number which sets a minimum size for the string - returned. In each case using the lower-case form of the letter will result in a lower-case string - being returned. - - - B - A string of 1s and 0s. - - - X - An hexadecimal string (will result in an error unless the string's length is divisible by 4). - - - G - A string of 1s and 0s in single-quotes preceded by 'B' (Postgres bit string literal syntax). - - Y - An hexadecimal string in single-quotes preceded by 'X' (Postgres bit literal syntax, will result in an error unless the string's length is divisible by 4. - - C - The format produced by format-string "Y" if legal, otherwise that produced by format-string "G". - E - The most compact safe representation for Postgres. If single bit will be either a 0 or a 1. Otherwise if it - can be that produce by format string "Y" it will, otherwise if there are less than 9bits in length it will be that - produced by format-string "G". For longer strings that cannot be represented in hexadecimal it will be a string - representing the first part of the string in format "Y" followed by the PostgreSQL concatenation operator, followed - by the final bits in the format "G". E.g. "X'13DCE'||B'110'" - If format is empty or null, it is treated as if "B" had been passed (the default repreesentation, and that - generally used by PostgreSQL for display). - - The formatted string. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method - + - Returns a string representation for the Bitstring + Writes the default log-message for the action of calling a Method with one Argument to the logfile. - A string containing '0' and '1' characters. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + The value of the Argument of the Method - + - Returns the same string as . formatProvider is ignored. + Writes the default log-message for the action of calling a Method with two Arguments to the logfile. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + The value of the first Argument of the Method + The value of the second Argument of the Method - + - Parses a string to produce a BitString. Most formats that can be produced by - can be accepted, but hexadecimal - can be interpreted with the preceding X' to mark the following characters as - being hexadecimal rather than binary. + Writes the default log-message for the action of calling a Method with three Arguments to the logfile. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + The value of the first Argument of the Method + The value of the second Argument of the Method + The value of the third Argument of the Method - + - Performs a logical AND on the two operands. + Writes the default log-message for the action of calling a Method with more than three Arguments to the logfile. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + A Object-Array with zero or more Ojects that are Arguments of the Method. - + - Performs a logcial OR on the two operands. - + Sets/Returns the level of information to log to the logfile. + + The current LogLevel - + - Perofrms a logical EXCLUSIVE-OR on the two operands - + Sets/Returns the filename to use for logging. + + The filename of the current Log file. - + - Performs a logical NOT on the operand. - + Sets/Returns whether Log messages should be echoed to the console + + true if Log messages are echoed to the console, otherwise false - + - Concatenates the operands. + The exception that is thrown when the PostgreSQL backend reports errors. - + - Left-shifts the string BitString. + Construct a backend error exception based on a list of one or more + backend errors. The basic Exception.Message will be built from the + first (usually the only) error in the list. - + - Right-shifts the string BitString. + Format a .NET style exception string. + Include all errors in the list, including any hints. - + - Compares the two operands. + Append a line to the given Stream, first checking for zero-length. - + - Compares the two operands. + Provide access to the entire list of errors provided by the PostgreSQL backend. - + - Compares the two operands. + Severity code. All versions. - + - Compares the two operands. + Error code. PostgreSQL 7.4 and up. - + - Compares the two operands. + Basic error message. All versions. - + - Compares the two operands. + Detailed error message. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of bits in an encoded character string, - encoded according to the Encoding passed, and returns that string. - The bitstring must contain a whole number of octets(bytes) and also be - valid according to the Encoding passed. + Suggestion to help resolve the error. PostgreSQL 7.4 and up. - The to use in producing the string. - The string that was encoded in the BitString. - + - Interprets the bitstring as a series of octets (bytes) and returns those octets. Fails - if the Bitstring does not contain a whole number of octets (its length is not evenly - divisible by 8). + Position (one based) within the query string where the error was encounterd. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of signed octets (bytes) and returns those octets. Fails - if the Bitstring does not contain a whole number of octets (its length is not evenly - divisible by 8). - This method is not CLS-Compliant and may not be available to languages that cannot - handle signed bytes. + Trace back information. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of unsigned 16-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 16. - This method is not CLS-Compliant and may not be available to languages that cannot - handle unsigned integers. + Source file (in backend) reporting the error. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of 16-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 16. + Source file line number (in backend) reporting the error. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of unsigned 32-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 32. - This method is not CLS-Compliant and may not be available to languages that cannot - handle unsigned integers. + Source routine (in backend) reporting the error. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of signed 32-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 32. + String containing the sql sent which produced this error. - + - Interprets the bitstring as a series of unsigned 64-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 64. - This method is not CLS-Compliant and may not be available to languages that cannot - handle unsigned integers. + Returns the entire list of errors provided by the PostgreSQL backend. - + + + This class represents the Parse message sent to PostgreSQL + server. + + + + - Interprets the bitstring as a series of signed 64-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 64. + A factory to create instances of various Npgsql objects. - + - The length of the string. + Creates an NpgsqlCommand object. - + + + This class represents the Parse message sent to PostgreSQL + server. + + + + - Retrieves the value of the bit at the given index. - + This class is responsible for serving as bridge between the backend + protocol handling and the core classes. It is used as the mediator for + exchanging data generated/sent from/to backend. + + - + - C# implementation of the MD5 cryptographic hash function. + EventArgs class to send Notification parameters. - + - Creates a new MD5CryptoServiceProvider. + Process ID of the PostgreSQL backend that sent this notification. - + - Drives the hashing function. + Condition that triggered that notification. - Byte array containing the data to hash. - Where in the input buffer to start. - Size in bytes of the data in the buffer to hash. - + - This finalizes the hash. Takes the data from the chaining variables and returns it. + Additional Information From Notifiying Process (for future use, currently postgres always sets this to an empty string) - + - Resets the class after use. Called automatically after hashing is done. + This class represents a parameter to a command that will be sent to server - + - This is the meat of the hash function. It is what processes each block one at a time. + Initializes a new instance of the NpgsqlParameter class. - Byte array to process data from. - Where in the byte array to start processing. - + - Pads and then processes the final block. + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name and a value of the new NpgsqlParameter. - Buffer to grab data from. - Position in buffer in bytes to get data from. - How much data in bytes in the buffer to use. + The m_Name of the parameter to map. + An Object that is the value of the NpgsqlParameter. + +

When you specify an Object + in the value parameter, the DbType is + inferred from the .NET Framework type of the Object.

+

When using this constructor, you must be aware of a possible misuse of the constructor which takes a DbType parameter. + This happens when calling this constructor passing an int 0 and the compiler thinks you are passing a value of DbType. + Use Convert.ToInt32(value) for example to have compiler calling the correct constructor.

+
- + - Stream for writing data to a table on a PostgreSQL version 7.4 or newer database during an active COPY FROM STDIN operation. - Passes data exactly as is and when given, so see to it that you use server encoding, correct format and reasonably sized writes! + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name and the data type. + The m_Name of the parameter to map. + One of the DbType values. - + - Created only by NpgsqlCopyInState.StartCopy() + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name, the DbType, and the size. + The m_Name of the parameter to map. + One of the DbType values. + The length of the parameter. - + - Successfully completes copying data to server. Returns after operation is finished. - Does nothing if this stream is not the active copy operation writer. + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name, the DbType, the size, + and the source column m_Name. + The m_Name of the parameter to map. + One of the DbType values. + The length of the parameter. + The m_Name of the source column. - + - Withdraws an already started copy operation. The operation will fail with given error message. - Does nothing if this stream is not the active copy operation writer. + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name, the DbType, the size, + the source column m_Name, a ParameterDirection, + the precision of the parameter, the scale of the parameter, a + DataRowVersion to use, and the + value of the parameter. + The m_Name of the parameter to map. + One of the DbType values. + The length of the parameter. + The m_Name of the source column. + One of the ParameterDirection values. + true if the value of the field can be null, otherwise false. + The total number of digits to the left and right of the decimal point to which + Value is resolved. + The total number of decimal places to which + Value is resolved. + One of the DataRowVersion values. + An Object that is the value + of the NpgsqlParameter. - + - Writes given bytes to server. - Fails if this stream is not the active copy operation writer. + Creates a new NpgsqlParameter that + is a copy of the current instance. + A new NpgsqlParameter that is a copy of this instance. - + - Flushes stream contents to server. - Fails if this stream is not the active copy operation writer. + Gets or sets the maximum number of digits used to represent the + Value property. + The maximum number of digits used to represent the + Value property. + The default value is 0, which indicates that the data provider + sets the precision for Value. - + - Not readable + Gets or sets the number of decimal places to which + Value is resolved. + The number of decimal places to which + Value is resolved. The default is 0. - + - Not seekable + Gets or sets the maximum size, in bytes, of the data within the column. + The maximum size, in bytes, of the data within the column. + The default value is inferred from the parameter value. - + - Not supported + Gets or sets the DbType of the parameter. + One of the DbType values. The default is String. - + - True while this stream can be used to write copy data to server + Gets or sets the DbType of the parameter. + One of the DbType values. The default is String. - + - False + Gets or sets a value indicating whether the parameter is input-only, + output-only, bidirectional, or a stored procedure return value parameter. + One of the ParameterDirection + values. The default is Input. - + - True + Gets or sets a value indicating whether the parameter accepts null values. + true if null values are accepted; otherwise, false. The default is false. - + - False + Gets or sets the m_Name of the NpgsqlParameter. + The m_Name of the NpgsqlParameter. + The default is an empty string. - + - Number of bytes written so far + The m_Name scrubbed of any optional marker - + - Number of bytes written so far; not settable + Gets or sets the m_Name of the source column that is mapped to the + DataSet and used for loading or + returning the Value. + The m_Name of the source column that is mapped to the + DataSet. The default is an empty string. - + - Represents a SQL statement or function (stored procedure) to execute - against a PostgreSQL database. This class cannot be inherited. + Gets or sets the DataRowVersion + to use when loading Value. + One of the DataRowVersion values. + The default is Current. - + - Initializes a new instance of the NpgsqlCommand class. + Gets or sets the value of the parameter. + An Object that is the value of the parameter. + The default value is null. - + - Initializes a new instance of the NpgsqlCommand class with the text of the query. + Gets or sets the value of the parameter. - The text of the query. + An Object that is the value of the parameter. + The default value is null. - + - Initializes a new instance of the NpgsqlCommand class with the text of the query and a NpgsqlConnection. + Represents a collection of parameters relevant to a NpgsqlCommand + as well as their respective mappings to columns in a DataSet. + This class cannot be inherited. - The text of the query. - A NpgsqlConnection that represents the connection to a PostgreSQL server. - + - Initializes a new instance of the NpgsqlCommand class with the text of the query, a NpgsqlConnection, and the NpgsqlTransaction. - - The text of the query. - A NpgsqlConnection that represents the connection to a PostgreSQL server. - The NpgsqlTransaction in which the NpgsqlCommand executes. + Initializes a new instance of the NpgsqlParameterCollection class. + - + - Used to execute internal commands. + Adds the specified NpgsqlParameter object to the NpgsqlParameterCollection. + The NpgsqlParameter to add to the collection. + The index of the new NpgsqlParameter object. - + - Attempts to cancel the execution of a NpgsqlCommand. + Adds a NpgsqlParameter to the NpgsqlParameterCollection given the specified parameter name and value. - This Method isn't implemented yet. + The name of the NpgsqlParameter. + The Value of the NpgsqlParameter to add to the collection. + The index of the new NpgsqlParameter object. + + Use caution when using this overload of the + Add method to specify integer parameter values. + Because this overload takes a value of type Object, + you must convert the integral value to an Object + type when the value is zero, as the following C# example demonstrates. + parameters.Add(":pname", Convert.ToInt32(0)); + If you do not perform this conversion, the compiler will assume you + are attempting to call the NpgsqlParameterCollection.Add(string, DbType) overload. + - + - Create a new command based on this one. + Adds a NpgsqlParameter to the NpgsqlParameterCollection given the parameter name and the data type. - A new NpgsqlCommand object. + The name of the parameter. + One of the DbType values. + The index of the new NpgsqlParameter object. - + - Create a new command based on this one. + Adds a NpgsqlParameter to the NpgsqlParameterCollection with the parameter name, the data type, and the column length. - A new NpgsqlCommand object. + The name of the parameter. + One of the DbType values. + The length of the column. + The index of the new NpgsqlParameter object. - + - Creates a new instance of an DbParameter object. + Adds a NpgsqlParameter to the NpgsqlParameterCollection with the parameter name, the data type, the column length, and the source column name. - An DbParameter object. + The name of the parameter. + One of the DbType values. + The length of the column. + The name of the source column. + The index of the new NpgsqlParameter object. - + - Creates a new instance of a NpgsqlParameter object. + Removes the specified NpgsqlParameter from the collection using the parameter name. - A NpgsqlParameter object. + The name of the NpgsqlParameter object to retrieve. - + - Slightly optimised version of ExecuteNonQuery() for internal ues in cases where the number - of affected rows is of no interest. + Gets a value indicating whether a NpgsqlParameter with the specified parameter name exists in the collection. + The name of the NpgsqlParameter object to find. + true if the collection contains the parameter; otherwise, false. - + - Executes a SQL statement against the connection and returns the number of rows affected. + Gets the location of the NpgsqlParameter in the collection with a specific parameter name. - The number of rows affected if known; -1 otherwise. + The name of the NpgsqlParameter object to find. + The zero-based location of the NpgsqlParameter in the collection. - + - Sends the CommandText to - the Connection and builds a - NpgsqlDataReader - using one of the CommandBehavior values. + Removes the specified NpgsqlParameter from the collection using a specific index. - One of the CommandBehavior values. - A NpgsqlDataReader object. + The zero-based index of the parameter. - + - Sends the CommandText to - the Connection and builds a - NpgsqlDataReader. + Inserts a NpgsqlParameter into the collection at the specified index. - A NpgsqlDataReader object. + The zero-based index where the parameter is to be inserted within the collection. + The NpgsqlParameter to add to the collection. - + - Sends the CommandText to - the Connection and builds a - NpgsqlDataReader - using one of the CommandBehavior values. + Removes the specified NpgsqlParameter from the collection. - One of the CommandBehavior values. - A NpgsqlDataReader object. - Currently the CommandBehavior parameter is ignored. + The NpgsqlParameter to remove from the collection. - + - This method binds the parameters from parameters collection to the bind - message. - + Gets a value indicating whether a NpgsqlParameter exists in the collection. + + The value of the NpgsqlParameter object to find. + true if the collection contains the NpgsqlParameter object; otherwise, false. - + - Executes the query, and returns the first column of the first row - in the result set returned by the query. Extra columns or rows are ignored. + Gets a value indicating whether a NpgsqlParameter with the specified parameter name exists in the collection. - The first column of the first row in the result set, - or a null reference if the result set is empty. + The name of the NpgsqlParameter object to find. + A reference to the requested parameter is returned in this out param if it is found in the list. This value is null if the parameter is not found. + true if the collection contains the parameter and param will contain the parameter; otherwise, false. - + - Creates a prepared version of the command on a PostgreSQL server. + Removes all items from the collection. - + - This method checks the connection state to see if the connection - is set or it is open. If one of this conditions is not met, throws - an InvalidOperationException + Gets the location of a NpgsqlParameter in the collection. + The value of the NpgsqlParameter object to find. + The zero-based index of the NpgsqlParameter object in the collection. - + - This method substitutes the Parameters, if exist, in the command - to their actual values. - The parameter name format is :ParameterName. + Adds the specified NpgsqlParameter object to the NpgsqlParameterCollection. - A version of CommandText with the Parameters inserted. + The NpgsqlParameter to add to the collection. + The zero-based index of the new NpgsqlParameter object. - + - Gets or sets the SQL statement or function (stored procedure) to execute at the data source. + Copies NpgsqlParameter objects from the NpgsqlParameterCollection to the specified array. - The Transact-SQL statement or stored procedure to execute. The default is an empty string. + An Array to which to copy the NpgsqlParameter objects in the collection. + The starting index of the array. - + - Gets or sets the wait time before terminating the attempt - to execute a command and generating an error. + Returns an enumerator that can iterate through the collection. - The time (in seconds) to wait for the command to execute. - The default is 20 seconds. + An IEnumerator that can be used to iterate through the collection. - + - Gets or sets a value indicating how the - CommandText property is to be interpreted. + In methods taking an object as argument this method is used to verify + that the argument has the type NpgsqlParameter - One of the CommandType values. The default is CommandType.Text. + The object to verify - + - Gets or sets the NpgsqlConnection - used by this instance of the NpgsqlCommand. + Gets the NpgsqlParameter with the specified name. - The connection to a data source. The default value is a null reference. + The name of the NpgsqlParameter to retrieve. + The NpgsqlParameter with the specified name, or a null reference if the parameter is not found. - + - Gets the NpgsqlParameterCollection. + Gets the NpgsqlParameter at the specified index. - The parameters of the SQL statement or function (stored procedure). The default is an empty collection. + The zero-based index of the NpgsqlParameter to retrieve. + The NpgsqlParameter at the specified index. - + - Gets or sets the NpgsqlTransaction - within which the NpgsqlCommand executes. + Gets the number of NpgsqlParameter objects in the collection. - The NpgsqlTransaction. - The default value is a null reference. + The number of NpgsqlParameter objects in the collection. - + + + This class represents the ParameterStatus message sent from PostgreSQL + server. + + + + + + This class represents the Parse message sent to PostgreSQL + server. + + + + - Gets or sets how command results are applied to the DataRow - when used by the Update - method of the DbDataAdapter. + This class represents a PasswordPacket message sent to backend + PostgreSQL. - One of the UpdateRowSource values. - + - Returns oid of inserted row. This is only updated when using executenonQuery and when command inserts just a single row. If table is created without oids, this will always be 0. + Used when a connection is closed - + - Represents a collection of parameters relevant to a NpgsqlCommand - as well as their respective mappings to columns in a DataSet. - This class cannot be inherited. + Summary description for NpgsqlQuery - + - Initializes a new instance of the NpgsqlParameterCollection class. + This is the abstract base class for NpgsqlAsciiRow and NpgsqlBinaryRow. - + + + This class represents a RowDescription message sent from + the PostgreSQL. + + + + - Adds the specified NpgsqlParameter object to the NpgsqlParameterCollection. + This struct represents the internal data of the RowDescription message. - The NpgsqlParameter to add to the collection. - The index of the new NpgsqlParameter object. - + - Adds a NpgsqlParameter to the NpgsqlParameterCollection given the specified parameter name and value. + Provides the underlying mechanism for reading schema information. - The name of the NpgsqlParameter. - The Value of the NpgsqlParameter to add to the collection. - The index of the new NpgsqlParameter object. - - Use caution when using this overload of the - Add method to specify integer parameter values. - Because this overload takes a value of type Object, - you must convert the integral value to an Object - type when the value is zero, as the following C# example demonstrates. - parameters.Add(":pname", Convert.ToInt32(0)); - If you do not perform this conversion, the compiler will assume you - are attempting to call the NpgsqlParameterCollection.Add(string, DbType) overload. - - + - Adds a NpgsqlParameter to the NpgsqlParameterCollection given the parameter name and the data type. + Creates an NpgsqlSchema that can read schema information from the database. - The name of the parameter. - One of the DbType values. - The index of the new NpgsqlParameter object. + An open database connection for reading metadata. - + - Adds a NpgsqlParameter to the NpgsqlParameterCollection with the parameter name, the data type, and the column length. + Returns the MetaDataCollections that lists all possible collections. - The name of the parameter. - One of the DbType values. - The length of the column. - The index of the new NpgsqlParameter object. + The MetaDataCollections - + - Adds a NpgsqlParameter to the NpgsqlParameterCollection with the parameter name, the data type, the column length, and the source column name. + Returns the Restrictions that contains the meaning and position of the values in the restrictions array. - The name of the parameter. - One of the DbType values. - The length of the column. - The name of the source column. - The index of the new NpgsqlParameter object. + The Restrictions - + - Removes the specified NpgsqlParameter from the collection using the parameter name. + Returns the Databases that contains a list of all accessable databases. - The name of the NpgsqlParameter object to retrieve. + The restrictions to filter the collection. + The Databases - + - Gets a value indicating whether a NpgsqlParameter with the specified parameter name exists in the collection. + Returns the Tables that contains table and view names and the database and schema they come from. - The name of the NpgsqlParameter object to find. - true if the collection contains the parameter; otherwise, false. + The restrictions to filter the collection. + The Tables - + - Gets the location of the NpgsqlParameter in the collection with a specific parameter name. + Returns the Columns that contains information about columns in tables. - The name of the NpgsqlParameter object to find. - The zero-based location of the NpgsqlParameter in the collection. + The restrictions to filter the collection. + The Columns. - + - Removes the specified NpgsqlParameter from the collection using a specific index. + Returns the Views that contains view names and the database and schema they come from. - The zero-based index of the parameter. + The restrictions to filter the collection. + The Views - + - Inserts a NpgsqlParameter into the collection at the specified index. + Returns the Users containing user names and the sysid of those users. - The zero-based index where the parameter is to be inserted within the collection. - The NpgsqlParameter to add to the collection. + The restrictions to filter the collection. + The Users. - + + + This class represents a StartupPacket message of PostgreSQL + protocol. + + + + - Removes the specified NpgsqlParameter from the collection. + Represents a completed response message. - The NpgsqlParameter to remove from the collection. - + + + This class represents the Parse message sent to PostgreSQL + server. + + + + - Gets a value indicating whether a NpgsqlParameter exists in the collection. + Represents a transaction to be made in a PostgreSQL database. This class cannot be inherited. - The value of the NpgsqlParameter object to find. - true if the collection contains the NpgsqlParameter object; otherwise, false. - + - Gets a value indicating whether a NpgsqlParameter with the specified parameter name exists in the collection. + Commits the database transaction. - The name of the NpgsqlParameter object to find. - A reference to the requested parameter is returned in this out param if it is found in the list. This value is null if the parameter is not found. - true if the collection contains the parameter and param will contain the parameter; otherwise, false. - + - Removes all items from the collection. + Rolls back a transaction from a pending state. - + - Gets the location of a NpgsqlParameter in the collection. + Rolls back a transaction from a pending savepoint state. - The value of the NpgsqlParameter object to find. - The zero-based index of the NpgsqlParameter object in the collection. - + - Adds the specified NpgsqlParameter object to the NpgsqlParameterCollection. + Creates a transaction save point. - The NpgsqlParameter to add to the collection. - The zero-based index of the new NpgsqlParameter object. - + - Copies NpgsqlParameter objects from the NpgsqlParameterCollection to the specified array. + Cancel the transaction without telling the backend about it. This is + used to make the transaction go away when closing a connection. - An Array to which to copy the NpgsqlParameter objects in the collection. - The starting index of the array. - + - Returns an enumerator that can iterate through the collection. + Gets the NpgsqlConnection + object associated with the transaction, or a null reference if the + transaction is no longer valid. - An IEnumerator that can be used to iterate through the collection. + The NpgsqlConnection + object associated with the transaction. - + - In methods taking an object as argument this method is used to verify - that the argument has the type NpgsqlParameter + Specifies the IsolationLevel for this transaction. - The object to verify + The IsolationLevel for this transaction. + The default is ReadCommitted. - + - Gets the NpgsqlParameter with the specified name. - - The name of the NpgsqlParameter to retrieve. - The NpgsqlParameter with the specified name, or a null reference if the parameter is not found. + This class provides many util methods to handle + reading and writing of PostgreSQL protocol messages. + - + - Gets the NpgsqlParameter at the specified index. + This method takes a ProtocolVersion and returns an integer + version number that the Postgres backend will recognize in a + startup packet. + + + + + This method takes a version string as returned by SELECT VERSION() and returns + a valid version string ("7.2.2" for example). + This is only needed when running protocol version 2. + This does not do any validity checks. - The zero-based index of the NpgsqlParameter to retrieve. - The NpgsqlParameter at the specified index. - + - Gets the number of NpgsqlParameter objects in the collection. + This method gets a C NULL terminated string from the network stream. + It keeps reading a byte in each time until a NULL byte is returned. + It returns the resultant string of bytes read. + This string is sent from backend. + + + + + Reads requested number of bytes from stream with retries until Stream.Read returns 0 or count is reached. - The number of NpgsqlParameter objects in the collection. + Stream to read + byte buffer to fill + starting position to fill the buffer + number of bytes to read + The number of bytes read. May be less than count if no more bytes are available. - + - Represents an ongoing COPY FROM STDIN operation. - Provides methods to push data to server and end or cancel the operation. + This method writes a C NULL terminated string to the network stream. + It appends a NULL terminator to the end of the String. + + + This method writes a C NULL terminated string to the network stream. + It appends a NULL terminator to the end of the String. + + + + + This method writes a set of bytes to the stream. It also enables logging of them. - + - Called from NpgsqlState.ProcessBackendResponses upon CopyInResponse. - If CopyStream is already set, it is used to read data to push to server, after which the copy is completed. - Otherwise CopyStream is set to a writable NpgsqlCopyInStream that calls SendCopyData each time it is written to. + This method writes a C NULL terminated string limited in length to the + backend server. + It pads the string with null bytes to the size specified. + + + + + Write a 32-bit integer to the given stream in the correct byte order. - + - Sends given packet to server as a CopyData message. - Does not check for notifications! Use another thread for that. + Read a 32-bit integer from the given stream in the correct byte order. - + - Sends CopyDone message to server. Handles responses, ie. may throw an exception. + Write a 16-bit integer to the given stream in the correct byte order. - + - Sends CopyFail message to server. Handles responses, ie. should always throw an exception: - in CopyIn state the server responds to CopyFail with an error response; - outside of a CopyIn state the server responds to CopyFail with an error response; - without network connection or whatever, there's going to eventually be a failure, timeout or user intervention. + Read a 16-bit integer from the given stream in the correct byte order. - + - Copy format information returned from server. + Represent the frontend/backend protocol version. - + - Represents a PostgreSQL Point type + Represent the backend server version. + As this class offers no functionality beyond that offered by it has been + deprecated in favour of that class. + - + - Represents a PostgreSQL Line Segment type. + Returns the string representation of this version in three place dot notation (Major.Minor.Patch). - + - Represents a PostgreSQL Path type. + Server version major number. - + - Represents a PostgreSQL Polygon type. + Server version minor number. - + - Represents a PostgreSQL Circle type. + Server version patch level number. - + - Represents a PostgreSQL inet type. + A class to handle everything associated with SSPI authentication - + - This class represents a PasswordPacket message sent to backend - PostgreSQL. + Simplified SecBufferDesc struct with only one SecBuffer
diff --git a/packages/Npgsql.2.0.14.3/lib/net20/de/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net20/de/Npgsql.resources.dll new file mode 100644 index 000000000..94536226a Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net20/de/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net20/es/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net20/es/Npgsql.resources.dll new file mode 100644 index 000000000..7f2bad465 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net20/es/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net20/fi/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net20/fi/Npgsql.resources.dll new file mode 100644 index 000000000..740f53145 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net20/fi/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net20/fr/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net20/fr/Npgsql.resources.dll new file mode 100644 index 000000000..61cb0a920 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net20/fr/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net20/ja/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net20/ja/Npgsql.resources.dll new file mode 100644 index 000000000..8e51e71ab Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net20/ja/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net20/zh-CN/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net20/zh-CN/Npgsql.resources.dll new file mode 100644 index 000000000..88ef86506 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net20/zh-CN/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.11/lib/Net35/Mono.Security.dll b/packages/Npgsql.2.0.14.3/lib/net35/Mono.Security.dll similarity index 100% rename from packages/Npgsql.2.0.11/lib/Net35/Mono.Security.dll rename to packages/Npgsql.2.0.14.3/lib/net35/Mono.Security.dll diff --git a/packages/Npgsql.2.0.14.3/lib/net35/Npgsql.dll b/packages/Npgsql.2.0.14.3/lib/net35/Npgsql.dll new file mode 100644 index 000000000..802d3b264 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net35/Npgsql.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net35/Npgsql.pdb b/packages/Npgsql.2.0.14.3/lib/net35/Npgsql.pdb new file mode 100644 index 000000000..48552ba8f Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net35/Npgsql.pdb differ diff --git a/packages/Npgsql.2.0.11/lib/Net40/Npgsql.XML b/packages/Npgsql.2.0.14.3/lib/net35/Npgsql.xml similarity index 83% rename from packages/Npgsql.2.0.11/lib/Net40/Npgsql.XML rename to packages/Npgsql.2.0.14.3/lib/net35/Npgsql.xml index 428af55d5..0f5dc5348 100644 --- a/packages/Npgsql.2.0.11/lib/Net40/Npgsql.XML +++ b/packages/Npgsql.2.0.14.3/lib/net35/Npgsql.xml @@ -4,1492 +4,1953 @@ Npgsql - + - This class represents a parameter to a command that will be sent to server + Handles serialisation of .NET array or IEnumeration to pg format. + Arrays of arrays, enumerations of enumerations, arrays of enumerations etc. + are treated as multi-dimensional arrays (in much the same manner as an array of arrays + is used to emulate multi-dimensional arrays in languages that lack native support for them). + If such an enumeration of enumerations is "jagged" (as opposed to rectangular, cuboid, + hypercuboid, hyperhypercuboid, etc) then this class will "correctly" serialise it, but pg + will raise an error as it doesn't allow jagged arrays. - + - Initializes a new instance of the NpgsqlParameter class. + Create an ArrayNativeToBackendTypeConverter with the element converter passed + The that would be used to serialise the element type. - + - Initializes a new instance of the NpgsqlParameter - class with the parameter m_Name and a value of the new NpgsqlParameter. + Serialise the enumeration or array. - The m_Name of the parameter to map. - An Object that is the value of the NpgsqlParameter. - -

When you specify an Object - in the value parameter, the DbType is - inferred from the .NET Framework type of the Object.

-

When using this constructor, you must be aware of a possible misuse of the constructor which takes a DbType parameter. - This happens when calling this constructor passing an int 0 and the compiler thinks you are passing a value of DbType. - Use Convert.ToInt32(value) for example to have compiler calling the correct constructor.

-
- + - Initializes a new instance of the NpgsqlParameter - class with the parameter m_Name and the data type. + Handles parsing of pg arrays into .NET arrays. - The m_Name of the parameter to map. - One of the DbType values. - + - Initializes a new instance of the NpgsqlParameter - class with the parameter m_Name, the DbType, and the size. + Takes a string representation of a pg 1-dimensional array + (or a 1-dimensional row within an n-dimensional array) + and allows enumeration of the string represenations of each items. - The m_Name of the parameter to map. - One of the DbType values. - The length of the parameter. - + - Initializes a new instance of the NpgsqlParameter - class with the parameter m_Name, the DbType, the size, - and the source column m_Name. + Takes a string representation of a pg n-dimensional array + and allows enumeration of the string represenations of the next + lower level of rows (which in turn can be taken as (n-1)-dimensional arrays. - The m_Name of the parameter to map. - One of the DbType values. - The length of the parameter. - The m_Name of the source column. - + - Initializes a new instance of the NpgsqlParameter - class with the parameter m_Name, the DbType, the size, - the source column m_Name, a ParameterDirection, - the precision of the parameter, the scale of the parameter, a - DataRowVersion to use, and the - value of the parameter. + Takes an ArrayList which may be an ArrayList of ArrayLists, an ArrayList of ArrayLists of ArrayLists + and so on and enumerates the items that aren't ArrayLists (the leaf nodes if we think of the ArrayList + passed as a tree). Simply uses the ArrayLists' own IEnumerators to get that of the next, + pushing them onto a stack until we hit something that isn't an ArrayList. + ArrayList to enumerate + IEnumerable - The m_Name of the parameter to map. - One of the DbType values. - The length of the parameter. - The m_Name of the source column. - One of the ParameterDirection values. - true if the value of the field can be null, otherwise false. - The total number of digits to the left and right of the decimal point to which - Value is resolved. - The total number of decimal places to which - Value is resolved. - One of the DataRowVersion values. - An Object that is the value - of the NpgsqlParameter. - + - Creates a new NpgsqlParameter that - is a copy of the current instance. + Create a new ArrayBackendToNativeTypeConverter - A new NpgsqlParameter that is a copy of this instance. + for the element type. - + - Gets or sets the maximum number of digits used to represent the - Value property. + Creates an array from pg representation. - The maximum number of digits used to represent the - Value property. - The default value is 0, which indicates that the data provider - sets the precision for Value. - + - Gets or sets the number of decimal places to which - Value is resolved. + Creates an array list from pg represenation of an array. + Multidimensional arrays are treated as ArrayLists of ArrayLists - The number of decimal places to which - Value is resolved. The default is 0. - + - Gets or sets the maximum size, in bytes, of the data within the column. + Creates an n-dimensional array from an ArrayList of ArrayLists or + a 1-dimensional array from something else. - The maximum size, in bytes, of the data within the column. - The default value is inferred from the parameter value. + to convert + produced. - + - Gets or sets the DbType of the parameter. + Takes an array of ints and treats them like the limits of a set of counters. + Retains a matching set of ints that is set to all zeros on the first ++ + On a ++ it increments the "right-most" int. If that int reaches it's + limit it is set to zero and the one before it is incremented, and so on. + + Making this a more general purpose class is pretty straight-forward, but we'll just put what we need here. - One of the DbType values. The default is String. - + - Gets or sets the DbType of the parameter. + Implements a bit string; a collection of zero or more bits which can each be 1 or 0. + BitString's behave as a list of bools, though like most strings and unlike most collections the position + tends to be of as much significance as the value. + BitStrings are often used as masks, and are commonly cast to and from other values. - One of the DbType values. The default is String. - + - Gets or sets a value indicating whether the parameter is input-only, - output-only, bidirectional, or a stored procedure return value parameter. + Represents the empty string. - One of the ParameterDirection - values. The default is Input. - + - Gets or sets a value indicating whether the parameter accepts null values. + Create a BitString from an enumeration of boolean values. The BitString will contain + those booleans in the order they came in. - true if null values are accepted; otherwise, false. The default is false. + The boolean values. - + - Gets or sets the m_Name of the NpgsqlParameter. + Creates a BitString filled with a given number of true or false values. - The m_Name of the NpgsqlParameter. - The default is an empty string. + The value to fill the string with. + The number of bits to fill. - + - The m_Name scrubbed of any optional marker + Creats a bitstring from a string. + The string to copy from. + - + - Gets or sets the m_Name of the source column that is mapped to the - DataSet and used for loading or - returning the Value. + Creates a single-bit element from a boolean value. - The m_Name of the source column that is mapped to the - DataSet. The default is an empty string. + The bool value which determines whether + the bit is 1 or 0. - + - Gets or sets the DataRowVersion - to use when loading Value. + Creates a bitstring from an unsigned integer value. The string will be the shortest required to + contain the integer (e.g. 1 bit for 0 or 1, 2 for 2 or 3, 3 for 4-7, and so on). - One of the DataRowVersion values. - The default is Current. + The integer. + This method is not CLS Compliant, and may not be available to some languages. - + - Gets or sets the value of the parameter. + Creates a bitstring from an integer value. The string will be the shortest required to + contain the integer (e.g. 1 bit for 0 or 1, 2 for 2 or 3, 3 for 4-7, and so on). - An Object that is the value of the parameter. - The default value is null. + The integer. - + - Gets or sets the value of the parameter. + Finds the first instance of a given value - An Object that is the value of the parameter. - The default value is null. - - - - This class represents the Parse message sent to PostgreSQL - server. - - + The value - whether true or false - to search for. + The index of the value found, or -1 if none are present. - + - For classes representing messages sent from the client to the server. + True if there is at least one bit with the value looked for. + The value - true or false - to detect. + True if at least one bit was the same as item, false otherwise. - + - Writes given objects into a stream for PostgreSQL COPY in default copy format (not CSV or BINARY). + Copies the bitstring to an array of bools. + The boolean array to copy to. + The index in the array to start copying from. - + - Return an exact copy of this NpgsqlConnectionString. + Returns an enumerator that enumerates through the string. + The enumerator. - + - This function will set value for known key, both private member and base[key]. + Creats a bitstring by concatenating another onto this one. - - + The string to append to this one. + The combined strings. - + - The function will modify private member only, not base[key]. + Returns a substring of this string. - - + The position to start from, must be between 0 and the length of the string. + The length of the string to return, must be greater than zero, and may not be + so large that the start + length exceeds the bounds of this instance. + The Bitstring identified - + - Clear the member and assign them to the default value. + Returns a substring of this string. + The position to start from, must be between 0 and the length of the string, + the rest of the string is returned. + The Bitstring identified - + - Compatibilty version. When possible, behaviour caused by breaking changes will be preserved - if this version is less than that where the breaking change was introduced. - - - - - Case insensative accessor for indivual connection string values. + A logical and between this string and another. The two strings must be the same length. + Another BitString to AND with this one. + A bitstring with 1 where both BitStrings had 1 and 0 otherwise. - + - Common base class for all derived MD5 implementations. + A logical or between this string and another. The two strings must be the same length. + Another BitString to OR with this one. + A bitstring with 1 where either BitString had 1 and 0 otherwise. - + - Called from constructor of derived class. + A logical xor between this string and another. The two strings must be the same length. + Another BitString to XOR with this one. + A bitstring with 1 where one BitStrings and the other had 0, + and 0 where they both had 1 or both had 0. - + - Finalizer for HashAlgorithm + A bitstring that is the logical inverse of this one. + A bitstring of the same length as this with 1 where this has 0 and vice-versa. - + - Computes the entire hash of all the bytes in the byte array. + Shifts the string operand bits to the left, filling with zeros to produce a + string of the same length. + The number of bits to shift to the left. + A left-shifted bitstring. + The behaviour of LShift is closer to what one would expect from dealing + with PostgreSQL bit-strings than in using the same operations on integers in .NET + In particular, negative operands result in a right-shift, and operands greater than + the length of the string will shift it entirely, resulting in a zero-filled string. + - + - When overridden in a derived class, drives the hashing function. + Shifts the string operand bits to the right, filling with zeros to produce a + string of the same length. - - - + The number of bits to shift to the right. + A right-shifted bitstring. + The behaviour of RShift is closer to what one would expect from dealing + with PostgreSQL bit-strings than in using the same operations on integers in .NET + In particular, negative operands result in a left-shift, and operands greater than + the length of the string will shift it entirely, resulting in a zero-filled string. It also performs + a logical shift, rather than an arithmetic shift, so it always sets the vacated bit positions to zero + (like PostgreSQL and like .NET for unsigned integers but not for signed integers). + - + - When overridden in a derived class, this pads and hashes whatever data might be left in the buffers and then returns the hash created. + Returns true if the this string is identical to the argument passed. - + - When overridden in a derived class, initializes the object to prepare for hashing. + Compares two strings. Strings are compared as strings, so while 0 being less than 1 will + mean a comparison between two strings of the same size is the same as treating them as numbers, + in the case of two strings of differing lengths the comparison starts at the right-most (most significant) + bit, and if all bits of the shorter string are exhausted without finding a comparison, then the larger + string is deemed to be greater than the shorter (0010 is greater than 0001 but less than 00100). + Another string to compare with this one. + A value if the two strings are identical, an integer less + than zero if this is less than the argument, and an integer greater + than zero otherwise. - + - Used for stream chaining. Computes hash as data passes through it. + Compares the string with another object. - The buffer from which to grab the data to be copied. - The offset into the input buffer to start reading at. - The number of bytes to be copied. - The buffer to write the copied data to. - At what point in the outputBuffer to write the data at. + The object to compare with. + If the object is null then this string is considered greater. If the object is another BitString + then they are compared as in the explicit comparison for BitStrings + in any other case a is thrown. - + - Used for stream chaining. Computes hash as data passes through it. Finishes off the hash. + Compares this BitString with an object for equality. - The buffer from which to grab the data to be copied. - The offset into the input buffer to start reading at. - The number of bytes to be copied. - + - Get whether or not the hash can transform multiple blocks at a time. - Note: MUST be overriden if descendant can transform multiple block - on a single call! + Returns a code for use in hashing operations. - + - Gets the previously computed hash. + Returns a string representation of the BitString. + + A string which can contain a letter and optionally a number which sets a minimum size for the string + returned. In each case using the lower-case form of the letter will result in a lower-case string + being returned. + + + B + A string of 1s and 0s. + + + X + An hexadecimal string (will result in an error unless the string's length is divisible by 4). + + + G + A string of 1s and 0s in single-quotes preceded by 'B' (Postgres bit string literal syntax). + + Y + An hexadecimal string in single-quotes preceded by 'X' (Postgres bit literal syntax, will result in an error unless the string's length is divisible by 4. + + C + The format produced by format-string "Y" if legal, otherwise that produced by format-string "G". + E + The most compact safe representation for Postgres. If single bit will be either a 0 or a 1. Otherwise if it + can be that produce by format string "Y" it will, otherwise if there are less than 9bits in length it will be that + produced by format-string "G". For longer strings that cannot be represented in hexadecimal it will be a string + representing the first part of the string in format "Y" followed by the PostgreSQL concatenation operator, followed + by the final bits in the format "G". E.g. "X'13DCE'||B'110'" + If format is empty or null, it is treated as if "B" had been passed (the default repreesentation, and that + generally used by PostgreSQL for display). + + The formatted string. - + - Returns the size in bits of the hash. + Returns a string representation for the Bitstring + A string containing '0' and '1' characters. - + - Must be overriden if not 1 + Returns the same string as . formatProvider is ignored. - + - Must be overriden if not 1 + Parses a string to produce a BitString. Most formats that can be produced by + can be accepted, but hexadecimal + can be interpreted with the preceding X' to mark the following characters as + being hexadecimal rather than binary. - + - Called from constructor of derived class. + Performs a logical AND on the two operands. - + - Creates the default derived class. + Performs a logcial OR on the two operands. - + - Given a join expression and a projection, fetch all columns in the projection - that reference columns in the join. + Perofrms a logical EXCLUSIVE-OR on the two operands - + - Given an InputExpression append all from names (including nested joins) to the list. + Performs a logical NOT on the operand. - + - Get new ColumnExpression that will be used in projection that had it's existing columns moved. - These should be simple references to the inner column + Concatenates the operands. - + - Every property accessed in the list of columns must be adjusted for a new scope + Left-shifts the string BitString. - - - This class provides many util methods to handle - reading and writing of PostgreSQL protocol messages. - - - - - This method takes a ProtocolVersion and returns an integer - version number that the Postgres backend will recognize in a - startup packet. - - - + - This method takes a version string as returned by SELECT VERSION() and returns - a valid version string ("7.2.2" for example). - This is only needed when running protocol version 2. - This does not do any validity checks. + Right-shifts the string BitString. - - - This method gets a C NULL terminated string from the network stream. - It keeps reading a byte in each time until a NULL byte is returned. - It returns the resultant string of bytes read. - This string is sent from backend. - - - + - Reads requested number of bytes from stream with retries until Stream.Read returns 0 or count is reached. + Compares the two operands. - Stream to read - byte buffer to fill - starting position to fill the buffer - number of bytes to read - The number of bytes read. May be less than count if no more bytes are available. - - - This method writes a C NULL terminated string to the network stream. - It appends a NULL terminator to the end of the String. - + - This method writes a C NULL terminated string to the network stream. - It appends a NULL terminator to the end of the String. - + Compares the two operands. + - + - This method writes a C NULL terminated string limited in length to the - backend server. - It pads the string with null bytes to the size specified. - + Compares the two operands. + - + - Write a 32-bit integer to the given stream in the correct byte order. + Compares the two operands. - + - Read a 32-bit integer from the given stream in the correct byte order. + Compares the two operands. - + - Write a 16-bit integer to the given stream in the correct byte order. + Compares the two operands. - + - Read a 16-bit integer from the given stream in the correct byte order. + Interprets the bitstring as a series of bits in an encoded character string, + encoded according to the Encoding passed, and returns that string. + The bitstring must contain a whole number of octets(bytes) and also be + valid according to the Encoding passed. + The to use in producing the string. + The string that was encoded in the BitString. - + - Represent the frontend/backend protocol version. + Interprets the bitstring as a series of octets (bytes) and returns those octets. Fails + if the Bitstring does not contain a whole number of octets (its length is not evenly + divisible by 8). - + - Represent the backend server version. - As this class offers no functionality beyond that offered by it has been - deprecated in favour of that class. + Interprets the bitstring as a series of signed octets (bytes) and returns those octets. Fails + if the Bitstring does not contain a whole number of octets (its length is not evenly + divisible by 8). + This method is not CLS-Compliant and may not be available to languages that cannot + handle signed bytes. - - + - Returns the string representation of this version in three place dot notation (Major.Minor.Patch). + Interprets the bitstring as a series of unsigned 16-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 16. + This method is not CLS-Compliant and may not be available to languages that cannot + handle unsigned integers. - + - Server version major number. + Interprets the bitstring as a series of 16-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 16. - + - Server version minor number. + Interprets the bitstring as a series of unsigned 32-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 32. + This method is not CLS-Compliant and may not be available to languages that cannot + handle unsigned integers. - + - Server version patch level number. + Interprets the bitstring as a series of signed 32-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 32. - + - Represents a PostgreSQL COPY TO STDOUT operation with a corresponding SQL statement - to execute against a PostgreSQL database - and an associated stream used to write results to (if provided by user) - or for reading the results (when generated by driver). - Eg. new NpgsqlCopyOut("COPY (SELECT * FROM mytable) TO STDOUT", connection, streamToWrite).Start(); + Interprets the bitstring as a series of unsigned 64-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 64. + This method is not CLS-Compliant and may not be available to languages that cannot + handle unsigned integers. - + - Creates NpgsqlCommand to run given query upon Start(), after which CopyStream provides data from database as requested in the query. + Interprets the bitstring as a series of signed 64-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 64. - + - Given command is run upon Start(), after which CopyStream provides data from database as requested in the query. + The length of the string. - + - Given command is executed upon Start() and all requested copy data is written to toStream immediately. + Retrieves the value of the bit at the given index. - - - Returns true if this operation is currently active and field at given location is in binary format. + + + Represents the PostgreSQL interval datatype. + PostgreSQL differs from .NET in how it's interval type doesn't assume 24 hours in a day + (to deal with 23- and 25-hour days caused by daylight savings adjustments) and has a concept + of months that doesn't exist in .NET's class. (Neither datatype + has any concessions for leap-seconds). + For most uses just casting to and from TimeSpan will work correctly — in particular, + the results of subtracting one or the PostgreSQL date, time and + timestamp types from another should be the same whether you do so in .NET or PostgreSQL — + but if the handling of days and months in PostgreSQL is important to your application then you + should use this class instead of . + If you don't know whether these differences are important to your application, they + probably arent! Just use and do not use this class directly ☺ + To avoid forcing unnecessary provider-specific concerns on users who need not be concerned + with them a call to on a field containing an + value will return a rather than an + . If you need the extra functionality of + then use . + + + + + - + - Command specified upon creation is executed as a non-query. - If CopyStream is set upon creation, all copy data from server will be written to it, and operation will be finished immediately. - Otherwise the CopyStream member can be used for reading copy data from server until no more data is available. + Represents the number of ticks (100ns periods) in one microsecond. This field is constant. - + - Flush generated CopyStream at once. Effectively reads and discard all the rest of copy data from server. + Represents the number of ticks (100ns periods) in one millisecond. This field is constant. - + - Returns true if the connection is currently reserved for this operation. + Represents the number of ticks (100ns periods) in one second. This field is constant. - + - The stream provided by user or generated upon Start() + Represents the number of ticks (100ns periods) in one minute. This field is constant. - + - The Command used to execute this copy operation. + Represents the number of ticks (100ns periods) in one hour. This field is constant. - + - Returns true if this operation is currently active and in binary format. + Represents the number of ticks (100ns periods) in one day. This field is constant. - + - Returns number of fields if this operation is currently active, otherwise -1 + Represents the number of hours in one day (assuming no daylight savings adjustments). This field is constant. - + - Faster alternative to using the generated CopyStream. + Represents the number of days assumed in one month if month justification or unjustifcation is performed. + This is set to 30 for consistency with PostgreSQL. Note that this is means that month adjustments cause + a year to be taken as 30 × 12 = 360 rather than 356/366 days. - + - This class manages all connector objects, pooled AND non-pooled. + Represents the number of ticks (100ns periods) in one day, assuming 30 days per month. - - Unique static instance of the connector pool - mamager. - - - Map of index to unused pooled connectors, avaliable to the - next RequestConnector() call. - This hashmap will be indexed by connection string. - This key will hold a list of queues of pooled connectors available to be used. - - - Timer for tracking unused connections in pools. - - + - Searches the shared and pooled connector lists for a - matching connector object or creates a new one. + Represents the number of months in a year. This field is constant. - The NpgsqlConnection that is requesting - the connector. Its ConnectionString will be used to search the - pool for available connectors. - A connector object. - + - Find a pooled connector. Handle locking and timeout here. + Represents the maximum . This field is read-only. - + - Find a pooled connector. Handle shared/non-shared here. + Represents the minimum . This field is read-only. - + - Releases a connector, possibly back to the pool for future use. + Represents the zero . This field is read-only. - - Pooled connectors will be put back into the pool if there is room. - Shared connectors should just have their use count decremented - since they always stay in the shared pool. - - The connector to release. - + - Release a pooled connector. Handle locking here. + Initializes a new to the specified number of ticks. + A time period expressed in 100ns units. - + - Release a pooled connector. Handle shared/non-shared here. + Initializes a new to hold the same time as a + A time period expressed in a - + - Create a connector without any pooling functionality. + Initializes a new to the specified number of months, days + & ticks. + Number of months. + Number of days. + Number of 100ns units. - + - Find an available pooled connector in the non-shared pool, or create - a new one if none found. + Initializes a new to the specified number of + days, hours, minutes & seconds. + Number of days. + Number of hours. + Number of minutes. + Number of seconds. - + - This method is only called when NpgsqlConnection.Dispose(false) is called which means a - finalization. This also means, an NpgsqlConnection was leak. We clear pool count so that - client doesn't end running out of connections from pool. When the connection is finalized, its underlying - socket is closed. + Initializes a new to the specified number of + days, hours, minutes, seconds & milliseconds. + Number of days. + Number of hours. + Number of minutes. + Number of seconds. + Number of milliseconds. - + - Close the connector. + Initializes a new to the specified number of + months, days, hours, minutes, seconds & milliseconds. - - Connector to release + Number of months. + Number of days. + Number of hours. + Number of minutes. + Number of seconds. + Number of milliseconds. - + - Put a pooled connector into the pool queue. + Initializes a new to the specified number of + years, months, days, hours, minutes, seconds & milliseconds. + Years are calculated exactly equivalent to 12 months. - Connector to pool + Number of years. + Number of months. + Number of days. + Number of hours. + Number of minutes. + Number of seconds. + Number of milliseconds. - + - A queue with an extra Int32 for keeping track of busy connections. + Creates an from a number of ticks. + The number of ticks (100ns units) in the interval. + A d with the given number of ticks. - + - The number of pooled Connectors that belong to this queue but - are currently in use. + Creates an from a number of microseconds. + The number of microseconds in the interval. + A d with the given number of microseconds. - + - This class represents a BackEndKeyData message received - from PostgreSQL + Creates an from a number of milliseconds. + The number of milliseconds in the interval. + A d with the given number of milliseconds. - + - Used when a connection is closed + Creates an from a number of seconds. + The number of seconds in the interval. + A d with the given number of seconds. - + - Summary description for NpgsqlQuery + Creates an from a number of minutes. + The number of minutes in the interval. + A d with the given number of minutes. - + - Represents the method that handles the Notice events. + Creates an from a number of hours. - A NpgsqlNoticeEventArgs that contains the event data. + The number of hours in the interval. + A d with the given number of hours. - + - Represents the method that handles the Notification events. + Creates an from a number of days. - The source of the event. - A NpgsqlNotificationEventArgs that contains the event data. + The number of days in the interval. + A d with the given number of days. - + - This class represents a connection to a - PostgreSQL server. + Creates an from a number of months. + The number of months in the interval. + A d with the given number of months. - + - Initializes a new instance of the - NpgsqlConnection class. + Adds another interval to this instance and returns the result. + An to add to this instance. + An whose values are the sums of the two instances. - + - Initializes a new instance of the - NpgsqlConnection class - and sets the ConnectionString. + Subtracts another interval from this instance and returns the result. - The connection used to open the PostgreSQL database. + An to subtract from this instance. + An whose values are the differences of the two instances. - + - Begins a database transaction with the specified isolation level. + Returns an whose value is the negated value of this instance. - The isolation level under which the transaction should run. - An DbTransaction - object representing the new transaction. - - Currently the IsolationLevel ReadCommitted and Serializable are supported by the PostgreSQL backend. - There's no support for nested transactions. - + An whose value is the negated value of this instance. - + - Begins a database transaction. + This absolute value of this instance. In the case of some, but not all, components being negative, + the rules used for justification are used to determine if the instance is positive or negative. - A NpgsqlTransaction - object representing the new transaction. - - Currently there's no support for nested transactions. - + An whose value is the absolute value of this instance. - + - Begins a database transaction with the specified isolation level. + Equivalent to PostgreSQL's justify_days function. - The isolation level under which the transaction should run. - A NpgsqlTransaction - object representing the new transaction. - - Currently the IsolationLevel ReadCommitted and Serializable are supported by the PostgreSQL backend. - There's no support for nested transactions. - + An based on this one, but with any hours outside of the range [-23, 23] + converted into days. - + - Opens a database connection with the property settings specified by the - ConnectionString. + Opposite to PostgreSQL's justify_days function. + An based on this one, but with any days converted to multiples of ±24hours. - + - This method changes the current database by disconnecting from the actual - database and connecting to the specified. + Equivalent to PostgreSQL's justify_months function. - The name of the database to use in place of the current database. + An based on this one, but with any days outside of the range [-30, 30] + converted into months. - + - Releases the connection to the database. If the connection is pooled, it will be - made available for re-use. If it is non-pooled, the actual connection will be shutdown. + Opposite to PostgreSQL's justify_months function. + An based on this one, but with any months converted to multiples of ±30days. - + - Creates and returns a DbCommand - object associated with the IDbConnection. + Equivalent to PostgreSQL's justify_interval function. - A DbCommand object. + An based on this one, + but with any months converted to multiples of ±30days + and then with any days converted to multiples of ±24hours - + - Creates and returns a NpgsqlCommand - object associated with the NpgsqlConnection. + Opposite to PostgreSQL's justify_interval function. - A NpgsqlCommand object. + An based on this one, but with any months converted to multiples of ±30days and then any days converted to multiples of ±24hours; - + + - Releases all resources used by the - NpgsqlConnection. + Implicit cast of a to an - true when called from Dispose(); - false when being called from the finalizer. + A + An eqivalent, canonical, . - + - Create a new connection based on this one. + Implicit cast of an to a . - A new NpgsqlConnection object. + A . + An equivalent . - + - Create a new connection based on this one. + Returns true if another is exactly the same as this instance. - A new NpgsqlConnection object. + An for comparison. + true if the two instances are exactly the same, + false otherwise. - + - Default SSL CertificateSelectionCallback implementation. + Returns true if another object is an , that is exactly the same as + this instance + An for comparison. + true if the argument is an and is exactly the same + as this one, false otherwise. - + - Default SSL CertificateValidationCallback implementation. + Compares two instances. + The first . + The second . + 0 if the two are equal or equivalent. A value greater than zero if x is greater than y, + a value less than zero if x is less than y. - + - Default SSL PrivateKeySelectionCallback implementation. + A hash code suitable for uses with hashing algorithms. + An signed integer. - + - Default SSL ProvideClientCertificatesCallback implementation. + Compares this instance with another/ + An to compare this with. + 0 if the instances are equal or equivalent. A value less than zero if + this instance is less than the argument. A value greater than zero if this instance + is greater than the instance. - + - Write each key/value pair in the connection string to the log. + Compares this instance with another/ + An object to compare this with. + 0 if the argument is an and the instances are equal or equivalent. + A value less than zero if the argument is an and + this instance is less than the argument. + A value greater than zero if the argument is an and this instance + is greater than the instance. + A value greater than zero if the argument is null. + The argument is not an . - + - Returns the supported collections + Parses a and returns a instance. + Designed to use the formats generally returned by PostgreSQL. + The to parse. + An represented by the argument. + The string was null. + A value obtained from parsing the string exceeded the values allowed for the relevant component. + The string was not in a format that could be parsed to produce an . - + - Returns the schema collection specified by the collection name. + Attempt to parse a to produce an . - The collection name. - The collection specified. + The to parse. + (out) The produced, or if the parsing failed. + true if the parsing succeeded, false otherwise. - + - Returns the schema collection specified by the collection name filtered by the restrictions. + Create a representation of the instance. + The format returned is of the form: + [M mon[s]] [d day[s]] [HH:mm:ss[.f[f[f[f[f[f[f[f[f]]]]]]]]]] + A zero is represented as 00:00:00 + + Ticks are 100ns, Postgress resolution is only to 1µs at most. Hence we lose 1 or more decimal + precision in storing values in the database. Despite this, this method will output that extra + digit of precision. It's forward-compatible with any future increases in resolution up to 100ns, + and also makes this ToString() more applicable to any other use-case. + - The collection name. - - The restriction values to filter the results. A description of the restrictions is contained - in the Restrictions collection. - - The collection specified. + The representation. - + - Occurs on NoticeResponses from the PostgreSQL backend. + Adds two together. + The first to add. + The second to add. + An whose values are the sum of the arguments. - + - Occurs on NotificationResponses from the PostgreSQL backend. + Subtracts one from another. + The to subtract the other from. + The to subtract from the other. + An whose values are the difference of the arguments - + - Called to provide client certificates for SSL handshake. + Returns true if two are exactly the same. + The first to compare. + The second to compare. + true if the two arguments are exactly the same, false otherwise. - + - Mono.Security.Protocol.Tls.CertificateSelectionCallback delegate. + Returns false if two are exactly the same. + The first to compare. + The second to compare. + false if the two arguments are exactly the same, true otherwise. - + - Mono.Security.Protocol.Tls.CertificateValidationCallback delegate. + Compares two instances to see if the first is less than the second + The first to compare. + The second to compare. + true if the first is less than second, false otherwise. - + - Mono.Security.Protocol.Tls.PrivateKeySelectionCallback delegate. + Compares two instances to see if the first is less than or equivalent to the second + The first to compare. + The second to compare. + true if the first is less than or equivalent to second, false otherwise. - + - Gets or sets the string used to connect to a PostgreSQL database. - Valid values are: -
    -
  • - Server: Address/Name of Postgresql Server; -
  • -
  • - Port: Port to connect to; -
  • -
  • - Protocol: Protocol version to use, instead of automatic; Integer 2 or 3; -
  • -
  • - Database: Database name. Defaults to user name if not specified; -
  • -
  • - User Id: User name; -
  • -
  • - Password: Password for clear text authentication; -
  • -
  • - SSL: True or False. Controls whether to attempt a secure connection. Default = False; -
  • -
  • - Pooling: True or False. Controls whether connection pooling is used. Default = True; -
  • -
  • - MinPoolSize: Min size of connection pool; -
  • -
  • - MaxPoolSize: Max size of connection pool; -
  • -
  • - Timeout: Time to wait for connection open in seconds. Default is 15. -
  • -
  • - CommandTimeout: Time to wait for command to finish execution before throw an exception. In seconds. Default is 20. -
  • -
  • - Sslmode: Mode for ssl connection control. Can be Prefer, Require, Allow or Disable. Default is Disable. Check user manual for explanation of values. -
  • -
  • - ConnectionLifeTime: Time to wait before closing unused connections in the pool in seconds. Default is 15. -
  • -
  • - SyncNotification: Specifies if Npgsql should use synchronous notifications. -
  • -
  • - SearchPath: Changes search path to specified and public schemas. -
  • -
+ Compares two instances to see if the first is greater than the second
- The connection string that includes the server name, - the database name, and other parameters needed to establish - the initial connection. The default value is an empty string. - + The first to compare. + The second to compare. + true if the first is greater than second, false otherwise.
- + - Backend server host name. + Compares two instances to see if the first is greater than or equivalent the second + The first to compare. + The second to compare. + true if the first is greater than or equivalent to the second, false otherwise. - + - Backend server port. + Returns the instance. + An . + The argument. - + - If true, the connection will attempt to use SSL. + Negates an instance. + An . + The negation of the argument. - + - Gets the time to wait while trying to establish a connection - before terminating the attempt and generating an error. + The total number of ticks(100ns units) contained. This is the resolution of the + type. This ignores the number of days and + months held. If you want them included use first. + The resolution of the PostgreSQL + interval type is by default 1µs = 1,000 ns. It may be smaller as follows: + + + interval(0) + resolution of 1s (1 second) + + + interval(1) + resolution of 100ms = 0.1s (100 milliseconds) + + + interval(2) + resolution of 10ms = 0.01s (10 milliseconds) + + + interval(3) + resolution of 1ms = 0.001s (1 millisecond) + + + interval(4) + resolution of 100µs = 0.0001s (100 microseconds) + + + interval(5) + resolution of 10µs = 0.00001s (10 microseconds) + + + interval(6) or interval + resolution of 1µs = 0.000001s (1 microsecond) + + + As such, if the 100-nanosecond resolution is significant to an application, a PostgreSQL interval will + not suffice for those purposes. + In more frequent cases though, the resolution of the interval suffices. + will always suffice to handle the resolution of any interval value, and upon + writing to the database, will be rounded to the resolution used. + + The number of ticks in the instance. - The time (in seconds) to wait for a connection to open. The default value is 15 seconds. - + - Gets the time to wait while trying to execute a command - before terminating the attempt and generating an error. + Gets the number of whole microseconds held in the instance. + An in the range [-999999, 999999]. - The time (in seconds) to wait for a command to complete. The default value is 20 seconds. - + - Gets the time to wait before closing unused connections in the pool if the count - of all connections exeeds MinPoolSize. + Gets the number of whole milliseconds held in the instance. + An in the range [-999, 999]. - - If connection pool contains unused connections for ConnectionLifeTime seconds, - the half of them will be closed. If there will be unused connections in a second - later then again the half of them will be closed and so on. - This strategy provide smooth change of connection count in the pool. - - The time (in seconds) to wait. The default value is 15 seconds. - + - Gets the name of the current database or the database to be used after a connection is opened. - - The name of the current database or the name of the database to be - used after a connection is opened. The default value is the empty string. + Gets the number of whole seconds held in the instance. + An in the range [-59, 59]. +
- + - Whether datareaders are loaded in their entirety (for compatibility with earlier code). + Gets the number of whole minutes held in the instance. + An in the range [-59, 59]. - + - Gets the database server name. + Gets the number of whole hours held in the instance. + Note that this can be less than -23 or greater than 23 unless + has been used to produce this instance. - + - Gets flag indicating if we are using Synchronous notification or not. - The default value is false. + Gets the number of days held in the instance. + Note that this does not pay attention to a time component with -24 or less hours or + 24 or more hours, unless has been called to produce this instance. - + - Gets the current state of the connection. + Gets the number of months held in the instance. + Note that this does not pay attention to a day component with -30 or less days or + 30 or more days, unless has been called to produce this instance. - A bitwise combination of the ConnectionState values. The default is Closed. - + - Gets whether the current state of the connection is Open or Closed + Returns a representing the time component of the instance. + Note that this may have a value beyond the range ±23:59:59.9999999 unless + has been called to produce this instance. - ConnectionState.Open or ConnectionState.Closed - + - Version of the PostgreSQL backend. - This can only be called when there is an active connection. + The total number of ticks (100ns units) in the instance, assuming 24 hours in each day and + 30 days in a month. - + - Protocol version in use. - This can only be called when there is an active connection. + The total number of microseconds in the instance, assuming 24 hours in each day and + 30 days in a month. - + - Process id of backend server. - This can only be called when there is an active connection. + The total number of milliseconds in the instance, assuming 24 hours in each day and + 30 days in a month. - + - The connector object connected to the backend. + The total number of seconds in the instance, assuming 24 hours in each day and + 30 days in a month. - + - Gets the NpgsqlConnectionStringBuilder containing the parsed connection string values. + The total number of minutes in the instance, assuming 24 hours in each day and + 30 days in a month. - + - User name. + The total number of hours in the instance, assuming 24 hours in each day and + 30 days in a month. - + - Password. + The total number of days in the instance, assuming 24 hours in each day and + 30 days in a month. - + - Determine if connection pooling will be used for this connection. + The total number of months in the instance, assuming 24 hours in each day and + 30 days in a month. - - - This class represents the CancelRequest message sent to PostgreSQL - server. - - + + + Normalise this time; if it is 24:00:00, convert it to 00:00:00 + + This time, normalised - - - - - - - - - - - - - - - - A time period expressed in 100ns units. + + + The total number of ticks(100ns units) contained. This is the resolution of the + type. + The resolution of the PostgreSQL + interval type is by default 1µs = 1,000 ns. It may be smaller as follows: + + + time(0) + resolution of 1s (1 second) + + + time(1) + resolution of 100ms = 0.1s (100 milliseconds) + + + time(2) + resolution of 10ms = 0.01s (10 milliseconds) + + + time(3) + resolution of 1ms = 0.001s (1 millisecond) + + + time(4) + resolution of 100µs = 0.0001s (100 microseconds) + + + time(5) + resolution of 10µs = 0.00001s (10 microseconds) + + + time(6) or interval + resolution of 1µs = 0.000001s (1 microsecond) + + + As such, if the 100-nanosecond resolution is significant to an application, a PostgreSQL time will + not suffice for those purposes. + In more frequent cases though, the resolution of time suffices. + will always suffice to handle the resolution of any time value, and upon + writing to the database, will be rounded to the resolution used. + + The number of ticks in the instance. + - - A time period expressed in a + + + Gets the number of whole microseconds held in the instance. + An integer in the range [0, 999999]. + - - Number of 100ns units. + + + Gets the number of whole milliseconds held in the instance. + An integer in the range [0, 999]. + - - Number of seconds. + + + Gets the number of whole seconds held in the instance. + An interger in the range [0, 59]. + - - Number of milliseconds. + + + Gets the number of whole minutes held in the instance. + An integer in the range [0, 59]. + - - Number of milliseconds. + + + Gets the number of whole hours held in the instance. + Note that the time 24:00:00 can be stored for roundtrip compatibility. Any calculations on such a + value will normalised it to 00:00:00. + - - Number of milliseconds. + + + Normalise this time; if it is 24:00:00, convert it to 00:00:00 + + This time, normalised - - A d with the given number of ticks. + + + Compares this with another . As per postgres' rules, + first the times are compared as if they were both in the same timezone. If they are equal then + then timezones are compared (+01:00 being "smaller" than -01:00). + + the to compare with. + An integer which is 0 if they are equal, < 0 if this is the smaller and > 0 if this is the larger. - - A d with the given number of microseconds. + + + Gets the number of whole microseconds held in the instance. + An integer in the range [0, 999999]. + - - A d with the given number of milliseconds. + + + Gets the number of whole milliseconds held in the instance. + An integer in the range [0, 999]. + - - A d with the given number of seconds. + + + Gets the number of whole seconds held in the instance. + An interger in the range [0, 59]. + - - A d with the given number of minutes. + + + Gets the number of whole minutes held in the instance. + An integer in the range [0, 59]. + - - A d with the given number of hours. + + + Gets the number of whole hours held in the instance. + Note that the time 24:00:00 can be stored for roundtrip compatibility. Any calculations on such a + value will normalised it to 00:00:00. + - - A d with the given number of days. + + + Summary description for LargeObjectManager. + - - A d with the given number of months. + + + Provide event handlers to convert all native supported basic data types from their backend + text representation to a .NET object. + - - An whose values are the sums of the two instances. + + + Binary data. + - - An whose values are the differences of the two instances. + + + Convert a postgresql boolean to a System.Boolean. + - - An whose value is the negated value of this instance. + + + Convert a postgresql bit to a System.Boolean. + - - An whose value is the absolute value of this instance. + + + Convert a postgresql datetime to a System.DateTime. + - - - An based on this one, but with any days converted to multiples of ±24hours. + + + Convert a postgresql date to a System.DateTime. + - - - An based on this one, but with any months converted to multiples of ±30days. + + + Convert a postgresql time to a System.DateTime. + - - - An based on this one, but with any months converted to multiples of ±30days and then any days converted to multiples of ±24hours; + + + Convert a postgresql money to a System.Decimal. + - - - An eqivalent, canonical, . + + + Provide event handlers to convert the basic native supported data types from + native form to backend representation. + - - An equivalent . + + + Binary data. + - - - - - An signed integer. + + + Convert to a postgresql boolean. + - - - The argument is not an . + + + Convert to a postgresql bit. + - - The string was not in a format that could be parsed to produce an . + + + Convert to a postgresql timestamp. + - - true if the parsing succeeded, false otherwise. + + + Convert to a postgresql date. + - - The representation. + + + Convert to a postgresql time. + - - An whose values are the sum of the arguments. + + + Convert to a postgres money. + - - An whose values are the difference of the arguments + + + Convert to a postgres double with maximum precision. + - - true if the two arguments are exactly the same, false otherwise. + + + Provide event handlers to convert extended native supported data types from their backend + text representation to a .NET object. + - - false if the two arguments are exactly the same, true otherwise. + + + Convert a postgresql point to a System.NpgsqlPoint. + - - true if the first is less than second, false otherwise. + + + Convert a postgresql point to a System.RectangleF. + - - true if the first is less than or equivalent to second, false otherwise. + + + LDeg. + - - true if the first is greater than second, false otherwise. + + + Path. + - - true if the first is greater than or equivalent to the second, false otherwise. + + + Polygon. + - - The argument. + + + Circle. + - - The negation of the argument. + + + Inet. + - - - - - - - - - - - - - - - - - - - This time, normalised + + + MAC Address. + - - - - - - - - This time, normalised + + + interval + - - An integer which is 0 if they are equal, < 0 if this is the smaller and > 0 if this is the larger. + + + Provide event handlers to convert extended native supported data types from + native form to backend representation. + - - - - - - + - A class to handle everything associated with SSPI authentication + Point. - + - Simplified SecBufferDesc struct with only one SecBuffer + Box. - - - This class represents the Parse message sent to PostgreSQL - server. - - + + + LSeg. + - + - EventArgs class to send Notice parameters, which are just NpgsqlError's in a lighter context. + Open path. - + - Notice information. + Polygon. - + - This class represents the ErrorResponse and NoticeResponse - message sent from PostgreSQL server. + Convert to a postgres MAC Address. - + - Return a string representation of this error object. + Circle. - + + + Convert to a postgres inet. + + + + + Convert to a postgres interval + + + + + Represents a PostgreSQL Point type + + + + + Represents a PostgreSQL Line Segment type. + + + + + Represents a PostgreSQL Path type. + + + + + Represents a PostgreSQL Polygon type. + + + + + Represents a PostgreSQL Circle type. + + + + + Represents a PostgreSQL inet type. + + + + + Represents a PostgreSQL MacAddress type. + + + + + + + The macAddr parameter must contain a string that can only consist of numbers + and upper-case letters as hexadecimal digits. (See PhysicalAddress.Parse method on MSDN) + + + + This class contains helper methods for type conversion between + the .Net type system and postgresql. + + + + + A cache of basic datatype mappings keyed by server version. This way we don't + have to load the basic type mappings for every connection. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given NpgsqlDbType. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given NpgsqlDbType. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given DbType. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given System.Type. + + + + + This method is responsible to convert the string received from the backend + to the corresponding NpgsqlType. + The given TypeInfo is called upon to do the conversion. + If no TypeInfo object is provided, no conversion is performed. + + + + + Create the one and only native to backend type map. + This map is used when formatting native data + types to backend representations. + + + + + This method creates (or retrieves from cache) a mapping between type and OID + of all natively supported postgresql data types. + This is needed as from one version to another, this mapping can be changed and + so we avoid hardcoding them. + + NpgsqlTypeMapping containing all known data types. The mapping must be + cloned before it is modified because it is cached; changes made by one connection may + effect another connection. + + + + Attempt to map types by issuing a query against pg_type. + This function takes a list of NpgsqlTypeInfo and attempts to resolve the OID field + of each by querying pg_type. If the mapping is found, the type info object is + updated (OID) and added to the provided NpgsqlTypeMapping object. + + NpgsqlConnector to send query through. + Mapping object to add types too. + List of types that need to have OID's mapped. + + + + Delegate called to convert the given backend data to its native representation. + + + + + Delegate called to convert the given native data to its backand representation. + + + + + Represents a backend data type. + This class can be called upon to convert a backend field representation to a native object. + + + + + Construct a new NpgsqlTypeInfo with the given attributes and conversion handlers. + + Type OID provided by the backend server. + Type name provided by the backend server. + NpgsqlDbType + System type to convert fields of this type to. + Data conversion handler. + + + + Perform a data conversion from a backend representation to + a native object. + + Data sent from the backend. + Type modifier field sent from the backend. + + + + Type OID provided by the backend server. + + + + + Type name provided by the backend server. + + + + + NpgsqlDbType. + + + + + NpgsqlDbType. + + + + + Provider type to convert fields of this type to. + + + + + System type to convert fields of this type to. + + + + + Represents a backend data type. + This class can be called upon to convert a native object to its backend field representation, + + + + + Returns an NpgsqlNativeTypeInfo for an array where the elements are of the type + described by the NpgsqlNativeTypeInfo supplied. + + + + + Construct a new NpgsqlTypeInfo with the given attributes and conversion handlers. + + Type name provided by the backend server. + NpgsqlDbType + Data conversion handler. + + + + Perform a data conversion from a native object to + a backend representation. + DBNull and null values are handled differently depending if a plain query is used + When + + Native .NET object to be converted. + Flag indicating if the conversion has to be done for + plain queries or extended queries + + + + Type name provided by the backend server. + + + + + NpgsqlDbType. + + + + + DbType. + + + + + Apply quoting. + + + + + Use parameter size information. + + + + + Provide mapping between type OID, type name, and a NpgsqlBackendTypeInfo object that represents it. + + + + + Construct an empty mapping. + + + + + Copy constuctor. + + + + + Add the given NpgsqlBackendTypeInfo to this mapping. + + + + + Add a new NpgsqlBackendTypeInfo with the given attributes and conversion handlers to this mapping. + + Type OID provided by the backend server. + Type name provided by the backend server. + NpgsqlDbType + System type to convert fields of this type to. + Data conversion handler. + + + + Make a shallow copy of this type mapping. + + + + + Determine if a NpgsqlBackendTypeInfo with the given backend type OID exists in this mapping. + + + + + Determine if a NpgsqlBackendTypeInfo with the given backend type name exists in this mapping. + + + + + Get the number of type infos held. + + + + + Retrieve the NpgsqlBackendTypeInfo with the given backend type OID, or null if none found. + + + + + Retrieve the NpgsqlBackendTypeInfo with the given backend type name, or null if none found. + + + + + Provide mapping between type Type, NpgsqlDbType and a NpgsqlNativeTypeInfo object that represents it. + + + + + Add the given NpgsqlNativeTypeInfo to this mapping. + + + + + Add a new NpgsqlNativeTypeInfo with the given attributes and conversion handlers to this mapping. + + Type name provided by the backend server. + NpgsqlDbType + Data conversion handler. + + + + Retrieve the NpgsqlNativeTypeInfo with the given NpgsqlDbType. + + + - Severity code. All versions. + Retrieve the NpgsqlNativeTypeInfo with the given DbType. - + - Error code. PostgreSQL 7.4 and up. + Retrieve the NpgsqlNativeTypeInfo with the given Type. - + - Terse error message. All versions. + Determine if a NpgsqlNativeTypeInfo with the given backend type name exists in this mapping. - + - Detailed error message. PostgreSQL 7.4 and up. + Determine if a NpgsqlNativeTypeInfo with the given NpgsqlDbType exists in this mapping. - + - Suggestion to help resolve the error. PostgreSQL 7.4 and up. + Determine if a NpgsqlNativeTypeInfo with the given Type name exists in this mapping. - + - Position (one based) within the query string where the error was encounterd. PostgreSQL 7.4 and up. + Get the number of type infos held. - + - Position (one based) within the query string where the error was encounterd. This position refers to an internal command executed for example inside a PL/pgSQL function. PostgreSQL 7.4 and up. + Given a join expression and a projection, fetch all columns in the projection + that reference columns in the join. - + - Internal query string where the error was encounterd. This position refers to an internal command executed for example inside a PL/pgSQL function. PostgreSQL 7.4 and up. + Given an InputExpression append all from names (including nested joins) to the list. - + - Trace back information. PostgreSQL 7.4 and up. + Get new ColumnExpression that will be used in projection that had it's existing columns moved. + These should be simple references to the inner column - + - Source file (in backend) reporting the error. PostgreSQL 7.4 and up. + Every property accessed in the list of columns must be adjusted for a new scope - + - Source file line number (in backend) reporting the error. PostgreSQL 7.4 and up. + Set Cache Size. The default value is 20. - + - Source routine (in backend) reporting the error. PostgreSQL 7.4 and up. + Lookup cached entity. null will returned if not match. + For both get{} and set{} apply LRU rule. + key + - + - String containing the sql sent which produced this error. + Called from constructor of derived class. - + - Backend protocol version in use. + Finalizer for HashAlgorithm - + - Represents an ongoing COPY TO STDOUT operation. - Provides methods to read data from server or end the operation. + Computes the entire hash of all the bytes in the byte array. - - This class represents the base class for the state pattern design pattern - implementation. - - - - + - This method is used by the states to change the state of the context. - + When overridden in a derived class, drives the hashing function. + + + + - + - This method is responsible to handle all protocol messages sent from the backend. - It holds all the logic to do it. - To exchange data, it uses a Mediator object from which it reads/writes information - to handle backend requests. - - + When overridden in a derived class, this pads and hashes whatever data might be left in the buffers and then returns the hash created. + - + - This method is responsible to handle all protocol messages sent from the backend. - It holds all the logic to do it. - To exchange data, it uses a Mediator object from which it reads/writes information - to handle backend requests. - - + When overridden in a derived class, initializes the object to prepare for hashing. + - + - Called from NpgsqlState.ProcessBackendResponses upon CopyOutResponse. - If CopyStream is already set, it is used to write data received from server, after which the copy ends. - Otherwise CopyStream is set to a readable NpgsqlCopyOutStream that receives data from server. + Used for stream chaining. Computes hash as data passes through it. + The buffer from which to grab the data to be copied. + The offset into the input buffer to start reading at. + The number of bytes to be copied. + The buffer to write the copied data to. + At what point in the outputBuffer to write the data at. - + - Called from NpgsqlOutStream.Read to read copy data from server. + Used for stream chaining. Computes hash as data passes through it. Finishes off the hash. + The buffer from which to grab the data to be copied. + The offset into the input buffer to start reading at. + The number of bytes to be copied. - + - Copy format information returned from server. + Get whether or not the hash can transform multiple blocks at a time. + Note: MUST be overriden if descendant can transform multiple block + on a single call! - + - Handles serialisation of .NET array or IEnumeration to pg format. - Arrays of arrays, enumerations of enumerations, arrays of enumerations etc. - are treated as multi-dimensional arrays (in much the same manner as an array of arrays - is used to emulate multi-dimensional arrays in languages that lack native support for them). - If such an enumeration of enumerations is "jagged" (as opposed to rectangular, cuboid, - hypercuboid, hyperhypercuboid, etc) then this class will "correctly" serialise it, but pg - will raise an error as it doesn't allow jagged arrays. + Gets the previously computed hash. - + - Create an ArrayNativeToBackendTypeConverter with the element converter passed + Returns the size in bits of the hash. - The that would be used to serialise the element type. - + - Serialise the enumeration or array. + Must be overriden if not 1 - + - Handles parsing of pg arrays into .NET arrays. + Must be overriden if not 1 - + - Takes a string representation of a pg 1-dimensional array - (or a 1-dimensional row within an n-dimensional array) - and allows enumeration of the string represenations of each items. + Common base class for all derived MD5 implementations. - + - Takes a string representation of a pg n-dimensional array - and allows enumeration of the string represenations of the next - lower level of rows (which in turn can be taken as (n-1)-dimensional arrays. + Called from constructor of derived class. - + - Takes an ArrayList which may be an ArrayList of ArrayLists, an ArrayList of ArrayLists of ArrayLists - and so on and enumerates the items that aren't ArrayLists (the leaf nodes if we think of the ArrayList - passed as a tree). Simply uses the ArrayLists' own IEnumerators to get that of the next, - pushing them onto a stack until we hit something that isn't an ArrayList. - ArrayList to enumerate - IEnumerable + Creates the default derived class. - + - Create a new ArrayBackendToNativeTypeConverter + C# implementation of the MD5 cryptographic hash function. - for the element type. - + - Creates an array from pg representation. + Creates a new MD5CryptoServiceProvider. - + - Creates an array list from pg represenation of an array. - Multidimensional arrays are treated as ArrayLists of ArrayLists + Drives the hashing function. + Byte array containing the data to hash. + Where in the input buffer to start. + Size in bytes of the data in the buffer to hash. - + - Creates an n-dimensional array from an ArrayList of ArrayLists or - a 1-dimensional array from something else. + This finalizes the hash. Takes the data from the chaining variables and returns it. - to convert - produced. - + - Takes an array of ints and treats them like the limits of a set of counters. - Retains a matching set of ints that is set to all zeros on the first ++ - On a ++ it increments the "right-most" int. If that int reaches it's - limit it is set to zero and the one before it is incremented, and so on. - - Making this a more general purpose class is pretty straight-forward, but we'll just put what we need here. + Resets the class after use. Called automatically after hashing is done. - - - This class represents the ParameterStatus message sent from PostgreSQL - server. - - - - + - This class is responsible for serving as bridge between the backend - protocol handling and the core classes. It is used as the mediator for - exchanging data generated/sent from/to backend. - - + This is the meat of the hash function. It is what processes each block one at a time. + + Byte array to process data from. + Where in the byte array to start processing. - + - This class is responsible to create database commands for automatic insert, update and delete operations. + Pads and then processes the final block. + Buffer to grab data from. + Position in buffer in bytes to get data from. + How much data in bytes in the buffer to use. - + - - This method is reponsible to derive the command parameter list with values obtained from function definition. - It clears the Parameters collection of command. Also, if there is any parameter type which is not supported by Npgsql, an InvalidOperationException will be thrown. - Parameters name will be parameter1, parameter2, ... - For while, only parameter name and NpgsqlDbType are obtained. + Implements for version 3 of the protocol. - NpgsqlCommand whose function parameters will be obtained. - + - Represents a completed response message. + Reads a row, field by field, allowing a DataRow to be built appropriately. - Marker interface which identifies a class which may take possession of a stream for the duration of @@ -1501,2578 +1962,2743 @@ we can't make that inherit from this interface, alas. - + + - The exception that is thrown when the PostgreSQL backend reports errors. + Reads part of a field, as needed (for + and - + - Construct a backend error exception based on a list of one or more - backend errors. The basic Exception.Message will be built from the - first (usually the only) error in the list. + Adds further functionality to stream that is dependant upon the type of data read. - + - Format a .NET style exception string. - Include all errors in the list, including any hints. + Completes the implementation of Streamer for char data. + + + + + Completes the implementation of Streamer for byte data. - + - Append a line to the given Stream, first checking for zero-length. + Implements for version 2 of the protocol. - + - Provide access to the entire list of errors provided by the PostgreSQL backend. + Encapsulates the null mapping bytes sent at the start of a version 2 + datarow message, and the process of identifying the nullity of the data + at a particular index - + - Severity code. All versions. + This class represents a BackEndKeyData message received + from PostgreSQL - + + + This class represents the Bind message sent to PostgreSQL + server. + + + + - Error code. PostgreSQL 7.4 and up. + For classes representing messages sent from the client to the server. - + + + This class represents the CancelRequest message sent to PostgreSQL + server. + + + + + This class represents the base class for the state pattern design pattern + implementation. + + + + - Basic error message. All versions. - + This method is used by the states to change the state of the context. + - + - Detailed error message. PostgreSQL 7.4 and up. - + This method is responsible to handle all protocol messages sent from the backend. + It holds all the logic to do it. + To exchange data, it uses a Mediator object from which it reads/writes information + to handle backend requests. + + - + - Suggestion to help resolve the error. PostgreSQL 7.4 and up. - + This method is responsible to handle all protocol messages sent from the backend. + It holds all the logic to do it. + To exchange data, it uses a Mediator object from which it reads/writes information + to handle backend requests. + + - + - Position (one based) within the query string where the error was encounterd. PostgreSQL 7.4 and up. + Checks for context socket availability. + Socket.Poll supports integer as microseconds parameter. + This limits the usable command timeout value + to 2,147 seconds: (2,147 x 1,000,000 less than max_int). + In order to bypass this limit, the availability of + the socket is checked in 2,147 seconds cycles + true, if for context socket availability was checked, false otherwise. + Context. + Select mode. - + - Trace back information. PostgreSQL 7.4 and up. + Resolve a host name or IP address. + This is needed because if you call Dns.Resolve() with an IP address, it will attempt + to resolve it as a host name, when it should just convert it to an IP address. + - + - Source file (in backend) reporting the error. PostgreSQL 7.4 and up. + Represents a SQL statement or function (stored procedure) to execute + against a PostgreSQL database. This class cannot be inherited. - + - Source file line number (in backend) reporting the error. PostgreSQL 7.4 and up. + Initializes a new instance of the NpgsqlCommand class. - + - Source routine (in backend) reporting the error. PostgreSQL 7.4 and up. + Initializes a new instance of the NpgsqlCommand class with the text of the query. + The text of the query. - + - String containing the sql sent which produced this error. + Initializes a new instance of the NpgsqlCommand class with the text of the query and a NpgsqlConnection. + The text of the query. + A NpgsqlConnection that represents the connection to a PostgreSQL server. - + - Returns the entire list of errors provided by the PostgreSQL backend. + Initializes a new instance of the NpgsqlCommand class with the text of the query, a NpgsqlConnection, and the NpgsqlTransaction. + The text of the query. + A NpgsqlConnection that represents the connection to a PostgreSQL server. + The NpgsqlTransaction in which the NpgsqlCommand executes. - + - The level of verbosity of the NpgsqlEventLog + Used to execute internal commands. - + - Don't log at all + Attempts to cancel the execution of a NpgsqlCommand. + This Method isn't implemented yet. - + - Only log the most common issues + Create a new command based on this one. + A new NpgsqlCommand object. - + - Log everything + Create a new command based on this one. + A new NpgsqlCommand object. - + - This class handles all the Npgsql event and debug logging + Creates a new instance of an DbParameter object. + An DbParameter object. - + - Writes a string to the Npgsql event log if msglevel is bigger then NpgsqlEventLog.Level + Creates a new instance of a NpgsqlParameter object. - - This method is obsolete and should no longer be used. - It is likely to be removed in future versions of Npgsql - - The message to write to the event log - The minimum LogLevel for which this message should be logged. + A NpgsqlParameter object. - + - Writes a string to the Npgsql event log if msglevel is bigger then NpgsqlEventLog.Level + Slightly optimised version of ExecuteNonQuery() for internal ues in cases where the number + of affected rows is of no interest. - The ResourceManager to get the localized resources - The name of the resource that should be fetched by the ResourceManager - The minimum LogLevel for which this message should be logged. - The additional parameters that shall be included into the log-message (must be compatible with the string in the resource): - + - Writes the default log-message for the action of calling the Get-part of an Indexer to the log file. + Executes a SQL statement against the connection and returns the number of rows affected. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Indexer - The parameter given to the Indexer + The number of rows affected if known; -1 otherwise. - + - Writes the default log-message for the action of calling the Set-part of an Indexer to the logfile. + Sends the CommandText to + the Connection and builds a + NpgsqlDataReader + using one of the CommandBehavior values. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Indexer - The parameter given to the Indexer - The value the Indexer is set to + One of the CommandBehavior values. + A NpgsqlDataReader object. - + - Writes the default log-message for the action of calling the Get-part of a Property to the logfile. + Sends the CommandText to + the Connection and builds a + NpgsqlDataReader. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Property - The name of the Property + A NpgsqlDataReader object. - + - Writes the default log-message for the action of calling the Set-part of a Property to the logfile. + Sends the CommandText to + the Connection and builds a + NpgsqlDataReader + using one of the CommandBehavior values. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Property - The name of the Property - The value the Property is set to + One of the CommandBehavior values. + A NpgsqlDataReader object. + Currently the CommandBehavior parameter is ignored. - + - Writes the default log-message for the action of calling a Method without Arguments to the logfile. + This method binds the parameters from parameters collection to the bind + message. + + + + + Executes the query, and returns the first column of the first row + in the result set returned by the query. Extra columns or rows are ignored. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Method - The name of the Method + The first column of the first row in the result set, + or a null reference if the result set is empty. - + - Writes the default log-message for the action of calling a Method with one Argument to the logfile. + Creates a prepared version of the command on a PostgreSQL server. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Method - The name of the Method - The value of the Argument of the Method - + - Writes the default log-message for the action of calling a Method with two Arguments to the logfile. + This method checks the connection state to see if the connection + is set or it is open. If one of this conditions is not met, throws + an InvalidOperationException - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Method - The name of the Method - The value of the first Argument of the Method - The value of the second Argument of the Method - + - Writes the default log-message for the action of calling a Method with three Arguments to the logfile. + This method substitutes the Parameters, if exist, in the command + to their actual values. + The parameter name format is :ParameterName. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Method - The name of the Method - The value of the first Argument of the Method - The value of the second Argument of the Method - The value of the third Argument of the Method + A version of CommandText with the Parameters inserted. - + - Writes the default log-message for the action of calling a Method with more than three Arguments to the logfile. + Gets or sets the SQL statement or function (stored procedure) to execute at the data source. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Method - The name of the Method - A Object-Array with zero or more Ojects that are Arguments of the Method. + The Transact-SQL statement or stored procedure to execute. The default is an empty string. - + - Sets/Returns the level of information to log to the logfile. - - The current LogLevel + Gets or sets the wait time before terminating the attempt + to execute a command and generating an error. + + The time (in seconds) to wait for the command to execute. + The default is 20 seconds. - + - Sets/Returns the filename to use for logging. - - The filename of the current Log file. + Gets or sets a value indicating how the + CommandText property is to be interpreted. + + One of the CommandType values. The default is CommandType.Text. - + - Sets/Returns whether Log messages should be echoed to the console - - true if Log messages are echoed to the console, otherwise false - - - - This class represents the Parse message sent to PostgreSQL - server. - - + Gets or sets the NpgsqlConnection + used by this instance of the NpgsqlCommand. + + The connection to a data source. The default value is a null reference. - + - Represents a PostgreSQL COPY FROM STDIN operation with a corresponding SQL statement - to execute against a PostgreSQL database - and an associated stream used to read data from (if provided by user) - or for writing it (when generated by driver). - Eg. new NpgsqlCopyIn("COPY mytable FROM STDIN", connection, streamToRead).Start(); + Gets the NpgsqlParameterCollection. + The parameters of the SQL statement or function (stored procedure). The default is an empty collection. - + - Creates NpgsqlCommand to run given query upon Start(). Data for the requested COPY IN operation can then be written to CopyData stream followed by a call to End() or Cancel(). + Gets or sets the NpgsqlTransaction + within which the NpgsqlCommand executes. + The NpgsqlTransaction. + The default value is a null reference. - + - Given command is run upon Start(). Data for the requested COPY IN operation can then be written to CopyData stream followed by a call to End() or Cancel(). + Gets or sets how command results are applied to the DataRow + when used by the Update + method of the DbDataAdapter. + One of the UpdateRowSource values. - + - Given command is executed upon Start() and all data from fromStream is passed to it as copy data. + Returns oid of inserted row. This is only updated when using executenonQuery and when command inserts just a single row. If table is created without oids, this will always be 0. - + - Returns true if this operation is currently active and field at given location is in binary format. + This class is responsible to create database commands for automatic insert, update and delete operations. - + - Command specified upon creation is executed as a non-query. - If CopyStream is set upon creation, it will be flushed to server as copy data, and operation will be finished immediately. - Otherwise the CopyStream member can be used for writing copy data to server and operation finished with a call to End() or Cancel(). + + This method is reponsible to derive the command parameter list with values obtained from function definition. + It clears the Parameters collection of command. Also, if there is any parameter type which is not supported by Npgsql, an InvalidOperationException will be thrown. + Parameters name will be parameter1, parameter2, ... + For while, only parameter name and NpgsqlDbType are obtained. + NpgsqlCommand whose function parameters will be obtained. - + - Called after writing all data to CopyStream to successfully complete this copy operation. + Represents the method that handles the Notice events. + A NpgsqlNoticeEventArgs that contains the event data. - + - Withdraws an already started copy operation. The operation will fail with given error message. - Will do nothing if current operation is not active. + Represents the method that handles the Notification events. + The source of the event. + A NpgsqlNotificationEventArgs that contains the event data. - + - Returns true if the connection is currently reserved for this operation. + This class represents a connection to a + PostgreSQL server. - + - The stream provided by user or generated upon Start(). - User may provide a stream to constructor; it is used to pass to server all data read from it. - Otherwise, call to Start() sets this to a writable NpgsqlCopyInStream that passes all data written to it to server. - In latter case this is only available while the copy operation is active and null otherwise. + Initializes a new instance of the + NpgsqlConnection class. - + - Returns true if this operation is currently active and in binary format. + Initializes a new instance of the + NpgsqlConnection class + and sets the ConnectionString. + The connection used to open the PostgreSQL database. - + - Returns number of fields expected on each input row if this operation is currently active, otherwise -1 + Begins a database transaction with the specified isolation level. + The isolation level under which the transaction should run. + An DbTransaction + object representing the new transaction. + + Currently the IsolationLevel ReadCommitted and Serializable are supported by the PostgreSQL backend. + There's no support for nested transactions. + - + - The Command used to execute this copy operation. + Begins a database transaction. + A NpgsqlTransaction + object representing the new transaction. + + Currently there's no support for nested transactions. + - + - Set before a COPY IN query to define size of internal buffer for reading from given CopyStream. + Begins a database transaction with the specified isolation level. + The isolation level under which the transaction should run. + A NpgsqlTransaction + object representing the new transaction. + + Currently the IsolationLevel ReadCommitted and Serializable are supported by the PostgreSQL backend. + There's no support for nested transactions. + - + - Represents information about COPY operation data transfer format as returned by server. + Opens a database connection with the property settings specified by the + ConnectionString. - + - Only created when a CopyInResponse or CopyOutResponse is received by NpgsqlState.ProcessBackendResponses() + This method changes the current database by disconnecting from the actual + database and connecting to the specified. + The name of the database to use in place of the current database. - + - Returns true if this operation is currently active and field at given location is in binary format. + Releases the connection to the database. If the connection is pooled, it will be + made available for re-use. If it is non-pooled, the actual connection will be shutdown. - + - Returns true if this operation is currently active and in binary format. + Creates and returns a DbCommand + object associated with the IDbConnection. + A DbCommand object. - + - Returns number of fields if this operation is currently active, otherwise -1 + Creates and returns a NpgsqlCommand + object associated with the NpgsqlConnection. + A NpgsqlCommand object. - - - + + + Releases all resources used by the + NpgsqlConnection. + + true when called from Dispose(); + false when being called from the finalizer. - + - Provide event handlers to convert all native supported basic data types from their backend - text representation to a .NET object. + Create a new connection based on this one. + A new NpgsqlConnection object. - + - Binary data. + Create a new connection based on this one. + A new NpgsqlConnection object. - + - Convert a postgresql boolean to a System.Boolean. + Default SSL CertificateSelectionCallback implementation. - + - Convert a postgresql bit to a System.Boolean. + Default SSL CertificateValidationCallback implementation. - + - Convert a postgresql datetime to a System.DateTime. + Default SSL PrivateKeySelectionCallback implementation. - + - Convert a postgresql date to a System.DateTime. + Default SSL ProvideClientCertificatesCallback implementation. - + - Convert a postgresql time to a System.DateTime. + Write each key/value pair in the connection string to the log. - + - Convert a postgresql money to a System.Decimal. + Returns the supported collections - + - Provide event handlers to convert the basic native supported data types from - native form to backend representation. + Returns the schema collection specified by the collection name. + The collection name. + The collection specified. - + - Binary data. + Returns the schema collection specified by the collection name filtered by the restrictions. + The collection name. + + The restriction values to filter the results. A description of the restrictions is contained + in the Restrictions collection. + + The collection specified. - + - Convert to a postgresql boolean. + Occurs on NoticeResponses from the PostgreSQL backend. - + - Convert to a postgresql bit. + Occurs on NotificationResponses from the PostgreSQL backend. - + - Convert to a postgresql timestamp. + Called to provide client certificates for SSL handshake. - + - Convert to a postgresql date. + Mono.Security.Protocol.Tls.CertificateSelectionCallback delegate. - + - Convert to a postgresql time. + Mono.Security.Protocol.Tls.CertificateValidationCallback delegate. - + - Convert to a postgres money. + Mono.Security.Protocol.Tls.PrivateKeySelectionCallback delegate. - + - Provide event handlers to convert extended native supported data types from their backend - text representation to a .NET object. + Gets or sets the string used to connect to a PostgreSQL database. + Valid values are: +
    +
  • + Server: Address/Name of Postgresql Server; +
  • +
  • + Port: Port to connect to; +
  • +
  • + Protocol: Protocol version to use, instead of automatic; Integer 2 or 3; +
  • +
  • + Database: Database name. Defaults to user name if not specified; +
  • +
  • + User Id: User name; +
  • +
  • + Password: Password for clear text authentication; +
  • +
  • + SSL: True or False. Controls whether to attempt a secure connection. Default = False; +
  • +
  • + Pooling: True or False. Controls whether connection pooling is used. Default = True; +
  • +
  • + MinPoolSize: Min size of connection pool; +
  • +
  • + MaxPoolSize: Max size of connection pool; +
  • +
  • + Timeout: Time to wait for connection open in seconds. Default is 15. +
  • +
  • + CommandTimeout: Time to wait for command to finish execution before throw an exception. In seconds. Default is 20. +
  • +
  • + Sslmode: Mode for ssl connection control. Can be Prefer, Require, Allow or Disable. Default is Disable. Check user manual for explanation of values. +
  • +
  • + ConnectionLifeTime: Time to wait before closing unused connections in the pool in seconds. Default is 15. +
  • +
  • + SyncNotification: Specifies if Npgsql should use synchronous notifications. +
  • +
  • + SearchPath: Changes search path to specified and public schemas. +
  • +
+ The connection string that includes the server name, + the database name, and other parameters needed to establish + the initial connection. The default value is an empty string. +
- + - Convert a postgresql point to a System.NpgsqlPoint. + Backend server host name. - + - Convert a postgresql point to a System.RectangleF. + Backend server port. - + - LDeg. + If true, the connection will attempt to use SSL. - + - Path. + Gets the time to wait while trying to establish a connection + before terminating the attempt and generating an error. + The time (in seconds) to wait for a connection to open. The default value is 15 seconds. - + - Polygon. + Gets the time to wait while trying to execute a command + before terminating the attempt and generating an error. + The time (in seconds) to wait for a command to complete. The default value is 20 seconds. - + - Circle. + Gets the time to wait before closing unused connections in the pool if the count + of all connections exeeds MinPoolSize. + + If connection pool contains unused connections for ConnectionLifeTime seconds, + the half of them will be closed. If there will be unused connections in a second + later then again the half of them will be closed and so on. + This strategy provide smooth change of connection count in the pool. + + The time (in seconds) to wait. The default value is 15 seconds. - + - Inet. - + Gets the name of the current database or the database to be used after a connection is opened. + + The name of the current database or the name of the database to be + used after a connection is opened. The default value is the empty string. - + - interval + Whether datareaders are loaded in their entirety (for compatibility with earlier code). - + - Provide event handlers to convert extended native supported data types from - native form to backend representation. + Gets the database server name. - + - Point. + Gets flag indicating if we are using Synchronous notification or not. + The default value is false. - + - Box. + Gets the current state of the connection. + A bitwise combination of the ConnectionState values. The default is Closed. - + - LSeg. + Gets whether the current state of the connection is Open or Closed + ConnectionState.Open or ConnectionState.Closed - + - Open path. + Version of the PostgreSQL backend. + This can only be called when there is an active connection. - + - Polygon. + Protocol version in use. + This can only be called when there is an active connection. - + - Circle. + Process id of backend server. + This can only be called when there is an active connection. - + - Convert to a postgres inet. + The connector object connected to the backend. - + - Convert to a postgres interval + Gets the NpgsqlConnectionStringBuilder containing the parsed connection string values. - + - EventArgs class to send Notification parameters. + User name. - + - Process ID of the PostgreSQL backend that sent this notification. + Password. - + - Condition that triggered that notification. + Determine if connection pooling will be used for this connection. - + - Additional Information From Notifiying Process (for future use, currently postgres always sets this to an empty string) + Return an exact copy of this NpgsqlConnectionString. - + - Resolve a host name or IP address. - This is needed because if you call Dns.Resolve() with an IP address, it will attempt - to resolve it as a host name, when it should just convert it to an IP address. + This function will set value for known key, both private member and base[key]. - - - - - This class represents a RowDescription message sent from - the PostgreSQL. - - + + - + - This struct represents the internal data of the RowDescription message. + The function will modify private member only, not base[key]. + + - - - This class represents the Parse message sent to PostgreSQL - server. - - - - + - A factory to create instances of various Npgsql objects. + Clear the member and assign them to the default value. - + - Creates an NpgsqlCommand object. + Compatibilty version. When possible, behaviour caused by breaking changes will be preserved + if this version is less than that where the breaking change was introduced. - - - This class represents the Parse message sent to PostgreSQL - server. - - - - + - Represents the method that handles the RowUpdated events. + Case insensative accessor for indivual connection string values. - The source of the event. - A NpgsqlRowUpdatedEventArgs that contains the event data. - + - Represents the method that handles the RowUpdating events. + Represents the method that allows the application to provide a certificate collection to be used for SSL clien authentication - The source of the event. - A NpgsqlRowUpdatingEventArgs that contains the event data. + A X509CertificateCollection to be filled with one or more client certificates. - + - This class represents an adapter from many commands: select, update, insert and delete to fill Datasets. + !!! Helper class, for compilation only. + Connector implements the logic for the Connection Objects to + access the physical connection to the database, and isolate + the application developer from connection pooling internals. - + - Stream for reading data from a table or select on a PostgreSQL version 7.4 or newer database during an active COPY TO STDOUT operation. - Passes data exactly as provided by the server. + Constructor. + Controls whether the connector can be shared. - + - Created only by NpgsqlCopyOutState.StartCopy() + This method checks if the connector is still ok. + We try to send a simple query text, select 1 as ConnectionTest; - + - Discards copy data as long as server pushes it. Returns after operation is finished. - Does nothing if this stream is not the active copy operation reader. + This method is responsible for releasing all resources associated with this Connector. - + - Not writable. + This method is responsible to release all portals used by this Connector. - + - Not flushable. + Default SSL CertificateSelectionCallback implementation. - + - Copies data read from server to given byte buffer. - Since server returns data row by row, length will differ each time, but it is only zero once the operation ends. - Can be mixed with calls to the more efficient NpgsqlCopyOutStream.Read() : byte[] though that would not make much sense. + Default SSL CertificateValidationCallback implementation. - + - Not seekable + Default SSL PrivateKeySelectionCallback implementation. - + - Not supported + Default SSL ProvideClientCertificatesCallback implementation. - + - Returns a whole row of data from server without extra work. - If standard Stream.Read(...) has been called before, it's internal buffers remains are returned. + This method is required to set all the version dependent features flags. + SupportsPrepare means the server can use prepared query plans (7.3+) - + - True while this stream can be used to read copy data from server + Opens the physical connection to the server. + Usually called by the RequestConnector + Method of the connection pool manager. - + - True + Closes the physical connection to the server. - + - False + Returns next portal index. - + - False + Returns next plan index. - + - Number of bytes read so far + Occurs on NoticeResponses from the PostgreSQL backend. - + - Number of bytes read so far; can not be set. + Occurs on NotificationResponses from the PostgreSQL backend. - - - This class represents the Bind message sent to PostgreSQL - server. - - - - + - Summary description for LargeObjectManager. + Called to provide client certificates for SSL handshake. - + - Represents a transaction to be made in a PostgreSQL database. This class cannot be inherited. + Mono.Security.Protocol.Tls.CertificateSelectionCallback delegate. - + - Commits the database transaction. + Mono.Security.Protocol.Tls.CertificateValidationCallback delegate. - + - Rolls back a transaction from a pending state. + Mono.Security.Protocol.Tls.PrivateKeySelectionCallback delegate. - + - Rolls back a transaction from a pending savepoint state. + Gets the current state of the connection. - + - Creates a transaction save point. + Return Connection String. - + - Cancel the transaction without telling the backend about it. This is - used to make the transaction go away when closing a connection. + Version of backend server this connector is connected to. - + - Gets the NpgsqlConnection - object associated with the transaction, or a null reference if the - transaction is no longer valid. + Backend protocol version in use by this connector. - The NpgsqlConnection - object associated with the transaction. - + - Specifies the IsolationLevel for this transaction. + The physical connection stream to the backend. - The IsolationLevel for this transaction. - The default is ReadCommitted. - - - - This class represents a StartupPacket message of PostgreSQL - protocol. - - - + - Provides a means of reading a forward-only stream of rows from a PostgreSQL backend. This class cannot be inherited. + The physical connection socket to the backend. - + - Return the data type name of the column at index . + Reports if this connector is fully connected. - + - Return the data type of the column at index . + The connection mediator. - + - Return the Npgsql specific data type of the column at requested ordinal. + Report if the connection is in a transaction. - column position - Appropriate Npgsql type for column. - + - Return the column name of the column at index . + Report whether the current connection can support prepare functionality. - + - Return the data type OID of the column at index . + This class manages all connector objects, pooled AND non-pooled. - FIXME: Why this method returns String? - + + Unique static instance of the connector pool + mamager. + + + Map of index to unused pooled connectors, avaliable to the + next RequestConnector() call. + This hashmap will be indexed by connection string. + This key will hold a list of queues of pooled connectors available to be used. + + + Timer for tracking unused connections in pools. + + - Return the column name of the column named . + Searches the shared and pooled connector lists for a + matching connector object or creates a new one. + The NpgsqlConnection that is requesting + the connector. Its ConnectionString will be used to search the + pool for available connectors. + A connector object. - + - Return the data DbType of the column at index . + Find a pooled connector. Handle locking and timeout here. - + - Return the data NpgsqlDbType of the column at index . + Find a pooled connector. Handle shared/non-shared here. - + - Get the value of a column as a . - If the differences between and - in handling of days and months is not important to your application, use - instead. + Releases a connector, possibly back to the pool for future use. - Index of the field to find. - value of the field. + + Pooled connectors will be put back into the pool if there is room. + Shared connectors should just have their use count decremented + since they always stay in the shared pool. + + The connector to release. - + - Gets the value of a column converted to a Guid. + Release a pooled connector. Handle locking here. - + - Gets the value of a column as Int16. + Release a pooled connector. Handle shared/non-shared here. - + - Gets the value of a column as Int32. + Create a connector without any pooling functionality. - + - Gets the value of a column as Int64. + Find an available pooled connector in the non-shared pool, or create + a new one if none found. - + - Gets the value of a column as Single. + This method is only called when NpgsqlConnection.Dispose(false) is called which means a + finalization. This also means, an NpgsqlConnection was leak. We clear pool count so that + client doesn't end running out of connections from pool. When the connection is finalized, its underlying + socket is closed. - + - Gets the value of a column as Double. + Close the connector. + + Connector to release - + - Gets the value of a column as String. + Put a pooled connector into the pool queue. + Connector to pool - + - Gets the value of a column as Decimal. + A queue with an extra Int32 for keeping track of busy connections. - + - Copy values from each column in the current row into . + Connections available to the end user - The number of column values copied. - + - Copy values from each column in the current row into . + Connections currently in use - An array appropriately sized to store values from all columns. - The number of column values copied. - + - Gets the value of a column as Boolean. + Represents information about COPY operation data transfer format as returned by server. - + - Gets the value of a column as Byte. Not implemented. + Only created when a CopyInResponse or CopyOutResponse is received by NpgsqlState.ProcessBackendResponses() - + - Gets the value of a column as Char. + Returns true if this operation is currently active and field at given location is in binary format. - + - Gets the value of a column as DateTime. + Returns true if this operation is currently active and in binary format. - + - Returns a System.Data.DataTable that describes the column metadata of the DataReader. + Returns number of fields if this operation is currently active, otherwise -1 - + - This methods parses the command text and tries to get the tablename - from it. + Represents a PostgreSQL COPY FROM STDIN operation with a corresponding SQL statement + to execute against a PostgreSQL database + and an associated stream used to read data from (if provided by user) + or for writing it (when generated by driver). + Eg. new NpgsqlCopyIn("COPY mytable FROM STDIN", connection, streamToRead).Start(); - + - Is raised whenever Close() is called. + Creates NpgsqlCommand to run given query upon Start(). Data for the requested COPY IN operation can then be written to CopyData stream followed by a call to End() or Cancel(). - + - Gets the number of columns in the current row. + Given command is run upon Start(). Data for the requested COPY IN operation can then be written to CopyData stream followed by a call to End() or Cancel(). - + - Gets the value of a column in its native format. + Given command is executed upon Start() and all data from fromStream is passed to it as copy data. - + - Gets the value of a column in its native format. + Returns true if this operation is currently active and field at given location is in binary format. - + - Gets a value indicating the depth of nesting for the current row. Always returns zero. + Command specified upon creation is executed as a non-query. + If CopyStream is set upon creation, it will be flushed to server as copy data, and operation will be finished immediately. + Otherwise the CopyStream member can be used for writing copy data to server and operation finished with a call to End() or Cancel(). - + - Gets a value indicating whether the data reader is closed. + Called after writing all data to CopyStream to successfully complete this copy operation. - + - Contains the column names as the keys + Withdraws an already started copy operation. The operation will fail with given error message. + Will do nothing if current operation is not active. - + - Contains all unique columns + Returns true if the connection is currently reserved for this operation. - + - This is the primary implementation of NpgsqlDataReader. It is the one used in normal cases (where the - preload-reader option is not set in the connection string to resolve some potential backwards-compatibility - issues), the only implementation used internally, and in cases where CachingDataReader is used, it is still - used to do the actual "leg-work" of turning a response stream from the server into a datareader-style - object - with CachingDataReader then filling it's cache from here. + The stream provided by user or generated upon Start(). + User may provide a stream to constructor; it is used to pass to server all data read from it. + Otherwise, call to Start() sets this to a writable NpgsqlCopyInStream that passes all data written to it to server. + In latter case this is only available while the copy operation is active and null otherwise. - + - Iterate through the objects returned through from the server. - If it's a CompletedResponse the rowsaffected count is updated appropriately, - and we iterate again, otherwise we return it (perhaps updating our cache of pending - rows if appropriate). + Returns true if this operation is currently active and in binary format. - The next we will deal with. - + - Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend. + Returns number of fields expected on each input row if this operation is currently active, otherwise -1 - True if the reader was advanced, otherwise false. - + - Releases the resources used by the NpgsqlCommand. + The Command used to execute this copy operation. - + - Closes the data reader object. + Set before a COPY IN query to define size of internal buffer for reading from given CopyStream. - + - Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend. + Represents an ongoing COPY FROM STDIN operation. + Provides methods to push data to server and end or cancel the operation. - True if the reader was advanced, otherwise false. - + - Advances the data reader to the next row. + Called from NpgsqlState.ProcessBackendResponses upon CopyInResponse. + If CopyStream is already set, it is used to read data to push to server, after which the copy is completed. + Otherwise CopyStream is set to a writable NpgsqlCopyInStream that calls SendCopyData each time it is written to. - True if the reader was advanced, otherwise false. - + - Return the value of the column at index . + Sends given packet to server as a CopyData message. + Does not check for notifications! Use another thread for that. - + - Gets raw data from a column. + Sends CopyDone message to server. Handles responses, ie. may throw an exception. - + - Gets raw data from a column. + Sends CopyFail message to server. Handles responses, ie. should always throw an exception: + in CopyIn state the server responds to CopyFail with an error response; + outside of a CopyIn state the server responds to CopyFail with an error response; + without network connection or whatever, there's going to eventually be a failure, timeout or user intervention. - + - Report whether the value in a column is DBNull. + Copy format information returned from server. - + - Gets the number of rows changed, inserted, or deleted by execution of the SQL statement. + Stream for writing data to a table on a PostgreSQL version 7.4 or newer database during an active COPY FROM STDIN operation. + Passes data exactly as is and when given, so see to it that you use server encoding, correct format and reasonably sized writes! - + - Indicates if NpgsqlDatareader has rows to be read. + Created only by NpgsqlCopyInState.StartCopy() - + - Provides an implementation of NpgsqlDataReader in which all data is pre-loaded into memory. - This operates by first creating a ForwardsOnlyDataReader as usual, and then loading all of it's - Rows into memory. There is a general principle that when there is a trade-off between a class design that - is more efficient and/or scalable on the one hand and one that is less efficient but has more functionality - (in this case the internal-only functionality of caching results) that one can build the less efficent class - from the most efficient without significant extra loss in efficiency, but not the other way around. The relationship - between ForwardsOnlyDataReader and CachingDataReader is an example of this). - Since the interface presented to the user is still forwards-only, queues are used to - store this information, so that dequeueing as we go we give the garbage collector the best opportunity - possible to reclaim any memory that is no longer in use. - ForwardsOnlyDataReader being used to actually - obtain the information from the server means that the "leg-work" is still only done (and need only be - maintained) in one place. - This class exists to allow for certain potential backwards-compatibility issues to be resolved - with little effort on the part of affected users. It is considerably less efficient than ForwardsOnlyDataReader - and hence never used internally. + Successfully completes copying data to server. Returns after operation is finished. + Does nothing if this stream is not the active copy operation writer. - + - Represents the method that allows the application to provide a certificate collection to be used for SSL clien authentication + Withdraws an already started copy operation. The operation will fail with given error message. + Does nothing if this stream is not the active copy operation writer. - A X509CertificateCollection to be filled with one or more client certificates. - + - !!! Helper class, for compilation only. - Connector implements the logic for the Connection Objects to - access the physical connection to the database, and isolate - the application developer from connection pooling internals. + Writes given bytes to server. + Fails if this stream is not the active copy operation writer. - + - Constructor. + Flushes stream contents to server. + Fails if this stream is not the active copy operation writer. - Controls whether the connector can be shared. - + - This method checks if the connector is still ok. - We try to send a simple query text, select 1 as ConnectionTest; + Not readable - + - This method is responsible for releasing all resources associated with this Connector. + Not seekable - + - This method is responsible to release all portals used by this Connector. + Not supported - + - Default SSL CertificateSelectionCallback implementation. + True while this stream can be used to write copy data to server - + - Default SSL CertificateValidationCallback implementation. + False - + - Default SSL PrivateKeySelectionCallback implementation. + True - + - Default SSL ProvideClientCertificatesCallback implementation. + False - + - This method is required to set all the version dependent features flags. - SupportsPrepare means the server can use prepared query plans (7.3+) + Number of bytes written so far - + - Opens the physical connection to the server. + Number of bytes written so far; not settable - Usually called by the RequestConnector - Method of the connection pool manager. - + - Closes the physical connection to the server. + Represents a PostgreSQL COPY TO STDOUT operation with a corresponding SQL statement + to execute against a PostgreSQL database + and an associated stream used to write results to (if provided by user) + or for reading the results (when generated by driver). + Eg. new NpgsqlCopyOut("COPY (SELECT * FROM mytable) TO STDOUT", connection, streamToWrite).Start(); - + - Returns next portal index. + Creates NpgsqlCommand to run given query upon Start(), after which CopyStream provides data from database as requested in the query. - + - Returns next plan index. + Given command is run upon Start(), after which CopyStream provides data from database as requested in the query. - + - Occurs on NoticeResponses from the PostgreSQL backend. + Given command is executed upon Start() and all requested copy data is written to toStream immediately. - + - Occurs on NotificationResponses from the PostgreSQL backend. + Returns true if this operation is currently active and field at given location is in binary format. - + - Called to provide client certificates for SSL handshake. + Command specified upon creation is executed as a non-query. + If CopyStream is set upon creation, all copy data from server will be written to it, and operation will be finished immediately. + Otherwise the CopyStream member can be used for reading copy data from server until no more data is available. - + - Mono.Security.Protocol.Tls.CertificateSelectionCallback delegate. + Flush generated CopyStream at once. Effectively reads and discard all the rest of copy data from server. - + - Mono.Security.Protocol.Tls.CertificateValidationCallback delegate. + Returns true if the connection is currently reserved for this operation. - + - Mono.Security.Protocol.Tls.PrivateKeySelectionCallback delegate. + The stream provided by user or generated upon Start() - + - Gets the current state of the connection. + The Command used to execute this copy operation. - + - Return Connection String. + Returns true if this operation is currently active and in binary format. - + - Version of backend server this connector is connected to. + Returns number of fields if this operation is currently active, otherwise -1 - + - Backend protocol version in use by this connector. + Faster alternative to using the generated CopyStream. - + - The physical connection stream to the backend. + Represents an ongoing COPY TO STDOUT operation. + Provides methods to read data from server or end the operation. - + - The physical connection socket to the backend. + Called from NpgsqlState.ProcessBackendResponses upon CopyOutResponse. + If CopyStream is already set, it is used to write data received from server, after which the copy ends. + Otherwise CopyStream is set to a readable NpgsqlCopyOutStream that receives data from server. - + - Reports if this connector is fully connected. + Called from NpgsqlOutStream.Read to read copy data from server. - + - The connection mediator. + Copy format information returned from server. - + - Report if the connection is in a transaction. + Stream for reading data from a table or select on a PostgreSQL version 7.4 or newer database during an active COPY TO STDOUT operation. + Passes data exactly as provided by the server. - + - Report whether the current connection can support prepare functionality. + Created only by NpgsqlCopyOutState.StartCopy() - + - This class contains helper methods for type conversion between - the .Net type system and postgresql. + Discards copy data as long as server pushes it. Returns after operation is finished. + Does nothing if this stream is not the active copy operation reader. - + - A cache of basic datatype mappings keyed by server version. This way we don't - have to load the basic type mappings for every connection. + Not writable. - + - Find a NpgsqlNativeTypeInfo in the default types map that can handle objects - of the given NpgsqlDbType. + Not flushable. - + - Find a NpgsqlNativeTypeInfo in the default types map that can handle objects - of the given NpgsqlDbType. + Copies data read from server to given byte buffer. + Since server returns data row by row, length will differ each time, but it is only zero once the operation ends. + Can be mixed with calls to the more efficient NpgsqlCopyOutStream.Read() : byte[] though that would not make much sense. - + - Find a NpgsqlNativeTypeInfo in the default types map that can handle objects - of the given DbType. + Not seekable - + - Find a NpgsqlNativeTypeInfo in the default types map that can handle objects - of the given System.Type. + Not supported - + - This method is responsible to convert the string received from the backend - to the corresponding NpgsqlType. - The given TypeInfo is called upon to do the conversion. - If no TypeInfo object is provided, no conversion is performed. - + Returns a whole row of data from server without extra work. + If standard Stream.Read(...) has been called before, it's internal buffers remains are returned. + - + - Create the one and only native to backend type map. - This map is used when formatting native data - types to backend representations. + True while this stream can be used to read copy data from server - + - This method creates (or retrieves from cache) a mapping between type and OID - of all natively supported postgresql data types. - This is needed as from one version to another, this mapping can be changed and - so we avoid hardcoding them. - - NpgsqlTypeMapping containing all known data types. The mapping must be - cloned before it is modified because it is cached; changes made by one connection may - effect another connection. + True + - + - Attempt to map types by issuing a query against pg_type. - This function takes a list of NpgsqlTypeInfo and attempts to resolve the OID field - of each by querying pg_type. If the mapping is found, the type info object is - updated (OID) and added to the provided NpgsqlTypeMapping object. + False - NpgsqlConnector to send query through. - Mapping object to add types too. - List of types that need to have OID's mapped. - + - Delegate called to convert the given backend data to its native representation. + False - + - Delegate called to convert the given native data to its backand representation. + Number of bytes read so far - + - Represents a backend data type. - This class can be called upon to convert a backend field representation to a native object. + Number of bytes read so far; can not be set. - + - Construct a new NpgsqlTypeInfo with the given attributes and conversion handlers. + Writes given objects into a stream for PostgreSQL COPY in default copy format (not CSV or BINARY). - Type OID provided by the backend server. - Type name provided by the backend server. - NpgsqlDbType - System type to convert fields of this type to. - Data conversion handler. - + - Perform a data conversion from a backend representation to - a native object. + Represents the method that handles the RowUpdated events. - Data sent from the backend. - Type modifier field sent from the backend. + The source of the event. + A NpgsqlRowUpdatedEventArgs that contains the event data. - + - Type OID provided by the backend server. + Represents the method that handles the RowUpdating events. + The source of the event. + A NpgsqlRowUpdatingEventArgs that contains the event data. - + - Type name provided by the backend server. + This class represents an adapter from many commands: select, update, insert and delete to fill Datasets. - + - NpgsqlDbType. + Provides a means of reading a forward-only stream of rows from a PostgreSQL backend. This class cannot be inherited. - + - NpgsqlDbType. + Return the data type name of the column at index . - + - Provider type to convert fields of this type to. + Return the data type of the column at index . - + - System type to convert fields of this type to. + Return the Npgsql specific data type of the column at requested ordinal. + column position + Appropriate Npgsql type for column. - + - Represents a backend data type. - This class can be called upon to convert a native object to its backend field representation, + Return the column name of the column at index . - + - Returns an NpgsqlNativeTypeInfo for an array where the elements are of the type - described by the NpgsqlNativeTypeInfo supplied. + Return the data type OID of the column at index . + FIXME: Why this method returns String? - + - Construct a new NpgsqlTypeInfo with the given attributes and conversion handlers. + Return the column name of the column named . - Type name provided by the backend server. - NpgsqlDbType - Data conversion handler. - + - Perform a data conversion from a native object to - a backend representation. - DBNull and null values are handled differently depending if a plain query is used - When + Return the data DbType of the column at index . - Native .NET object to be converted. - Flag indicating if the conversion has to be done for - plain queries or extended queries - + - Type name provided by the backend server. + Return the data NpgsqlDbType of the column at index . - + - NpgsqlDbType. + Get the value of a column as a . + If the differences between and + in handling of days and months is not important to your application, use + instead. + Index of the field to find. + value of the field. - + - DbType. + Gets the value of a column converted to a Guid. - + - Apply quoting. + Gets the value of a column as Int16. - + - Use parameter size information. + Gets the value of a column as Int32. - + - Provide mapping between type OID, type name, and a NpgsqlBackendTypeInfo object that represents it. + Gets the value of a column as Int64. - + - Construct an empty mapping. + Gets the value of a column as Single. - + - Copy constuctor. + Gets the value of a column as Double. - + - Add the given NpgsqlBackendTypeInfo to this mapping. + Gets the value of a column as String. - + - Add a new NpgsqlBackendTypeInfo with the given attributes and conversion handlers to this mapping. + Gets the value of a column as Decimal. - Type OID provided by the backend server. - Type name provided by the backend server. - NpgsqlDbType - System type to convert fields of this type to. - Data conversion handler. - + - Make a shallow copy of this type mapping. + Gets the value of a column as TimeSpan. - + - Determine if a NpgsqlBackendTypeInfo with the given backend type OID exists in this mapping. + Copy values from each column in the current row into . + The number of column values copied. - + - Determine if a NpgsqlBackendTypeInfo with the given backend type name exists in this mapping. + Copy values from each column in the current row into . + An array appropriately sized to store values from all columns. + The number of column values copied. - + - Get the number of type infos held. + Gets the value of a column as Boolean. - + - Retrieve the NpgsqlBackendTypeInfo with the given backend type OID, or null if none found. + Gets the value of a column as Byte. Not implemented. - + - Retrieve the NpgsqlBackendTypeInfo with the given backend type name, or null if none found. + Gets the value of a column as Char. - + - Provide mapping between type Type, NpgsqlDbType and a NpgsqlNativeTypeInfo object that represents it. + Gets the value of a column as DateTime. - + - Add the given NpgsqlNativeTypeInfo to this mapping. + Returns a System.Data.DataTable that describes the column metadata of the DataReader. - + - Add a new NpgsqlNativeTypeInfo with the given attributes and conversion handlers to this mapping. + This methods parses the command text and tries to get the tablename + from it. - Type name provided by the backend server. - NpgsqlDbType - Data conversion handler. - + - Retrieve the NpgsqlNativeTypeInfo with the given NpgsqlDbType. + Is raised whenever Close() is called. - + - Retrieve the NpgsqlNativeTypeInfo with the given DbType. + Gets the number of columns in the current row. - + - Retrieve the NpgsqlNativeTypeInfo with the given Type. + Gets the value of a column in its native format. - + - Determine if a NpgsqlNativeTypeInfo with the given backend type name exists in this mapping. + Gets the value of a column in its native format. - + - Determine if a NpgsqlNativeTypeInfo with the given NpgsqlDbType exists in this mapping. + Gets a value indicating the depth of nesting for the current row. Always returns zero. - + - Determine if a NpgsqlNativeTypeInfo with the given Type name exists in this mapping. + Gets a value indicating whether the data reader is closed. - + - Get the number of type infos held. + Contains the column names as the keys - + - Implements for version 3 of the protocol. + Contains all unique columns - + - Reads a row, field by field, allowing a DataRow to be built appropriately. + This is the primary implementation of NpgsqlDataReader. It is the one used in normal cases (where the + preload-reader option is not set in the connection string to resolve some potential backwards-compatibility + issues), the only implementation used internally, and in cases where CachingDataReader is used, it is still + used to do the actual "leg-work" of turning a response stream from the server into a datareader-style + object - with CachingDataReader then filling it's cache from here. - + - Reads part of a field, as needed (for - and + Iterate through the objects returned through from the server. + If it's a CompletedResponse the rowsaffected count is updated appropriately, + and we iterate again, otherwise we return it (perhaps updating our cache of pending + rows if appropriate). + The next we will deal with. - + - Adds further functionality to stream that is dependant upon the type of data read. + Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend. + True if the reader was advanced, otherwise false. - + - Completes the implementation of Streamer for char data. + Releases the resources used by the NpgsqlCommand. - + - Completes the implementation of Streamer for byte data. + Closes the data reader object. - + - Implements for version 2 of the protocol. + Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend. + True if the reader was advanced, otherwise false. - + - Encapsulates the null mapping bytes sent at the start of a version 2 - datarow message, and the process of identifying the nullity of the data - at a particular index + Advances the data reader to the next row. + True if the reader was advanced, otherwise false. - + - Provides the underlying mechanism for reading schema information. + Return the value of the column at index . - + - Creates an NpgsqlSchema that can read schema information from the database. + Gets raw data from a column. - An open database connection for reading metadata. - + - Returns the MetaDataCollections that lists all possible collections. + Gets raw data from a column. - The MetaDataCollections - + - Returns the Restrictions that contains the meaning and position of the values in the restrictions array. + Report whether the value in a column is DBNull. - The Restrictions - + - Returns the Databases that contains a list of all accessable databases. + Gets the number of rows changed, inserted, or deleted by execution of the SQL statement. - The restrictions to filter the collection. - The Databases - + - Returns the Tables that contains table and view names and the database and schema they come from. + Indicates if NpgsqlDatareader has rows to be read. - The restrictions to filter the collection. - The Tables - + - Returns the Columns that contains information about columns in tables. + Provides an implementation of NpgsqlDataReader in which all data is pre-loaded into memory. + This operates by first creating a ForwardsOnlyDataReader as usual, and then loading all of it's + Rows into memory. There is a general principle that when there is a trade-off between a class design that + is more efficient and/or scalable on the one hand and one that is less efficient but has more functionality + (in this case the internal-only functionality of caching results) that one can build the less efficent class + from the most efficient without significant extra loss in efficiency, but not the other way around. The relationship + between ForwardsOnlyDataReader and CachingDataReader is an example of this). + Since the interface presented to the user is still forwards-only, queues are used to + store this information, so that dequeueing as we go we give the garbage collector the best opportunity + possible to reclaim any memory that is no longer in use. + ForwardsOnlyDataReader being used to actually + obtain the information from the server means that the "leg-work" is still only done (and need only be + maintained) in one place. + This class exists to allow for certain potential backwards-compatibility issues to be resolved + with little effort on the part of affected users. It is considerably less efficient than ForwardsOnlyDataReader + and hence never used internally. - The restrictions to filter the collection. - The Columns. - + + + This class represents the Parse message sent to PostgreSQL + server. + + + + - Returns the Views that contains view names and the database and schema they come from. + EventArgs class to send Notice parameters, which are just NpgsqlError's in a lighter context. - The restrictions to filter the collection. - The Views - + - Returns the Users containing user names and the sysid of those users. + Notice information. - The restrictions to filter the collection. - The Users. - + - This is the abstract base class for NpgsqlAsciiRow and NpgsqlBinaryRow. + This class represents the ErrorResponse and NoticeResponse + message sent from PostgreSQL server. - + - Implements a bit string; a collection of zero or more bits which can each be 1 or 0. - BitString's behave as a list of bools, though like most strings and unlike most collections the position - tends to be of as much significance as the value. - BitStrings are often used as masks, and are commonly cast to and from other values. + Return a string representation of this error object. - + - Represents the empty string. + Severity code. All versions. - + - Create a BitString from an enumeration of boolean values. The BitString will contain - those booleans in the order they came in. + Error code. PostgreSQL 7.4 and up. - The boolean values. - + - Creates a BitString filled with a given number of true or false values. + Terse error message. All versions. - The value to fill the string with. - The number of bits to fill. - + - Creats a bitstring from a string. - The string to copy from. - + Detailed error message. PostgreSQL 7.4 and up. - + - Creates a single-bit element from a boolean value. + Suggestion to help resolve the error. PostgreSQL 7.4 and up. - The bool value which determines whether - the bit is 1 or 0. - + - Creates a bitstring from an unsigned integer value. The string will be the shortest required to - contain the integer (e.g. 1 bit for 0 or 1, 2 for 2 or 3, 3 for 4-7, and so on). + Position (one based) within the query string where the error was encounterd. PostgreSQL 7.4 and up. - The integer. - This method is not CLS Compliant, and may not be available to some languages. - + - Creates a bitstring from an integer value. The string will be the shortest required to - contain the integer (e.g. 1 bit for 0 or 1, 2 for 2 or 3, 3 for 4-7, and so on). + Position (one based) within the query string where the error was encounterd. This position refers to an internal command executed for example inside a PL/pgSQL function. PostgreSQL 7.4 and up. - The integer. - + - Finds the first instance of a given value + Internal query string where the error was encounterd. This position refers to an internal command executed for example inside a PL/pgSQL function. PostgreSQL 7.4 and up. - The value - whether true or false - to search for. - The index of the value found, or -1 if none are present. - + - True if there is at least one bit with the value looked for. + Trace back information. PostgreSQL 7.4 and up. - The value - true or false - to detect. - True if at least one bit was the same as item, false otherwise. - + - Copies the bitstring to an array of bools. + Source file (in backend) reporting the error. PostgreSQL 7.4 and up. - The boolean array to copy to. - The index in the array to start copying from. - + - Returns an enumerator that enumerates through the string. + Source file line number (in backend) reporting the error. PostgreSQL 7.4 and up. - The enumerator. - + - Creats a bitstring by concatenating another onto this one. + Source routine (in backend) reporting the error. PostgreSQL 7.4 and up. - The string to append to this one. - The combined strings. - + - Returns a substring of this string. + String containing the sql sent which produced this error. - The position to start from, must be between 0 and the length of the string. - The length of the string to return, must be greater than zero, and may not be - so large that the start + length exceeds the bounds of this instance. - The Bitstring identified - + - Returns a substring of this string. + Backend protocol version in use. - The position to start from, must be between 0 and the length of the string, - the rest of the string is returned. - The Bitstring identified - + - A logical and between this string and another. The two strings must be the same length. + The level of verbosity of the NpgsqlEventLog - Another BitString to AND with this one. - A bitstring with 1 where both BitStrings had 1 and 0 otherwise. - + - A logical or between this string and another. The two strings must be the same length. + Don't log at all - Another BitString to OR with this one. - A bitstring with 1 where either BitString had 1 and 0 otherwise. - + - A logical xor between this string and another. The two strings must be the same length. + Only log the most common issues - Another BitString to XOR with this one. - A bitstring with 1 where one BitStrings and the other had 0, - and 0 where they both had 1 or both had 0. - + - A bitstring that is the logical inverse of this one. + Log everything - A bitstring of the same length as this with 1 where this has 0 and vice-versa. - + - Shifts the string operand bits to the left, filling with zeros to produce a - string of the same length. + This class handles all the Npgsql event and debug logging - The number of bits to shift to the left. - A left-shifted bitstring. - The behaviour of LShift is closer to what one would expect from dealing - with PostgreSQL bit-strings than in using the same operations on integers in .NET - In particular, negative operands result in a right-shift, and operands greater than - the length of the string will shift it entirely, resulting in a zero-filled string. - - + - Shifts the string operand bits to the right, filling with zeros to produce a - string of the same length. + Writes a string to the Npgsql event log if msglevel is bigger then NpgsqlEventLog.Level - The number of bits to shift to the right. - A right-shifted bitstring. - The behaviour of RShift is closer to what one would expect from dealing - with PostgreSQL bit-strings than in using the same operations on integers in .NET - In particular, negative operands result in a left-shift, and operands greater than - the length of the string will shift it entirely, resulting in a zero-filled string. It also performs - a logical shift, rather than an arithmetic shift, so it always sets the vacated bit positions to zero - (like PostgreSQL and like .NET for unsigned integers but not for signed integers). + + This method is obsolete and should no longer be used. + It is likely to be removed in future versions of Npgsql + The message to write to the event log + The minimum LogLevel for which this message should be logged. - + - Returns true if the this string is identical to the argument passed. + Writes a string to the Npgsql event log if msglevel is bigger then NpgsqlEventLog.Level + The ResourceManager to get the localized resources + The name of the resource that should be fetched by the ResourceManager + The minimum LogLevel for which this message should be logged. + The additional parameters that shall be included into the log-message (must be compatible with the string in the resource): - + - Compares two strings. Strings are compared as strings, so while 0 being less than 1 will - mean a comparison between two strings of the same size is the same as treating them as numbers, - in the case of two strings of differing lengths the comparison starts at the right-most (most significant) - bit, and if all bits of the shorter string are exhausted without finding a comparison, then the larger - string is deemed to be greater than the shorter (0010 is greater than 0001 but less than 00100). + Writes the default log-message for the action of calling the Get-part of an Indexer to the log file. - Another string to compare with this one. - A value if the two strings are identical, an integer less - than zero if this is less than the argument, and an integer greater - than zero otherwise. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Indexer + The parameter given to the Indexer - + - Compares the string with another object. + Writes the default log-message for the action of calling the Set-part of an Indexer to the logfile. - The object to compare with. - If the object is null then this string is considered greater. If the object is another BitString - then they are compared as in the explicit comparison for BitStrings - in any other case a is thrown. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Indexer + The parameter given to the Indexer + The value the Indexer is set to - + - Compares this BitString with an object for equality. + Writes the default log-message for the action of calling the Get-part of a Property to the logfile. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Property + The name of the Property - + - Returns a code for use in hashing operations. + Writes the default log-message for the action of calling the Set-part of a Property to the logfile. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Property + The name of the Property + The value the Property is set to - + - Returns a string representation of the BitString. + Writes the default log-message for the action of calling a Method without Arguments to the logfile. - - A string which can contain a letter and optionally a number which sets a minimum size for the string - returned. In each case using the lower-case form of the letter will result in a lower-case string - being returned. - - - B - A string of 1s and 0s. - - - X - An hexadecimal string (will result in an error unless the string's length is divisible by 4). - - - G - A string of 1s and 0s in single-quotes preceded by 'B' (Postgres bit string literal syntax). - - Y - An hexadecimal string in single-quotes preceded by 'X' (Postgres bit literal syntax, will result in an error unless the string's length is divisible by 4. - - C - The format produced by format-string "Y" if legal, otherwise that produced by format-string "G". - E - The most compact safe representation for Postgres. If single bit will be either a 0 or a 1. Otherwise if it - can be that produce by format string "Y" it will, otherwise if there are less than 9bits in length it will be that - produced by format-string "G". For longer strings that cannot be represented in hexadecimal it will be a string - representing the first part of the string in format "Y" followed by the PostgreSQL concatenation operator, followed - by the final bits in the format "G". E.g. "X'13DCE'||B'110'" - If format is empty or null, it is treated as if "B" had been passed (the default repreesentation, and that - generally used by PostgreSQL for display). - - The formatted string. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method - + - Returns a string representation for the Bitstring + Writes the default log-message for the action of calling a Method with one Argument to the logfile. - A string containing '0' and '1' characters. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + The value of the Argument of the Method - + - Returns the same string as . formatProvider is ignored. + Writes the default log-message for the action of calling a Method with two Arguments to the logfile. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + The value of the first Argument of the Method + The value of the second Argument of the Method - + - Parses a string to produce a BitString. Most formats that can be produced by - can be accepted, but hexadecimal - can be interpreted with the preceding X' to mark the following characters as - being hexadecimal rather than binary. + Writes the default log-message for the action of calling a Method with three Arguments to the logfile. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + The value of the first Argument of the Method + The value of the second Argument of the Method + The value of the third Argument of the Method - + - Performs a logical AND on the two operands. + Writes the default log-message for the action of calling a Method with more than three Arguments to the logfile. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + A Object-Array with zero or more Ojects that are Arguments of the Method. - + - Performs a logcial OR on the two operands. - + Sets/Returns the level of information to log to the logfile. + + The current LogLevel - + - Perofrms a logical EXCLUSIVE-OR on the two operands - + Sets/Returns the filename to use for logging. + + The filename of the current Log file. - + - Performs a logical NOT on the operand. - + Sets/Returns whether Log messages should be echoed to the console + + true if Log messages are echoed to the console, otherwise false - + - Concatenates the operands. + The exception that is thrown when the PostgreSQL backend reports errors. - + - Left-shifts the string BitString. + Construct a backend error exception based on a list of one or more + backend errors. The basic Exception.Message will be built from the + first (usually the only) error in the list. - + - Right-shifts the string BitString. + Format a .NET style exception string. + Include all errors in the list, including any hints. - + - Compares the two operands. + Append a line to the given Stream, first checking for zero-length. - + - Compares the two operands. + Provide access to the entire list of errors provided by the PostgreSQL backend. - + - Compares the two operands. + Severity code. All versions. - + - Compares the two operands. + Error code. PostgreSQL 7.4 and up. - + - Compares the two operands. + Basic error message. All versions. - + - Compares the two operands. + Detailed error message. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of bits in an encoded character string, - encoded according to the Encoding passed, and returns that string. - The bitstring must contain a whole number of octets(bytes) and also be - valid according to the Encoding passed. + Suggestion to help resolve the error. PostgreSQL 7.4 and up. - The to use in producing the string. - The string that was encoded in the BitString. - + - Interprets the bitstring as a series of octets (bytes) and returns those octets. Fails - if the Bitstring does not contain a whole number of octets (its length is not evenly - divisible by 8). + Position (one based) within the query string where the error was encounterd. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of signed octets (bytes) and returns those octets. Fails - if the Bitstring does not contain a whole number of octets (its length is not evenly - divisible by 8). - This method is not CLS-Compliant and may not be available to languages that cannot - handle signed bytes. + Trace back information. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of unsigned 16-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 16. - This method is not CLS-Compliant and may not be available to languages that cannot - handle unsigned integers. + Source file (in backend) reporting the error. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of 16-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 16. + Source file line number (in backend) reporting the error. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of unsigned 32-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 32. - This method is not CLS-Compliant and may not be available to languages that cannot - handle unsigned integers. + Source routine (in backend) reporting the error. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of signed 32-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 32. + String containing the sql sent which produced this error. - + - Interprets the bitstring as a series of unsigned 64-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 64. - This method is not CLS-Compliant and may not be available to languages that cannot - handle unsigned integers. + Returns the entire list of errors provided by the PostgreSQL backend. - + + + This class represents the Parse message sent to PostgreSQL + server. + + + + - Interprets the bitstring as a series of signed 64-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 64. + A factory to create instances of various Npgsql objects. - + - The length of the string. + Creates an NpgsqlCommand object. - + + + This class represents the Parse message sent to PostgreSQL + server. + + + + - Retrieves the value of the bit at the given index. - + This class is responsible for serving as bridge between the backend + protocol handling and the core classes. It is used as the mediator for + exchanging data generated/sent from/to backend. + + - + - C# implementation of the MD5 cryptographic hash function. + EventArgs class to send Notification parameters. - + - Creates a new MD5CryptoServiceProvider. + Process ID of the PostgreSQL backend that sent this notification. - + - Drives the hashing function. + Condition that triggered that notification. - Byte array containing the data to hash. - Where in the input buffer to start. - Size in bytes of the data in the buffer to hash. - + - This finalizes the hash. Takes the data from the chaining variables and returns it. + Additional Information From Notifiying Process (for future use, currently postgres always sets this to an empty string) - + - Resets the class after use. Called automatically after hashing is done. + This class represents a parameter to a command that will be sent to server - + - This is the meat of the hash function. It is what processes each block one at a time. + Initializes a new instance of the NpgsqlParameter class. - Byte array to process data from. - Where in the byte array to start processing. - + - Pads and then processes the final block. + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name and a value of the new NpgsqlParameter. - Buffer to grab data from. - Position in buffer in bytes to get data from. - How much data in bytes in the buffer to use. + The m_Name of the parameter to map. + An Object that is the value of the NpgsqlParameter. + +

When you specify an Object + in the value parameter, the DbType is + inferred from the .NET Framework type of the Object.

+

When using this constructor, you must be aware of a possible misuse of the constructor which takes a DbType parameter. + This happens when calling this constructor passing an int 0 and the compiler thinks you are passing a value of DbType. + Use Convert.ToInt32(value) for example to have compiler calling the correct constructor.

+
- + - Stream for writing data to a table on a PostgreSQL version 7.4 or newer database during an active COPY FROM STDIN operation. - Passes data exactly as is and when given, so see to it that you use server encoding, correct format and reasonably sized writes! + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name and the data type. + The m_Name of the parameter to map. + One of the DbType values. - + - Created only by NpgsqlCopyInState.StartCopy() + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name, the DbType, and the size. + The m_Name of the parameter to map. + One of the DbType values. + The length of the parameter. - + - Successfully completes copying data to server. Returns after operation is finished. - Does nothing if this stream is not the active copy operation writer. + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name, the DbType, the size, + and the source column m_Name. + The m_Name of the parameter to map. + One of the DbType values. + The length of the parameter. + The m_Name of the source column. - + - Withdraws an already started copy operation. The operation will fail with given error message. - Does nothing if this stream is not the active copy operation writer. + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name, the DbType, the size, + the source column m_Name, a ParameterDirection, + the precision of the parameter, the scale of the parameter, a + DataRowVersion to use, and the + value of the parameter. + The m_Name of the parameter to map. + One of the DbType values. + The length of the parameter. + The m_Name of the source column. + One of the ParameterDirection values. + true if the value of the field can be null, otherwise false. + The total number of digits to the left and right of the decimal point to which + Value is resolved. + The total number of decimal places to which + Value is resolved. + One of the DataRowVersion values. + An Object that is the value + of the NpgsqlParameter. - + - Writes given bytes to server. - Fails if this stream is not the active copy operation writer. + Creates a new NpgsqlParameter that + is a copy of the current instance. + A new NpgsqlParameter that is a copy of this instance. - + - Flushes stream contents to server. - Fails if this stream is not the active copy operation writer. + Gets or sets the maximum number of digits used to represent the + Value property. + The maximum number of digits used to represent the + Value property. + The default value is 0, which indicates that the data provider + sets the precision for Value. - + - Not readable + Gets or sets the number of decimal places to which + Value is resolved. + The number of decimal places to which + Value is resolved. The default is 0. - + - Not seekable + Gets or sets the maximum size, in bytes, of the data within the column. + The maximum size, in bytes, of the data within the column. + The default value is inferred from the parameter value. - + - Not supported + Gets or sets the DbType of the parameter. + One of the DbType values. The default is String. - + - True while this stream can be used to write copy data to server + Gets or sets the DbType of the parameter. + One of the DbType values. The default is String. - + - False + Gets or sets a value indicating whether the parameter is input-only, + output-only, bidirectional, or a stored procedure return value parameter. + One of the ParameterDirection + values. The default is Input. - + - True + Gets or sets a value indicating whether the parameter accepts null values. + true if null values are accepted; otherwise, false. The default is false. - + - False + Gets or sets the m_Name of the NpgsqlParameter. + The m_Name of the NpgsqlParameter. + The default is an empty string. - + - Number of bytes written so far + The m_Name scrubbed of any optional marker - + - Number of bytes written so far; not settable + Gets or sets the m_Name of the source column that is mapped to the + DataSet and used for loading or + returning the Value. + The m_Name of the source column that is mapped to the + DataSet. The default is an empty string. - + - Represents a SQL statement or function (stored procedure) to execute - against a PostgreSQL database. This class cannot be inherited. + Gets or sets the DataRowVersion + to use when loading Value. + One of the DataRowVersion values. + The default is Current. - + - Initializes a new instance of the NpgsqlCommand class. + Gets or sets the value of the parameter. + An Object that is the value of the parameter. + The default value is null. - + - Initializes a new instance of the NpgsqlCommand class with the text of the query. + Gets or sets the value of the parameter. - The text of the query. + An Object that is the value of the parameter. + The default value is null. - + - Initializes a new instance of the NpgsqlCommand class with the text of the query and a NpgsqlConnection. + Represents a collection of parameters relevant to a NpgsqlCommand + as well as their respective mappings to columns in a DataSet. + This class cannot be inherited. - The text of the query. - A NpgsqlConnection that represents the connection to a PostgreSQL server. - + - Initializes a new instance of the NpgsqlCommand class with the text of the query, a NpgsqlConnection, and the NpgsqlTransaction. - - The text of the query. - A NpgsqlConnection that represents the connection to a PostgreSQL server. - The NpgsqlTransaction in which the NpgsqlCommand executes. + Initializes a new instance of the NpgsqlParameterCollection class. + - + - Used to execute internal commands. + Adds the specified NpgsqlParameter object to the NpgsqlParameterCollection. + The NpgsqlParameter to add to the collection. + The index of the new NpgsqlParameter object. - + - Attempts to cancel the execution of a NpgsqlCommand. + Adds a NpgsqlParameter to the NpgsqlParameterCollection given the specified parameter name and value. - This Method isn't implemented yet. + The name of the NpgsqlParameter. + The Value of the NpgsqlParameter to add to the collection. + The index of the new NpgsqlParameter object. + + Use caution when using this overload of the + Add method to specify integer parameter values. + Because this overload takes a value of type Object, + you must convert the integral value to an Object + type when the value is zero, as the following C# example demonstrates. + parameters.Add(":pname", Convert.ToInt32(0)); + If you do not perform this conversion, the compiler will assume you + are attempting to call the NpgsqlParameterCollection.Add(string, DbType) overload. + - + - Create a new command based on this one. + Adds a NpgsqlParameter to the NpgsqlParameterCollection given the parameter name and the data type. - A new NpgsqlCommand object. + The name of the parameter. + One of the DbType values. + The index of the new NpgsqlParameter object. - + - Create a new command based on this one. + Adds a NpgsqlParameter to the NpgsqlParameterCollection with the parameter name, the data type, and the column length. - A new NpgsqlCommand object. + The name of the parameter. + One of the DbType values. + The length of the column. + The index of the new NpgsqlParameter object. - + - Creates a new instance of an DbParameter object. + Adds a NpgsqlParameter to the NpgsqlParameterCollection with the parameter name, the data type, the column length, and the source column name. - An DbParameter object. + The name of the parameter. + One of the DbType values. + The length of the column. + The name of the source column. + The index of the new NpgsqlParameter object. - + - Creates a new instance of a NpgsqlParameter object. + Removes the specified NpgsqlParameter from the collection using the parameter name. - A NpgsqlParameter object. + The name of the NpgsqlParameter object to retrieve. - + - Slightly optimised version of ExecuteNonQuery() for internal ues in cases where the number - of affected rows is of no interest. + Gets a value indicating whether a NpgsqlParameter with the specified parameter name exists in the collection. + The name of the NpgsqlParameter object to find. + true if the collection contains the parameter; otherwise, false. - + - Executes a SQL statement against the connection and returns the number of rows affected. + Gets the location of the NpgsqlParameter in the collection with a specific parameter name. - The number of rows affected if known; -1 otherwise. + The name of the NpgsqlParameter object to find. + The zero-based location of the NpgsqlParameter in the collection. - + - Sends the CommandText to - the Connection and builds a - NpgsqlDataReader - using one of the CommandBehavior values. + Removes the specified NpgsqlParameter from the collection using a specific index. - One of the CommandBehavior values. - A NpgsqlDataReader object. + The zero-based index of the parameter. - + - Sends the CommandText to - the Connection and builds a - NpgsqlDataReader. + Inserts a NpgsqlParameter into the collection at the specified index. - A NpgsqlDataReader object. + The zero-based index where the parameter is to be inserted within the collection. + The NpgsqlParameter to add to the collection. - + - Sends the CommandText to - the Connection and builds a - NpgsqlDataReader - using one of the CommandBehavior values. + Removes the specified NpgsqlParameter from the collection. - One of the CommandBehavior values. - A NpgsqlDataReader object. - Currently the CommandBehavior parameter is ignored. + The NpgsqlParameter to remove from the collection. - + - This method binds the parameters from parameters collection to the bind - message. - + Gets a value indicating whether a NpgsqlParameter exists in the collection. + + The value of the NpgsqlParameter object to find. + true if the collection contains the NpgsqlParameter object; otherwise, false. - + - Executes the query, and returns the first column of the first row - in the result set returned by the query. Extra columns or rows are ignored. + Gets a value indicating whether a NpgsqlParameter with the specified parameter name exists in the collection. - The first column of the first row in the result set, - or a null reference if the result set is empty. + The name of the NpgsqlParameter object to find. + A reference to the requested parameter is returned in this out param if it is found in the list. This value is null if the parameter is not found. + true if the collection contains the parameter and param will contain the parameter; otherwise, false. - + - Creates a prepared version of the command on a PostgreSQL server. + Removes all items from the collection. - + - This method checks the connection state to see if the connection - is set or it is open. If one of this conditions is not met, throws - an InvalidOperationException + Gets the location of a NpgsqlParameter in the collection. + The value of the NpgsqlParameter object to find. + The zero-based index of the NpgsqlParameter object in the collection. - + - This method substitutes the Parameters, if exist, in the command - to their actual values. - The parameter name format is :ParameterName. + Adds the specified NpgsqlParameter object to the NpgsqlParameterCollection. - A version of CommandText with the Parameters inserted. + The NpgsqlParameter to add to the collection. + The zero-based index of the new NpgsqlParameter object. - + - Gets or sets the SQL statement or function (stored procedure) to execute at the data source. + Copies NpgsqlParameter objects from the NpgsqlParameterCollection to the specified array. - The Transact-SQL statement or stored procedure to execute. The default is an empty string. + An Array to which to copy the NpgsqlParameter objects in the collection. + The starting index of the array. - + - Gets or sets the wait time before terminating the attempt - to execute a command and generating an error. + Returns an enumerator that can iterate through the collection. - The time (in seconds) to wait for the command to execute. - The default is 20 seconds. + An IEnumerator that can be used to iterate through the collection. - + - Gets or sets a value indicating how the - CommandText property is to be interpreted. + In methods taking an object as argument this method is used to verify + that the argument has the type NpgsqlParameter - One of the CommandType values. The default is CommandType.Text. + The object to verify - + - Gets or sets the NpgsqlConnection - used by this instance of the NpgsqlCommand. + Gets the NpgsqlParameter with the specified name. - The connection to a data source. The default value is a null reference. + The name of the NpgsqlParameter to retrieve. + The NpgsqlParameter with the specified name, or a null reference if the parameter is not found. - + - Gets the NpgsqlParameterCollection. + Gets the NpgsqlParameter at the specified index. - The parameters of the SQL statement or function (stored procedure). The default is an empty collection. + The zero-based index of the NpgsqlParameter to retrieve. + The NpgsqlParameter at the specified index. - + - Gets or sets the NpgsqlTransaction - within which the NpgsqlCommand executes. + Gets the number of NpgsqlParameter objects in the collection. - The NpgsqlTransaction. - The default value is a null reference. + The number of NpgsqlParameter objects in the collection. - + + + This class represents the ParameterStatus message sent from PostgreSQL + server. + + + + + + This class represents the Parse message sent to PostgreSQL + server. + + + + - Gets or sets how command results are applied to the DataRow - when used by the Update - method of the DbDataAdapter. + This class represents a PasswordPacket message sent to backend + PostgreSQL. - One of the UpdateRowSource values. - + - Returns oid of inserted row. This is only updated when using executenonQuery and when command inserts just a single row. If table is created without oids, this will always be 0. + Used when a connection is closed - + - Represents a collection of parameters relevant to a NpgsqlCommand - as well as their respective mappings to columns in a DataSet. - This class cannot be inherited. + Summary description for NpgsqlQuery - + - Initializes a new instance of the NpgsqlParameterCollection class. + This is the abstract base class for NpgsqlAsciiRow and NpgsqlBinaryRow. - + + + This class represents a RowDescription message sent from + the PostgreSQL. + + + + - Adds the specified NpgsqlParameter object to the NpgsqlParameterCollection. + This struct represents the internal data of the RowDescription message. - The NpgsqlParameter to add to the collection. - The index of the new NpgsqlParameter object. - + - Adds a NpgsqlParameter to the NpgsqlParameterCollection given the specified parameter name and value. + Provides the underlying mechanism for reading schema information. - The name of the NpgsqlParameter. - The Value of the NpgsqlParameter to add to the collection. - The index of the new NpgsqlParameter object. - - Use caution when using this overload of the - Add method to specify integer parameter values. - Because this overload takes a value of type Object, - you must convert the integral value to an Object - type when the value is zero, as the following C# example demonstrates. - parameters.Add(":pname", Convert.ToInt32(0)); - If you do not perform this conversion, the compiler will assume you - are attempting to call the NpgsqlParameterCollection.Add(string, DbType) overload. - - + - Adds a NpgsqlParameter to the NpgsqlParameterCollection given the parameter name and the data type. + Creates an NpgsqlSchema that can read schema information from the database. - The name of the parameter. - One of the DbType values. - The index of the new NpgsqlParameter object. + An open database connection for reading metadata. - + - Adds a NpgsqlParameter to the NpgsqlParameterCollection with the parameter name, the data type, and the column length. + Returns the MetaDataCollections that lists all possible collections. - The name of the parameter. - One of the DbType values. - The length of the column. - The index of the new NpgsqlParameter object. + The MetaDataCollections - + - Adds a NpgsqlParameter to the NpgsqlParameterCollection with the parameter name, the data type, the column length, and the source column name. + Returns the Restrictions that contains the meaning and position of the values in the restrictions array. - The name of the parameter. - One of the DbType values. - The length of the column. - The name of the source column. - The index of the new NpgsqlParameter object. + The Restrictions - + - Removes the specified NpgsqlParameter from the collection using the parameter name. + Returns the Databases that contains a list of all accessable databases. - The name of the NpgsqlParameter object to retrieve. + The restrictions to filter the collection. + The Databases - + - Gets a value indicating whether a NpgsqlParameter with the specified parameter name exists in the collection. + Returns the Tables that contains table and view names and the database and schema they come from. - The name of the NpgsqlParameter object to find. - true if the collection contains the parameter; otherwise, false. + The restrictions to filter the collection. + The Tables - + - Gets the location of the NpgsqlParameter in the collection with a specific parameter name. + Returns the Columns that contains information about columns in tables. - The name of the NpgsqlParameter object to find. - The zero-based location of the NpgsqlParameter in the collection. + The restrictions to filter the collection. + The Columns. - + - Removes the specified NpgsqlParameter from the collection using a specific index. + Returns the Views that contains view names and the database and schema they come from. - The zero-based index of the parameter. + The restrictions to filter the collection. + The Views - + - Inserts a NpgsqlParameter into the collection at the specified index. + Returns the Users containing user names and the sysid of those users. - The zero-based index where the parameter is to be inserted within the collection. - The NpgsqlParameter to add to the collection. + The restrictions to filter the collection. + The Users. - + + + This class represents a StartupPacket message of PostgreSQL + protocol. + + + + - Removes the specified NpgsqlParameter from the collection. + Represents a completed response message. - The NpgsqlParameter to remove from the collection. - + + + This class represents the Parse message sent to PostgreSQL + server. + + + + - Gets a value indicating whether a NpgsqlParameter exists in the collection. + Represents a transaction to be made in a PostgreSQL database. This class cannot be inherited. - The value of the NpgsqlParameter object to find. - true if the collection contains the NpgsqlParameter object; otherwise, false. - + - Gets a value indicating whether a NpgsqlParameter with the specified parameter name exists in the collection. + Commits the database transaction. - The name of the NpgsqlParameter object to find. - A reference to the requested parameter is returned in this out param if it is found in the list. This value is null if the parameter is not found. - true if the collection contains the parameter and param will contain the parameter; otherwise, false. - + - Removes all items from the collection. + Rolls back a transaction from a pending state. - + - Gets the location of a NpgsqlParameter in the collection. + Rolls back a transaction from a pending savepoint state. - The value of the NpgsqlParameter object to find. - The zero-based index of the NpgsqlParameter object in the collection. - + - Adds the specified NpgsqlParameter object to the NpgsqlParameterCollection. + Creates a transaction save point. - The NpgsqlParameter to add to the collection. - The zero-based index of the new NpgsqlParameter object. - + - Copies NpgsqlParameter objects from the NpgsqlParameterCollection to the specified array. + Cancel the transaction without telling the backend about it. This is + used to make the transaction go away when closing a connection. - An Array to which to copy the NpgsqlParameter objects in the collection. - The starting index of the array. - + - Returns an enumerator that can iterate through the collection. + Gets the NpgsqlConnection + object associated with the transaction, or a null reference if the + transaction is no longer valid. - An IEnumerator that can be used to iterate through the collection. + The NpgsqlConnection + object associated with the transaction. - + - In methods taking an object as argument this method is used to verify - that the argument has the type NpgsqlParameter + Specifies the IsolationLevel for this transaction. - The object to verify + The IsolationLevel for this transaction. + The default is ReadCommitted. - + - Gets the NpgsqlParameter with the specified name. - - The name of the NpgsqlParameter to retrieve. - The NpgsqlParameter with the specified name, or a null reference if the parameter is not found. + This class provides many util methods to handle + reading and writing of PostgreSQL protocol messages. + - + - Gets the NpgsqlParameter at the specified index. + This method takes a ProtocolVersion and returns an integer + version number that the Postgres backend will recognize in a + startup packet. + + + + + This method takes a version string as returned by SELECT VERSION() and returns + a valid version string ("7.2.2" for example). + This is only needed when running protocol version 2. + This does not do any validity checks. - The zero-based index of the NpgsqlParameter to retrieve. - The NpgsqlParameter at the specified index. - + - Gets the number of NpgsqlParameter objects in the collection. + This method gets a C NULL terminated string from the network stream. + It keeps reading a byte in each time until a NULL byte is returned. + It returns the resultant string of bytes read. + This string is sent from backend. + + + + + Reads requested number of bytes from stream with retries until Stream.Read returns 0 or count is reached. - The number of NpgsqlParameter objects in the collection. + Stream to read + byte buffer to fill + starting position to fill the buffer + number of bytes to read + The number of bytes read. May be less than count if no more bytes are available. - + - Represents an ongoing COPY FROM STDIN operation. - Provides methods to push data to server and end or cancel the operation. + This method writes a C NULL terminated string to the network stream. + It appends a NULL terminator to the end of the String. + + + This method writes a C NULL terminated string to the network stream. + It appends a NULL terminator to the end of the String. + + + + + This method writes a set of bytes to the stream. It also enables logging of them. - + - Called from NpgsqlState.ProcessBackendResponses upon CopyInResponse. - If CopyStream is already set, it is used to read data to push to server, after which the copy is completed. - Otherwise CopyStream is set to a writable NpgsqlCopyInStream that calls SendCopyData each time it is written to. + This method writes a C NULL terminated string limited in length to the + backend server. + It pads the string with null bytes to the size specified. + + + + + Write a 32-bit integer to the given stream in the correct byte order. - + - Sends given packet to server as a CopyData message. - Does not check for notifications! Use another thread for that. + Read a 32-bit integer from the given stream in the correct byte order. - + - Sends CopyDone message to server. Handles responses, ie. may throw an exception. + Write a 16-bit integer to the given stream in the correct byte order. - + - Sends CopyFail message to server. Handles responses, ie. should always throw an exception: - in CopyIn state the server responds to CopyFail with an error response; - outside of a CopyIn state the server responds to CopyFail with an error response; - without network connection or whatever, there's going to eventually be a failure, timeout or user intervention. + Read a 16-bit integer from the given stream in the correct byte order. - + - Copy format information returned from server. + Represent the frontend/backend protocol version. - + - Represents a PostgreSQL Point type + Represent the backend server version. + As this class offers no functionality beyond that offered by it has been + deprecated in favour of that class. + - + - Represents a PostgreSQL Line Segment type. + Returns the string representation of this version in three place dot notation (Major.Minor.Patch). - + - Represents a PostgreSQL Path type. + Server version major number. - + - Represents a PostgreSQL Polygon type. + Server version minor number. - + - Represents a PostgreSQL Circle type. + Server version patch level number. - + - Represents a PostgreSQL inet type. + A class to handle everything associated with SSPI authentication - + - This class represents a PasswordPacket message sent to backend - PostgreSQL. + Simplified SecBufferDesc struct with only one SecBuffer
diff --git a/packages/Npgsql.2.0.14.3/lib/net35/de/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net35/de/Npgsql.resources.dll new file mode 100644 index 000000000..ca5081266 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net35/de/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net35/es/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net35/es/Npgsql.resources.dll new file mode 100644 index 000000000..57db9adbd Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net35/es/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net35/fi/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net35/fi/Npgsql.resources.dll new file mode 100644 index 000000000..8778365bc Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net35/fi/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net35/fr/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net35/fr/Npgsql.resources.dll new file mode 100644 index 000000000..1acfefeb0 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net35/fr/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net35/ja/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net35/ja/Npgsql.resources.dll new file mode 100644 index 000000000..ac74f7af9 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net35/ja/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net35/zh-CN/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net35/zh-CN/Npgsql.resources.dll new file mode 100644 index 000000000..13b5c5d04 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net35/zh-CN/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net40/Mono.Security.dll b/packages/Npgsql.2.0.14.3/lib/net40/Mono.Security.dll new file mode 100644 index 000000000..1371f5cb6 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net40/Mono.Security.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net40/Npgsql.dll b/packages/Npgsql.2.0.14.3/lib/net40/Npgsql.dll new file mode 100644 index 000000000..593e3669d Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net40/Npgsql.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net40/Npgsql.pdb b/packages/Npgsql.2.0.14.3/lib/net40/Npgsql.pdb new file mode 100644 index 000000000..54dd00c6e Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net40/Npgsql.pdb differ diff --git a/packages/Npgsql.2.0.11/lib/Net11/Npgsql.XML b/packages/Npgsql.2.0.14.3/lib/net40/Npgsql.xml similarity index 82% rename from packages/Npgsql.2.0.11/lib/Net11/Npgsql.XML rename to packages/Npgsql.2.0.14.3/lib/net40/Npgsql.xml index 118645222..0f5dc5348 100644 --- a/packages/Npgsql.2.0.11/lib/Net11/Npgsql.XML +++ b/packages/Npgsql.2.0.14.3/lib/net40/Npgsql.xml @@ -4,1470 +4,1953 @@ Npgsql - + - This class represents a parameter to a command that will be sent to server + Handles serialisation of .NET array or IEnumeration to pg format. + Arrays of arrays, enumerations of enumerations, arrays of enumerations etc. + are treated as multi-dimensional arrays (in much the same manner as an array of arrays + is used to emulate multi-dimensional arrays in languages that lack native support for them). + If such an enumeration of enumerations is "jagged" (as opposed to rectangular, cuboid, + hypercuboid, hyperhypercuboid, etc) then this class will "correctly" serialise it, but pg + will raise an error as it doesn't allow jagged arrays. - + - Initializes a new instance of the NpgsqlParameter class. + Create an ArrayNativeToBackendTypeConverter with the element converter passed + The that would be used to serialise the element type. - + - Initializes a new instance of the NpgsqlParameter - class with the parameter m_Name and a value of the new NpgsqlParameter. + Serialise the enumeration or array. - The m_Name of the parameter to map. - An Object that is the value of the NpgsqlParameter. - -

When you specify an Object - in the value parameter, the DbType is - inferred from the .NET Framework type of the Object.

-

When using this constructor, you must be aware of a possible misuse of the constructor which takes a DbType parameter. - This happens when calling this constructor passing an int 0 and the compiler thinks you are passing a value of DbType. - Use Convert.ToInt32(value) for example to have compiler calling the correct constructor.

-
- + - Initializes a new instance of the NpgsqlParameter - class with the parameter m_Name and the data type. + Handles parsing of pg arrays into .NET arrays. - The m_Name of the parameter to map. - One of the DbType values. - + - Initializes a new instance of the NpgsqlParameter - class with the parameter m_Name, the DbType, and the size. + Takes a string representation of a pg 1-dimensional array + (or a 1-dimensional row within an n-dimensional array) + and allows enumeration of the string represenations of each items. - The m_Name of the parameter to map. - One of the DbType values. - The length of the parameter. - + - Initializes a new instance of the NpgsqlParameter - class with the parameter m_Name, the DbType, the size, - and the source column m_Name. + Takes a string representation of a pg n-dimensional array + and allows enumeration of the string represenations of the next + lower level of rows (which in turn can be taken as (n-1)-dimensional arrays. - The m_Name of the parameter to map. - One of the DbType values. - The length of the parameter. - The m_Name of the source column. - + - Initializes a new instance of the NpgsqlParameter - class with the parameter m_Name, the DbType, the size, - the source column m_Name, a ParameterDirection, - the precision of the parameter, the scale of the parameter, a - DataRowVersion to use, and the - value of the parameter. + Takes an ArrayList which may be an ArrayList of ArrayLists, an ArrayList of ArrayLists of ArrayLists + and so on and enumerates the items that aren't ArrayLists (the leaf nodes if we think of the ArrayList + passed as a tree). Simply uses the ArrayLists' own IEnumerators to get that of the next, + pushing them onto a stack until we hit something that isn't an ArrayList. + ArrayList to enumerate + IEnumerable - The m_Name of the parameter to map. - One of the DbType values. - The length of the parameter. - The m_Name of the source column. - One of the ParameterDirection values. - true if the value of the field can be null, otherwise false. - The total number of digits to the left and right of the decimal point to which - Value is resolved. - The total number of decimal places to which - Value is resolved. - One of the DataRowVersion values. - An Object that is the value - of the NpgsqlParameter. - + - Creates a new NpgsqlParameter that - is a copy of the current instance. + Create a new ArrayBackendToNativeTypeConverter - A new NpgsqlParameter that is a copy of this instance. + for the element type. - + - Gets or sets the maximum number of digits used to represent the - Value property. + Creates an array from pg representation. - The maximum number of digits used to represent the - Value property. - The default value is 0, which indicates that the data provider - sets the precision for Value. - + - Gets or sets the number of decimal places to which - Value is resolved. + Creates an array list from pg represenation of an array. + Multidimensional arrays are treated as ArrayLists of ArrayLists - The number of decimal places to which - Value is resolved. The default is 0. - + - Gets or sets the maximum size, in bytes, of the data within the column. + Creates an n-dimensional array from an ArrayList of ArrayLists or + a 1-dimensional array from something else. - The maximum size, in bytes, of the data within the column. - The default value is inferred from the parameter value. + to convert + produced. - + - Gets or sets the DbType of the parameter. + Takes an array of ints and treats them like the limits of a set of counters. + Retains a matching set of ints that is set to all zeros on the first ++ + On a ++ it increments the "right-most" int. If that int reaches it's + limit it is set to zero and the one before it is incremented, and so on. + + Making this a more general purpose class is pretty straight-forward, but we'll just put what we need here. - One of the DbType values. The default is String. - + - Gets or sets the DbType of the parameter. + Implements a bit string; a collection of zero or more bits which can each be 1 or 0. + BitString's behave as a list of bools, though like most strings and unlike most collections the position + tends to be of as much significance as the value. + BitStrings are often used as masks, and are commonly cast to and from other values. - One of the DbType values. The default is String. - + - Gets or sets a value indicating whether the parameter is input-only, - output-only, bidirectional, or a stored procedure return value parameter. + Represents the empty string. - One of the ParameterDirection - values. The default is Input. - + - Gets or sets a value indicating whether the parameter accepts null values. + Create a BitString from an enumeration of boolean values. The BitString will contain + those booleans in the order they came in. - true if null values are accepted; otherwise, false. The default is false. + The boolean values. - + - Gets or sets the m_Name of the NpgsqlParameter. + Creates a BitString filled with a given number of true or false values. - The m_Name of the NpgsqlParameter. - The default is an empty string. + The value to fill the string with. + The number of bits to fill. - + - The m_Name scrubbed of any optional marker + Creats a bitstring from a string. + The string to copy from. + - + - Gets or sets the m_Name of the source column that is mapped to the - DataSet and used for loading or - returning the Value. + Creates a single-bit element from a boolean value. - The m_Name of the source column that is mapped to the - DataSet. The default is an empty string. + The bool value which determines whether + the bit is 1 or 0. - + - Gets or sets the DataRowVersion - to use when loading Value. + Creates a bitstring from an unsigned integer value. The string will be the shortest required to + contain the integer (e.g. 1 bit for 0 or 1, 2 for 2 or 3, 3 for 4-7, and so on). - One of the DataRowVersion values. - The default is Current. + The integer. + This method is not CLS Compliant, and may not be available to some languages. - + - Gets or sets the value of the parameter. + Creates a bitstring from an integer value. The string will be the shortest required to + contain the integer (e.g. 1 bit for 0 or 1, 2 for 2 or 3, 3 for 4-7, and so on). - An Object that is the value of the parameter. - The default value is null. + The integer. - + - Gets or sets the value of the parameter. + Finds the first instance of a given value - An Object that is the value of the parameter. - The default value is null. - - - - This class represents the Parse message sent to PostgreSQL - server. - - + The value - whether true or false - to search for. + The index of the value found, or -1 if none are present. - + - For classes representing messages sent from the client to the server. + True if there is at least one bit with the value looked for. + The value - true or false - to detect. + True if at least one bit was the same as item, false otherwise. - + - Writes given objects into a stream for PostgreSQL COPY in default copy format (not CSV or BINARY). + Copies the bitstring to an array of bools. + The boolean array to copy to. + The index in the array to start copying from. - + - Return an exact copy of this NpgsqlConnectionString. + Returns an enumerator that enumerates through the string. + The enumerator. - + - This function will set value for known key, both private member and base[key]. + Creats a bitstring by concatenating another onto this one. - - + The string to append to this one. + The combined strings. - + - The function will modify private member only, not base[key]. + Returns a substring of this string. - - + The position to start from, must be between 0 and the length of the string. + The length of the string to return, must be greater than zero, and may not be + so large that the start + length exceeds the bounds of this instance. + The Bitstring identified - + - Clear the member and assign them to the default value. + Returns a substring of this string. + The position to start from, must be between 0 and the length of the string, + the rest of the string is returned. + The Bitstring identified - + - Compatibilty version. When possible, behaviour caused by breaking changes will be preserved - if this version is less than that where the breaking change was introduced. - - - - - Case insensative accessor for indivual connection string values. + A logical and between this string and another. The two strings must be the same length. + Another BitString to AND with this one. + A bitstring with 1 where both BitStrings had 1 and 0 otherwise. - + - Common base class for all derived MD5 implementations. + A logical or between this string and another. The two strings must be the same length. + Another BitString to OR with this one. + A bitstring with 1 where either BitString had 1 and 0 otherwise. - + - Called from constructor of derived class. + A logical xor between this string and another. The two strings must be the same length. + Another BitString to XOR with this one. + A bitstring with 1 where one BitStrings and the other had 0, + and 0 where they both had 1 or both had 0. - + - Finalizer for HashAlgorithm + A bitstring that is the logical inverse of this one. + A bitstring of the same length as this with 1 where this has 0 and vice-versa. - + - Computes the entire hash of all the bytes in the byte array. + Shifts the string operand bits to the left, filling with zeros to produce a + string of the same length. + The number of bits to shift to the left. + A left-shifted bitstring. + The behaviour of LShift is closer to what one would expect from dealing + with PostgreSQL bit-strings than in using the same operations on integers in .NET + In particular, negative operands result in a right-shift, and operands greater than + the length of the string will shift it entirely, resulting in a zero-filled string. + - + - When overridden in a derived class, drives the hashing function. + Shifts the string operand bits to the right, filling with zeros to produce a + string of the same length. - - - + The number of bits to shift to the right. + A right-shifted bitstring. + The behaviour of RShift is closer to what one would expect from dealing + with PostgreSQL bit-strings than in using the same operations on integers in .NET + In particular, negative operands result in a left-shift, and operands greater than + the length of the string will shift it entirely, resulting in a zero-filled string. It also performs + a logical shift, rather than an arithmetic shift, so it always sets the vacated bit positions to zero + (like PostgreSQL and like .NET for unsigned integers but not for signed integers). + - + - When overridden in a derived class, this pads and hashes whatever data might be left in the buffers and then returns the hash created. + Returns true if the this string is identical to the argument passed. - + - When overridden in a derived class, initializes the object to prepare for hashing. + Compares two strings. Strings are compared as strings, so while 0 being less than 1 will + mean a comparison between two strings of the same size is the same as treating them as numbers, + in the case of two strings of differing lengths the comparison starts at the right-most (most significant) + bit, and if all bits of the shorter string are exhausted without finding a comparison, then the larger + string is deemed to be greater than the shorter (0010 is greater than 0001 but less than 00100). + Another string to compare with this one. + A value if the two strings are identical, an integer less + than zero if this is less than the argument, and an integer greater + than zero otherwise. - + - Used for stream chaining. Computes hash as data passes through it. + Compares the string with another object. - The buffer from which to grab the data to be copied. - The offset into the input buffer to start reading at. - The number of bytes to be copied. - The buffer to write the copied data to. - At what point in the outputBuffer to write the data at. + The object to compare with. + If the object is null then this string is considered greater. If the object is another BitString + then they are compared as in the explicit comparison for BitStrings + in any other case a is thrown. - + - Used for stream chaining. Computes hash as data passes through it. Finishes off the hash. + Compares this BitString with an object for equality. - The buffer from which to grab the data to be copied. - The offset into the input buffer to start reading at. - The number of bytes to be copied. - + - Get whether or not the hash can transform multiple blocks at a time. - Note: MUST be overriden if descendant can transform multiple block - on a single call! + Returns a code for use in hashing operations. - + - Gets the previously computed hash. + Returns a string representation of the BitString. + + A string which can contain a letter and optionally a number which sets a minimum size for the string + returned. In each case using the lower-case form of the letter will result in a lower-case string + being returned. + + + B + A string of 1s and 0s. + + + X + An hexadecimal string (will result in an error unless the string's length is divisible by 4). + + + G + A string of 1s and 0s in single-quotes preceded by 'B' (Postgres bit string literal syntax). + + Y + An hexadecimal string in single-quotes preceded by 'X' (Postgres bit literal syntax, will result in an error unless the string's length is divisible by 4. + + C + The format produced by format-string "Y" if legal, otherwise that produced by format-string "G". + E + The most compact safe representation for Postgres. If single bit will be either a 0 or a 1. Otherwise if it + can be that produce by format string "Y" it will, otherwise if there are less than 9bits in length it will be that + produced by format-string "G". For longer strings that cannot be represented in hexadecimal it will be a string + representing the first part of the string in format "Y" followed by the PostgreSQL concatenation operator, followed + by the final bits in the format "G". E.g. "X'13DCE'||B'110'" + If format is empty or null, it is treated as if "B" had been passed (the default repreesentation, and that + generally used by PostgreSQL for display). + + The formatted string. - + - Returns the size in bits of the hash. + Returns a string representation for the Bitstring + A string containing '0' and '1' characters. - + - Must be overriden if not 1 + Returns the same string as . formatProvider is ignored. - + - Must be overriden if not 1 + Parses a string to produce a BitString. Most formats that can be produced by + can be accepted, but hexadecimal + can be interpreted with the preceding X' to mark the following characters as + being hexadecimal rather than binary. - + - Called from constructor of derived class. + Performs a logical AND on the two operands. - + - Creates the default derived class. + Performs a logcial OR on the two operands. - - - This class provides many util methods to handle - reading and writing of PostgreSQL protocol messages. - - - - - This method takes a ProtocolVersion and returns an integer - version number that the Postgres backend will recognize in a - startup packet. - - - + - This method takes a version string as returned by SELECT VERSION() and returns - a valid version string ("7.2.2" for example). - This is only needed when running protocol version 2. - This does not do any validity checks. + Perofrms a logical EXCLUSIVE-OR on the two operands - + - This method gets a C NULL terminated string from the network stream. - It keeps reading a byte in each time until a NULL byte is returned. - It returns the resultant string of bytes read. - This string is sent from backend. - + Performs a logical NOT on the operand. + - + - Reads requested number of bytes from stream with retries until Stream.Read returns 0 or count is reached. + Concatenates the operands. - Stream to read - byte buffer to fill - starting position to fill the buffer - number of bytes to read - The number of bytes read. May be less than count if no more bytes are available. - - - This method writes a C NULL terminated string to the network stream. - It appends a NULL terminator to the end of the String. - + - This method writes a C NULL terminated string to the network stream. - It appends a NULL terminator to the end of the String. - + Left-shifts the string BitString. + - + - This method writes a C NULL terminated string limited in length to the - backend server. - It pads the string with null bytes to the size specified. - + Right-shifts the string BitString. + - + - Write a 32-bit integer to the given stream in the correct byte order. + Compares the two operands. - + - Read a 32-bit integer from the given stream in the correct byte order. + Compares the two operands. - + - Write a 16-bit integer to the given stream in the correct byte order. + Compares the two operands. - + - Read a 16-bit integer from the given stream in the correct byte order. + Compares the two operands. - + - Represent the frontend/backend protocol version. + Compares the two operands. - + - Represent the backend server version. - As this class offers no functionality beyond that offered by it has been - deprecated in favour of that class. + Compares the two operands. - - + - Returns the string representation of this version in three place dot notation (Major.Minor.Patch). + Interprets the bitstring as a series of bits in an encoded character string, + encoded according to the Encoding passed, and returns that string. + The bitstring must contain a whole number of octets(bytes) and also be + valid according to the Encoding passed. + The to use in producing the string. + The string that was encoded in the BitString. - + - Server version major number. + Interprets the bitstring as a series of octets (bytes) and returns those octets. Fails + if the Bitstring does not contain a whole number of octets (its length is not evenly + divisible by 8). - + - Server version minor number. + Interprets the bitstring as a series of signed octets (bytes) and returns those octets. Fails + if the Bitstring does not contain a whole number of octets (its length is not evenly + divisible by 8). + This method is not CLS-Compliant and may not be available to languages that cannot + handle signed bytes. - + - Server version patch level number. + Interprets the bitstring as a series of unsigned 16-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 16. + This method is not CLS-Compliant and may not be available to languages that cannot + handle unsigned integers. - + - Represents a PostgreSQL COPY TO STDOUT operation with a corresponding SQL statement - to execute against a PostgreSQL database - and an associated stream used to write results to (if provided by user) - or for reading the results (when generated by driver). - Eg. new NpgsqlCopyOut("COPY (SELECT * FROM mytable) TO STDOUT", connection, streamToWrite).Start(); + Interprets the bitstring as a series of 16-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 16. - + - Creates NpgsqlCommand to run given query upon Start(), after which CopyStream provides data from database as requested in the query. + Interprets the bitstring as a series of unsigned 32-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 32. + This method is not CLS-Compliant and may not be available to languages that cannot + handle unsigned integers. - + - Given command is run upon Start(), after which CopyStream provides data from database as requested in the query. + Interprets the bitstring as a series of signed 32-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 32. - + - Given command is executed upon Start() and all requested copy data is written to toStream immediately. + Interprets the bitstring as a series of unsigned 64-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 64. + This method is not CLS-Compliant and may not be available to languages that cannot + handle unsigned integers. - + - Returns true if this operation is currently active and field at given location is in binary format. + Interprets the bitstring as a series of signed 64-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 64. - + - Command specified upon creation is executed as a non-query. - If CopyStream is set upon creation, all copy data from server will be written to it, and operation will be finished immediately. - Otherwise the CopyStream member can be used for reading copy data from server until no more data is available. + The length of the string. - + - Flush generated CopyStream at once. Effectively reads and discard all the rest of copy data from server. + Retrieves the value of the bit at the given index. - - - Returns true if the connection is currently reserved for this operation. + + + Represents the PostgreSQL interval datatype. + PostgreSQL differs from .NET in how it's interval type doesn't assume 24 hours in a day + (to deal with 23- and 25-hour days caused by daylight savings adjustments) and has a concept + of months that doesn't exist in .NET's class. (Neither datatype + has any concessions for leap-seconds). + For most uses just casting to and from TimeSpan will work correctly — in particular, + the results of subtracting one or the PostgreSQL date, time and + timestamp types from another should be the same whether you do so in .NET or PostgreSQL — + but if the handling of days and months in PostgreSQL is important to your application then you + should use this class instead of . + If you don't know whether these differences are important to your application, they + probably arent! Just use and do not use this class directly ☺ + To avoid forcing unnecessary provider-specific concerns on users who need not be concerned + with them a call to on a field containing an + value will return a rather than an + . If you need the extra functionality of + then use . + + + + + - + - The stream provided by user or generated upon Start() + Represents the number of ticks (100ns periods) in one microsecond. This field is constant. - + - The Command used to execute this copy operation. + Represents the number of ticks (100ns periods) in one millisecond. This field is constant. - + - Returns true if this operation is currently active and in binary format. + Represents the number of ticks (100ns periods) in one second. This field is constant. - + - Returns number of fields if this operation is currently active, otherwise -1 + Represents the number of ticks (100ns periods) in one minute. This field is constant. - + - Faster alternative to using the generated CopyStream. + Represents the number of ticks (100ns periods) in one hour. This field is constant. - + - This class manages all connector objects, pooled AND non-pooled. + Represents the number of ticks (100ns periods) in one day. This field is constant. - - Unique static instance of the connector pool - mamager. - - - Map of index to unused pooled connectors, avaliable to the - next RequestConnector() call. - This hashmap will be indexed by connection string. - This key will hold a list of queues of pooled connectors available to be used. - - - Timer for tracking unused connections in pools. - - + - Searches the shared and pooled connector lists for a - matching connector object or creates a new one. + Represents the number of hours in one day (assuming no daylight savings adjustments). This field is constant. - The NpgsqlConnection that is requesting - the connector. Its ConnectionString will be used to search the - pool for available connectors. - A connector object. - + - Find a pooled connector. Handle locking and timeout here. + Represents the number of days assumed in one month if month justification or unjustifcation is performed. + This is set to 30 for consistency with PostgreSQL. Note that this is means that month adjustments cause + a year to be taken as 30 × 12 = 360 rather than 356/366 days. - + - Find a pooled connector. Handle shared/non-shared here. + Represents the number of ticks (100ns periods) in one day, assuming 30 days per month. - + - Releases a connector, possibly back to the pool for future use. + Represents the number of months in a year. This field is constant. - - Pooled connectors will be put back into the pool if there is room. - Shared connectors should just have their use count decremented - since they always stay in the shared pool. - - The connector to release. - + - Release a pooled connector. Handle locking here. + Represents the maximum . This field is read-only. - + - Release a pooled connector. Handle shared/non-shared here. + Represents the minimum . This field is read-only. - + - Create a connector without any pooling functionality. + Represents the zero . This field is read-only. - + - Find an available pooled connector in the non-shared pool, or create - a new one if none found. + Initializes a new to the specified number of ticks. + A time period expressed in 100ns units. - + - This method is only called when NpgsqlConnection.Dispose(false) is called which means a - finalization. This also means, an NpgsqlConnection was leak. We clear pool count so that - client doesn't end running out of connections from pool. When the connection is finalized, its underlying - socket is closed. + Initializes a new to hold the same time as a + A time period expressed in a - + - Close the connector. + Initializes a new to the specified number of months, days + & ticks. - - Connector to release + Number of months. + Number of days. + Number of 100ns units. - + - Put a pooled connector into the pool queue. + Initializes a new to the specified number of + days, hours, minutes & seconds. - Connector to pool + Number of days. + Number of hours. + Number of minutes. + Number of seconds. - + - A queue with an extra Int32 for keeping track of busy connections. + Initializes a new to the specified number of + days, hours, minutes, seconds & milliseconds. + Number of days. + Number of hours. + Number of minutes. + Number of seconds. + Number of milliseconds. - + - The number of pooled Connectors that belong to this queue but - are currently in use. + Initializes a new to the specified number of + months, days, hours, minutes, seconds & milliseconds. + Number of months. + Number of days. + Number of hours. + Number of minutes. + Number of seconds. + Number of milliseconds. - + - This class represents a BackEndKeyData message received - from PostgreSQL + Initializes a new to the specified number of + years, months, days, hours, minutes, seconds & milliseconds. + Years are calculated exactly equivalent to 12 months. + Number of years. + Number of months. + Number of days. + Number of hours. + Number of minutes. + Number of seconds. + Number of milliseconds. - + - Used when a connection is closed + Creates an from a number of ticks. + The number of ticks (100ns units) in the interval. + A d with the given number of ticks. - + - Summary description for NpgsqlQuery + Creates an from a number of microseconds. + The number of microseconds in the interval. + A d with the given number of microseconds. - + - Represents the method that handles the Notice events. + Creates an from a number of milliseconds. - A NpgsqlNoticeEventArgs that contains the event data. + The number of milliseconds in the interval. + A d with the given number of milliseconds. - + - Represents the method that handles the Notification events. + Creates an from a number of seconds. - The source of the event. - A NpgsqlNotificationEventArgs that contains the event data. + The number of seconds in the interval. + A d with the given number of seconds. - + - This class represents a connection to a - PostgreSQL server. + Creates an from a number of minutes. + The number of minutes in the interval. + A d with the given number of minutes. - + - Initializes a new instance of the - NpgsqlConnection class. + Creates an from a number of hours. + The number of hours in the interval. + A d with the given number of hours. - + - Initializes a new instance of the - NpgsqlConnection class - and sets the ConnectionString. + Creates an from a number of days. - The connection used to open the PostgreSQL database. + The number of days in the interval. + A d with the given number of days. - + - Begins a database transaction with the specified isolation level. + Creates an from a number of months. - The isolation level under which the transaction should run. - An DbTransaction - object representing the new transaction. - - Currently the IsolationLevel ReadCommitted and Serializable are supported by the PostgreSQL backend. - There's no support for nested transactions. - + The number of months in the interval. + A d with the given number of months. - + - Begins a database transaction. + Adds another interval to this instance and returns the result. - A NpgsqlTransaction - object representing the new transaction. - - Currently there's no support for nested transactions. - + An to add to this instance. + An whose values are the sums of the two instances. - + - Begins a database transaction with the specified isolation level. + Subtracts another interval from this instance and returns the result. - The isolation level under which the transaction should run. - A NpgsqlTransaction - object representing the new transaction. - - Currently the IsolationLevel ReadCommitted and Serializable are supported by the PostgreSQL backend. - There's no support for nested transactions. - + An to subtract from this instance. + An whose values are the differences of the two instances. - + - Opens a database connection with the property settings specified by the - ConnectionString. + Returns an whose value is the negated value of this instance. + An whose value is the negated value of this instance. - + - This method changes the current database by disconnecting from the actual - database and connecting to the specified. + This absolute value of this instance. In the case of some, but not all, components being negative, + the rules used for justification are used to determine if the instance is positive or negative. - The name of the database to use in place of the current database. + An whose value is the absolute value of this instance. - + - Releases the connection to the database. If the connection is pooled, it will be - made available for re-use. If it is non-pooled, the actual connection will be shutdown. + Equivalent to PostgreSQL's justify_days function. + An based on this one, but with any hours outside of the range [-23, 23] + converted into days. - + - Creates and returns a DbCommand - object associated with the IDbConnection. + Opposite to PostgreSQL's justify_days function. - A DbCommand object. + An based on this one, but with any days converted to multiples of ±24hours. - + - Creates and returns a NpgsqlCommand - object associated with the NpgsqlConnection. + Equivalent to PostgreSQL's justify_months function. - A NpgsqlCommand object. + An based on this one, but with any days outside of the range [-30, 30] + converted into months. - + - Releases all resources used by the - NpgsqlConnection. + Opposite to PostgreSQL's justify_months function. - true when called from Dispose(); - false when being called from the finalizer. + An based on this one, but with any months converted to multiples of ±30days. - + - Create a new connection based on this one. + Equivalent to PostgreSQL's justify_interval function. - A new NpgsqlConnection object. + An based on this one, + but with any months converted to multiples of ±30days + and then with any days converted to multiples of ±24hours - + - Create a new connection based on this one. + Opposite to PostgreSQL's justify_interval function. - A new NpgsqlConnection object. + An based on this one, but with any months converted to multiples of ±30days and then any days converted to multiples of ±24hours; - + + - Default SSL CertificateSelectionCallback implementation. + Implicit cast of a to an + A + An eqivalent, canonical, . - + - Default SSL CertificateValidationCallback implementation. + Implicit cast of an to a . + A . + An equivalent . - + - Default SSL PrivateKeySelectionCallback implementation. + Returns true if another is exactly the same as this instance. + An for comparison. + true if the two instances are exactly the same, + false otherwise. - + - Default SSL ProvideClientCertificatesCallback implementation. + Returns true if another object is an , that is exactly the same as + this instance + An for comparison. + true if the argument is an and is exactly the same + as this one, false otherwise. - + - Write each key/value pair in the connection string to the log. + Compares two instances. + The first . + The second . + 0 if the two are equal or equivalent. A value greater than zero if x is greater than y, + a value less than zero if x is less than y. - + - Returns the supported collections + A hash code suitable for uses with hashing algorithms. + An signed integer. - + - Returns the schema collection specified by the collection name. + Compares this instance with another/ - The collection name. - The collection specified. + An to compare this with. + 0 if the instances are equal or equivalent. A value less than zero if + this instance is less than the argument. A value greater than zero if this instance + is greater than the instance. - + - Returns the schema collection specified by the collection name filtered by the restrictions. + Compares this instance with another/ - The collection name. - - The restriction values to filter the results. A description of the restrictions is contained - in the Restrictions collection. - - The collection specified. + An object to compare this with. + 0 if the argument is an and the instances are equal or equivalent. + A value less than zero if the argument is an and + this instance is less than the argument. + A value greater than zero if the argument is an and this instance + is greater than the instance. + A value greater than zero if the argument is null. + The argument is not an . - + - Occurs on NoticeResponses from the PostgreSQL backend. + Parses a and returns a instance. + Designed to use the formats generally returned by PostgreSQL. + The to parse. + An represented by the argument. + The string was null. + A value obtained from parsing the string exceeded the values allowed for the relevant component. + The string was not in a format that could be parsed to produce an . - + - Occurs on NotificationResponses from the PostgreSQL backend. + Attempt to parse a to produce an . + The to parse. + (out) The produced, or if the parsing failed. + true if the parsing succeeded, false otherwise. - + - Called to provide client certificates for SSL handshake. + Create a representation of the instance. + The format returned is of the form: + [M mon[s]] [d day[s]] [HH:mm:ss[.f[f[f[f[f[f[f[f[f]]]]]]]]]] + A zero is represented as 00:00:00 + + Ticks are 100ns, Postgress resolution is only to 1µs at most. Hence we lose 1 or more decimal + precision in storing values in the database. Despite this, this method will output that extra + digit of precision. It's forward-compatible with any future increases in resolution up to 100ns, + and also makes this ToString() more applicable to any other use-case. + + The representation. - + - Mono.Security.Protocol.Tls.CertificateSelectionCallback delegate. + Adds two together. + The first to add. + The second to add. + An whose values are the sum of the arguments. - + - Mono.Security.Protocol.Tls.CertificateValidationCallback delegate. + Subtracts one from another. + The to subtract the other from. + The to subtract from the other. + An whose values are the difference of the arguments - + - Mono.Security.Protocol.Tls.PrivateKeySelectionCallback delegate. + Returns true if two are exactly the same. + The first to compare. + The second to compare. + true if the two arguments are exactly the same, false otherwise. - + - Gets or sets the string used to connect to a PostgreSQL database. - Valid values are: -
    -
  • - Server: Address/Name of Postgresql Server; -
  • -
  • - Port: Port to connect to; -
  • -
  • - Protocol: Protocol version to use, instead of automatic; Integer 2 or 3; -
  • -
  • - Database: Database name. Defaults to user name if not specified; -
  • -
  • - User Id: User name; -
  • -
  • - Password: Password for clear text authentication; -
  • -
  • - SSL: True or False. Controls whether to attempt a secure connection. Default = False; -
  • -
  • - Pooling: True or False. Controls whether connection pooling is used. Default = True; -
  • -
  • - MinPoolSize: Min size of connection pool; -
  • -
  • - MaxPoolSize: Max size of connection pool; -
  • -
  • - Timeout: Time to wait for connection open in seconds. Default is 15. -
  • -
  • - CommandTimeout: Time to wait for command to finish execution before throw an exception. In seconds. Default is 20. -
  • -
  • - Sslmode: Mode for ssl connection control. Can be Prefer, Require, Allow or Disable. Default is Disable. Check user manual for explanation of values. -
  • -
  • - ConnectionLifeTime: Time to wait before closing unused connections in the pool in seconds. Default is 15. -
  • -
  • - SyncNotification: Specifies if Npgsql should use synchronous notifications. -
  • -
  • - SearchPath: Changes search path to specified and public schemas. -
  • -
+ Returns false if two are exactly the same.
- The connection string that includes the server name, - the database name, and other parameters needed to establish - the initial connection. The default value is an empty string. - + The first to compare. + The second to compare. + false if the two arguments are exactly the same, true otherwise.
- + - Backend server host name. + Compares two instances to see if the first is less than the second + The first to compare. + The second to compare. + true if the first is less than second, false otherwise. - + - Backend server port. + Compares two instances to see if the first is less than or equivalent to the second + The first to compare. + The second to compare. + true if the first is less than or equivalent to second, false otherwise. - + - If true, the connection will attempt to use SSL. + Compares two instances to see if the first is greater than the second + The first to compare. + The second to compare. + true if the first is greater than second, false otherwise. - + - Gets the time to wait while trying to establish a connection - before terminating the attempt and generating an error. + Compares two instances to see if the first is greater than or equivalent the second - The time (in seconds) to wait for a connection to open. The default value is 15 seconds. + The first to compare. + The second to compare. + true if the first is greater than or equivalent to the second, false otherwise. - + - Gets the time to wait while trying to execute a command - before terminating the attempt and generating an error. + Returns the instance. - The time (in seconds) to wait for a command to complete. The default value is 20 seconds. + An . + The argument. - + - Gets the time to wait before closing unused connections in the pool if the count - of all connections exeeds MinPoolSize. + Negates an instance. - - If connection pool contains unused connections for ConnectionLifeTime seconds, - the half of them will be closed. If there will be unused connections in a second - later then again the half of them will be closed and so on. - This strategy provide smooth change of connection count in the pool. + An . + The negation of the argument. + + + + The total number of ticks(100ns units) contained. This is the resolution of the + type. This ignores the number of days and + months held. If you want them included use first. + The resolution of the PostgreSQL + interval type is by default 1µs = 1,000 ns. It may be smaller as follows: + + + interval(0) + resolution of 1s (1 second) + + + interval(1) + resolution of 100ms = 0.1s (100 milliseconds) + + + interval(2) + resolution of 10ms = 0.01s (10 milliseconds) + + + interval(3) + resolution of 1ms = 0.001s (1 millisecond) + + + interval(4) + resolution of 100µs = 0.0001s (100 microseconds) + + + interval(5) + resolution of 10µs = 0.00001s (10 microseconds) + + + interval(6) or interval + resolution of 1µs = 0.000001s (1 microsecond) + + + As such, if the 100-nanosecond resolution is significant to an application, a PostgreSQL interval will + not suffice for those purposes. + In more frequent cases though, the resolution of the interval suffices. + will always suffice to handle the resolution of any interval value, and upon + writing to the database, will be rounded to the resolution used. - The time (in seconds) to wait. The default value is 15 seconds. + The number of ticks in the instance. + - + - Gets the name of the current database or the database to be used after a connection is opened. - - The name of the current database or the name of the database to be - used after a connection is opened. The default value is the empty string. + Gets the number of whole microseconds held in the instance. + An in the range [-999999, 999999]. +
- + - Whether datareaders are loaded in their entirety (for compatibility with earlier code). + Gets the number of whole milliseconds held in the instance. + An in the range [-999, 999]. - + - Gets the database server name. + Gets the number of whole seconds held in the instance. + An in the range [-59, 59]. - + - Gets flag indicating if we are using Synchronous notification or not. - The default value is false. + Gets the number of whole minutes held in the instance. + An in the range [-59, 59]. - + - Gets the current state of the connection. + Gets the number of whole hours held in the instance. + Note that this can be less than -23 or greater than 23 unless + has been used to produce this instance. - A bitwise combination of the ConnectionState values. The default is Closed. - + - Gets whether the current state of the connection is Open or Closed + Gets the number of days held in the instance. + Note that this does not pay attention to a time component with -24 or less hours or + 24 or more hours, unless has been called to produce this instance. - ConnectionState.Open or ConnectionState.Closed - + - Version of the PostgreSQL backend. - This can only be called when there is an active connection. + Gets the number of months held in the instance. + Note that this does not pay attention to a day component with -30 or less days or + 30 or more days, unless has been called to produce this instance. - + - Protocol version in use. - This can only be called when there is an active connection. + Returns a representing the time component of the instance. + Note that this may have a value beyond the range ±23:59:59.9999999 unless + has been called to produce this instance. - + - Process id of backend server. - This can only be called when there is an active connection. + The total number of ticks (100ns units) in the instance, assuming 24 hours in each day and + 30 days in a month. - + - The connector object connected to the backend. + The total number of microseconds in the instance, assuming 24 hours in each day and + 30 days in a month. - + - Gets the NpgsqlConnectionStringBuilder containing the parsed connection string values. + The total number of milliseconds in the instance, assuming 24 hours in each day and + 30 days in a month. - + - User name. + The total number of seconds in the instance, assuming 24 hours in each day and + 30 days in a month. - + - Password. + The total number of minutes in the instance, assuming 24 hours in each day and + 30 days in a month. - + - Determine if connection pooling will be used for this connection. + The total number of hours in the instance, assuming 24 hours in each day and + 30 days in a month. - - - This class represents the CancelRequest message sent to PostgreSQL - server. - - + + + The total number of days in the instance, assuming 24 hours in each day and + 30 days in a month. + - - - - - - - - - - - - - - - - A time period expressed in 100ns units. + + + The total number of months in the instance, assuming 24 hours in each day and + 30 days in a month. + - - A time period expressed in a + + + Normalise this time; if it is 24:00:00, convert it to 00:00:00 + + This time, normalised - - Number of 100ns units. + + + The total number of ticks(100ns units) contained. This is the resolution of the + type. + The resolution of the PostgreSQL + interval type is by default 1µs = 1,000 ns. It may be smaller as follows: + + + time(0) + resolution of 1s (1 second) + + + time(1) + resolution of 100ms = 0.1s (100 milliseconds) + + + time(2) + resolution of 10ms = 0.01s (10 milliseconds) + + + time(3) + resolution of 1ms = 0.001s (1 millisecond) + + + time(4) + resolution of 100µs = 0.0001s (100 microseconds) + + + time(5) + resolution of 10µs = 0.00001s (10 microseconds) + + + time(6) or interval + resolution of 1µs = 0.000001s (1 microsecond) + + + As such, if the 100-nanosecond resolution is significant to an application, a PostgreSQL time will + not suffice for those purposes. + In more frequent cases though, the resolution of time suffices. + will always suffice to handle the resolution of any time value, and upon + writing to the database, will be rounded to the resolution used. + + The number of ticks in the instance. + - - Number of seconds. + + + Gets the number of whole microseconds held in the instance. + An integer in the range [0, 999999]. + - - Number of milliseconds. + + + Gets the number of whole milliseconds held in the instance. + An integer in the range [0, 999]. + - - Number of milliseconds. + + + Gets the number of whole seconds held in the instance. + An interger in the range [0, 59]. + - - Number of milliseconds. + + + Gets the number of whole minutes held in the instance. + An integer in the range [0, 59]. + - - A d with the given number of ticks. + + + Gets the number of whole hours held in the instance. + Note that the time 24:00:00 can be stored for roundtrip compatibility. Any calculations on such a + value will normalised it to 00:00:00. + - - A d with the given number of microseconds. + + + Normalise this time; if it is 24:00:00, convert it to 00:00:00 + + This time, normalised - - A d with the given number of milliseconds. + + + Compares this with another . As per postgres' rules, + first the times are compared as if they were both in the same timezone. If they are equal then + then timezones are compared (+01:00 being "smaller" than -01:00). + + the to compare with. + An integer which is 0 if they are equal, < 0 if this is the smaller and > 0 if this is the larger. - - A d with the given number of seconds. + + + Gets the number of whole microseconds held in the instance. + An integer in the range [0, 999999]. + - - A d with the given number of minutes. + + + Gets the number of whole milliseconds held in the instance. + An integer in the range [0, 999]. + - - A d with the given number of hours. + + + Gets the number of whole seconds held in the instance. + An interger in the range [0, 59]. + - - A d with the given number of days. + + + Gets the number of whole minutes held in the instance. + An integer in the range [0, 59]. + - - A d with the given number of months. + + + Gets the number of whole hours held in the instance. + Note that the time 24:00:00 can be stored for roundtrip compatibility. Any calculations on such a + value will normalised it to 00:00:00. + - - An whose values are the sums of the two instances. + + + Summary description for LargeObjectManager. + - - An whose values are the differences of the two instances. + + + Provide event handlers to convert all native supported basic data types from their backend + text representation to a .NET object. + - - An whose value is the negated value of this instance. + + + Binary data. + - - An whose value is the absolute value of this instance. + + + Convert a postgresql boolean to a System.Boolean. + - - - An based on this one, but with any days converted to multiples of ±24hours. + + + Convert a postgresql bit to a System.Boolean. + - - - An based on this one, but with any months converted to multiples of ±30days. + + + Convert a postgresql datetime to a System.DateTime. + - - - An based on this one, but with any months converted to multiples of ±30days and then any days converted to multiples of ±24hours; + + + Convert a postgresql date to a System.DateTime. + - - - An eqivalent, canonical, . + + + Convert a postgresql time to a System.DateTime. + - - An equivalent . + + + Convert a postgresql money to a System.Decimal. + - - - - - An signed integer. + + + Provide event handlers to convert the basic native supported data types from + native form to backend representation. + - - - The argument is not an . + + + Binary data. + - - The string was not in a format that could be parsed to produce an . + + + Convert to a postgresql boolean. + - - true if the parsing succeeded, false otherwise. + + + Convert to a postgresql bit. + - - The representation. + + + Convert to a postgresql timestamp. + - - An whose values are the sum of the arguments. + + + Convert to a postgresql date. + - - An whose values are the difference of the arguments + + + Convert to a postgresql time. + - - true if the two arguments are exactly the same, false otherwise. + + + Convert to a postgres money. + - - false if the two arguments are exactly the same, true otherwise. + + + Convert to a postgres double with maximum precision. + - - true if the first is less than second, false otherwise. + + + Provide event handlers to convert extended native supported data types from their backend + text representation to a .NET object. + - - true if the first is less than or equivalent to second, false otherwise. + + + Convert a postgresql point to a System.NpgsqlPoint. + - - true if the first is greater than second, false otherwise. + + + Convert a postgresql point to a System.RectangleF. + - - true if the first is greater than or equivalent to the second, false otherwise. + + + LDeg. + - - The argument. + + + Path. + - - The negation of the argument. + + + Polygon. + - - - - - - - - - - - - - - - - - - - This time, normalised + + + Circle. + - - - - - - - - This time, normalised + + + Inet. + - - An integer which is 0 if they are equal, < 0 if this is the smaller and > 0 if this is the larger. + + + MAC Address. + - - - - - - + - A class to handle everything associated with SSPI authentication + interval - + - Simplified SecBufferDesc struct with only one SecBuffer + Provide event handlers to convert extended native supported data types from + native form to backend representation. - - - This class represents the Parse message sent to PostgreSQL - server. - - + + + Point. + - + - EventArgs class to send Notice parameters, which are just NpgsqlError's in a lighter context. + Box. - + - Notice information. + LSeg. - + - This class represents the ErrorResponse and NoticeResponse - message sent from PostgreSQL server. + Open path. + + + + + Polygon. + + + + + Convert to a postgres MAC Address. + + + + + Circle. + + + + + Convert to a postgres inet. + + + + + Convert to a postgres interval + + + + + Represents a PostgreSQL Point type + + + + + Represents a PostgreSQL Line Segment type. + + + + + Represents a PostgreSQL Path type. + + + + + Represents a PostgreSQL Polygon type. + + + + + Represents a PostgreSQL Circle type. + + + + + Represents a PostgreSQL inet type. + + + + + Represents a PostgreSQL MacAddress type. + + + + + + + The macAddr parameter must contain a string that can only consist of numbers + and upper-case letters as hexadecimal digits. (See PhysicalAddress.Parse method on MSDN) + + + + This class contains helper methods for type conversion between + the .Net type system and postgresql. + + + + + A cache of basic datatype mappings keyed by server version. This way we don't + have to load the basic type mappings for every connection. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given NpgsqlDbType. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given NpgsqlDbType. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given DbType. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given System.Type. + + + + + This method is responsible to convert the string received from the backend + to the corresponding NpgsqlType. + The given TypeInfo is called upon to do the conversion. + If no TypeInfo object is provided, no conversion is performed. + + + + + Create the one and only native to backend type map. + This map is used when formatting native data + types to backend representations. + + + + + This method creates (or retrieves from cache) a mapping between type and OID + of all natively supported postgresql data types. + This is needed as from one version to another, this mapping can be changed and + so we avoid hardcoding them. + + NpgsqlTypeMapping containing all known data types. The mapping must be + cloned before it is modified because it is cached; changes made by one connection may + effect another connection. + + + + Attempt to map types by issuing a query against pg_type. + This function takes a list of NpgsqlTypeInfo and attempts to resolve the OID field + of each by querying pg_type. If the mapping is found, the type info object is + updated (OID) and added to the provided NpgsqlTypeMapping object. + + NpgsqlConnector to send query through. + Mapping object to add types too. + List of types that need to have OID's mapped. + + + + Delegate called to convert the given backend data to its native representation. + + + + + Delegate called to convert the given native data to its backand representation. + + + + + Represents a backend data type. + This class can be called upon to convert a backend field representation to a native object. + + + + + Construct a new NpgsqlTypeInfo with the given attributes and conversion handlers. + + Type OID provided by the backend server. + Type name provided by the backend server. + NpgsqlDbType + System type to convert fields of this type to. + Data conversion handler. + + + + Perform a data conversion from a backend representation to + a native object. + + Data sent from the backend. + Type modifier field sent from the backend. + + + + Type OID provided by the backend server. + + + + + Type name provided by the backend server. + + + + + NpgsqlDbType. + + + + + NpgsqlDbType. + + + + + Provider type to convert fields of this type to. + + + + + System type to convert fields of this type to. + + + + + Represents a backend data type. + This class can be called upon to convert a native object to its backend field representation, + + + + + Returns an NpgsqlNativeTypeInfo for an array where the elements are of the type + described by the NpgsqlNativeTypeInfo supplied. + + + + + Construct a new NpgsqlTypeInfo with the given attributes and conversion handlers. + + Type name provided by the backend server. + NpgsqlDbType + Data conversion handler. + + + + Perform a data conversion from a native object to + a backend representation. + DBNull and null values are handled differently depending if a plain query is used + When + + Native .NET object to be converted. + Flag indicating if the conversion has to be done for + plain queries or extended queries + + + + Type name provided by the backend server. + + + + + NpgsqlDbType. + + + + + DbType. + + + + + Apply quoting. + + + + + Use parameter size information. + + + + + Provide mapping between type OID, type name, and a NpgsqlBackendTypeInfo object that represents it. + + + + + Construct an empty mapping. + + + + + Copy constuctor. + + + + + Add the given NpgsqlBackendTypeInfo to this mapping. + + + + + Add a new NpgsqlBackendTypeInfo with the given attributes and conversion handlers to this mapping. + + Type OID provided by the backend server. + Type name provided by the backend server. + NpgsqlDbType + System type to convert fields of this type to. + Data conversion handler. + + + + Make a shallow copy of this type mapping. + + + + + Determine if a NpgsqlBackendTypeInfo with the given backend type OID exists in this mapping. + + + + + Determine if a NpgsqlBackendTypeInfo with the given backend type name exists in this mapping. + + + + + Get the number of type infos held. + + + + + Retrieve the NpgsqlBackendTypeInfo with the given backend type OID, or null if none found. + + + + + Retrieve the NpgsqlBackendTypeInfo with the given backend type name, or null if none found. + + + + + Provide mapping between type Type, NpgsqlDbType and a NpgsqlNativeTypeInfo object that represents it. + + + + + Add the given NpgsqlNativeTypeInfo to this mapping. + + + + + Add a new NpgsqlNativeTypeInfo with the given attributes and conversion handlers to this mapping. + Type name provided by the backend server. + NpgsqlDbType + Data conversion handler. - + - Return a string representation of this error object. + Retrieve the NpgsqlNativeTypeInfo with the given NpgsqlDbType. - + - Severity code. All versions. + Retrieve the NpgsqlNativeTypeInfo with the given DbType. - + - Error code. PostgreSQL 7.4 and up. + Retrieve the NpgsqlNativeTypeInfo with the given Type. - + - Terse error message. All versions. + Determine if a NpgsqlNativeTypeInfo with the given backend type name exists in this mapping. - + - Detailed error message. PostgreSQL 7.4 and up. + Determine if a NpgsqlNativeTypeInfo with the given NpgsqlDbType exists in this mapping. - + - Suggestion to help resolve the error. PostgreSQL 7.4 and up. + Determine if a NpgsqlNativeTypeInfo with the given Type name exists in this mapping. - + - Position (one based) within the query string where the error was encounterd. PostgreSQL 7.4 and up. + Get the number of type infos held. - + - Position (one based) within the query string where the error was encounterd. This position refers to an internal command executed for example inside a PL/pgSQL function. PostgreSQL 7.4 and up. + Given a join expression and a projection, fetch all columns in the projection + that reference columns in the join. - + - Internal query string where the error was encounterd. This position refers to an internal command executed for example inside a PL/pgSQL function. PostgreSQL 7.4 and up. + Given an InputExpression append all from names (including nested joins) to the list. - + - Trace back information. PostgreSQL 7.4 and up. + Get new ColumnExpression that will be used in projection that had it's existing columns moved. + These should be simple references to the inner column - + - Source file (in backend) reporting the error. PostgreSQL 7.4 and up. + Every property accessed in the list of columns must be adjusted for a new scope - + - Source file line number (in backend) reporting the error. PostgreSQL 7.4 and up. + Set Cache Size. The default value is 20. - + - Source routine (in backend) reporting the error. PostgreSQL 7.4 and up. + Lookup cached entity. null will returned if not match. + For both get{} and set{} apply LRU rule. + key + - + - String containing the sql sent which produced this error. + Called from constructor of derived class. - + - Backend protocol version in use. + Finalizer for HashAlgorithm - + - Represents an ongoing COPY TO STDOUT operation. - Provides methods to read data from server or end the operation. + Computes the entire hash of all the bytes in the byte array. - - This class represents the base class for the state pattern design pattern - implementation. - - - - + - This method is used by the states to change the state of the context. - + When overridden in a derived class, drives the hashing function. + + + + - + - This method is responsible to handle all protocol messages sent from the backend. - It holds all the logic to do it. - To exchange data, it uses a Mediator object from which it reads/writes information - to handle backend requests. - - + When overridden in a derived class, this pads and hashes whatever data might be left in the buffers and then returns the hash created. + - + - This method is responsible to handle all protocol messages sent from the backend. - It holds all the logic to do it. - To exchange data, it uses a Mediator object from which it reads/writes information - to handle backend requests. - - + When overridden in a derived class, initializes the object to prepare for hashing. + - + - Called from NpgsqlState.ProcessBackendResponses upon CopyOutResponse. - If CopyStream is already set, it is used to write data received from server, after which the copy ends. - Otherwise CopyStream is set to a readable NpgsqlCopyOutStream that receives data from server. + Used for stream chaining. Computes hash as data passes through it. + The buffer from which to grab the data to be copied. + The offset into the input buffer to start reading at. + The number of bytes to be copied. + The buffer to write the copied data to. + At what point in the outputBuffer to write the data at. - + - Called from NpgsqlOutStream.Read to read copy data from server. + Used for stream chaining. Computes hash as data passes through it. Finishes off the hash. + The buffer from which to grab the data to be copied. + The offset into the input buffer to start reading at. + The number of bytes to be copied. - + - Copy format information returned from server. + Get whether or not the hash can transform multiple blocks at a time. + Note: MUST be overriden if descendant can transform multiple block + on a single call! - + - Handles serialisation of .NET array or IEnumeration to pg format. - Arrays of arrays, enumerations of enumerations, arrays of enumerations etc. - are treated as multi-dimensional arrays (in much the same manner as an array of arrays - is used to emulate multi-dimensional arrays in languages that lack native support for them). - If such an enumeration of enumerations is "jagged" (as opposed to rectangular, cuboid, - hypercuboid, hyperhypercuboid, etc) then this class will "correctly" serialise it, but pg - will raise an error as it doesn't allow jagged arrays. + Gets the previously computed hash. - + - Create an ArrayNativeToBackendTypeConverter with the element converter passed + Returns the size in bits of the hash. - The that would be used to serialise the element type. - + - Serialise the enumeration or array. + Must be overriden if not 1 - + - Handles parsing of pg arrays into .NET arrays. + Must be overriden if not 1 - + - Takes a string representation of a pg 1-dimensional array - (or a 1-dimensional row within an n-dimensional array) - and allows enumeration of the string represenations of each items. + Common base class for all derived MD5 implementations. - + - Takes a string representation of a pg n-dimensional array - and allows enumeration of the string represenations of the next - lower level of rows (which in turn can be taken as (n-1)-dimensional arrays. + Called from constructor of derived class. - + - Takes an ArrayList which may be an ArrayList of ArrayLists, an ArrayList of ArrayLists of ArrayLists - and so on and enumerates the items that aren't ArrayLists (the leaf nodes if we think of the ArrayList - passed as a tree). Simply uses the ArrayLists' own IEnumerators to get that of the next, - pushing them onto a stack until we hit something that isn't an ArrayList. - ArrayList to enumerate - IEnumerable + Creates the default derived class. - + - Create a new ArrayBackendToNativeTypeConverter + C# implementation of the MD5 cryptographic hash function. - for the element type. - + - Creates an array from pg representation. + Creates a new MD5CryptoServiceProvider. - + - Creates an array list from pg represenation of an array. - Multidimensional arrays are treated as ArrayLists of ArrayLists + Drives the hashing function. + Byte array containing the data to hash. + Where in the input buffer to start. + Size in bytes of the data in the buffer to hash. - + - Creates an n-dimensional array from an ArrayList of ArrayLists or - a 1-dimensional array from something else. + This finalizes the hash. Takes the data from the chaining variables and returns it. - to convert - produced. - + - Takes an array of ints and treats them like the limits of a set of counters. - Retains a matching set of ints that is set to all zeros on the first ++ - On a ++ it increments the "right-most" int. If that int reaches it's - limit it is set to zero and the one before it is incremented, and so on. - - Making this a more general purpose class is pretty straight-forward, but we'll just put what we need here. + Resets the class after use. Called automatically after hashing is done. - - - This class represents the ParameterStatus message sent from PostgreSQL - server. - - - - + - This class is responsible for serving as bridge between the backend - protocol handling and the core classes. It is used as the mediator for - exchanging data generated/sent from/to backend. - - + This is the meat of the hash function. It is what processes each block one at a time. + + Byte array to process data from. + Where in the byte array to start processing. - + - This class is responsible to create database commands for automatic insert, update and delete operations. + Pads and then processes the final block. + Buffer to grab data from. + Position in buffer in bytes to get data from. + How much data in bytes in the buffer to use. - + - - This method is reponsible to derive the command parameter list with values obtained from function definition. - It clears the Parameters collection of command. Also, if there is any parameter type which is not supported by Npgsql, an InvalidOperationException will be thrown. - Parameters name will be parameter1, parameter2, ... - For while, only parameter name and NpgsqlDbType are obtained. + Implements for version 3 of the protocol. - NpgsqlCommand whose function parameters will be obtained. - + - Represents a completed response message. + Reads a row, field by field, allowing a DataRow to be built appropriately. - Marker interface which identifies a class which may take possession of a stream for the duration of @@ -1479,2578 +1962,2743 @@ we can't make that inherit from this interface, alas. - + + - The exception that is thrown when the PostgreSQL backend reports errors. + Reads part of a field, as needed (for + and - + - Construct a backend error exception based on a list of one or more - backend errors. The basic Exception.Message will be built from the - first (usually the only) error in the list. + Adds further functionality to stream that is dependant upon the type of data read. - + - Format a .NET style exception string. - Include all errors in the list, including any hints. + Completes the implementation of Streamer for char data. + + + + + Completes the implementation of Streamer for byte data. - + - Append a line to the given Stream, first checking for zero-length. + Implements for version 2 of the protocol. - + - Provide access to the entire list of errors provided by the PostgreSQL backend. + Encapsulates the null mapping bytes sent at the start of a version 2 + datarow message, and the process of identifying the nullity of the data + at a particular index - + - Severity code. All versions. + This class represents a BackEndKeyData message received + from PostgreSQL - + + + This class represents the Bind message sent to PostgreSQL + server. + + + + - Error code. PostgreSQL 7.4 and up. + For classes representing messages sent from the client to the server. - + + + This class represents the CancelRequest message sent to PostgreSQL + server. + + + + + This class represents the base class for the state pattern design pattern + implementation. + + + + - Basic error message. All versions. - + This method is used by the states to change the state of the context. + - + - Detailed error message. PostgreSQL 7.4 and up. - + This method is responsible to handle all protocol messages sent from the backend. + It holds all the logic to do it. + To exchange data, it uses a Mediator object from which it reads/writes information + to handle backend requests. + + - + - Suggestion to help resolve the error. PostgreSQL 7.4 and up. - + This method is responsible to handle all protocol messages sent from the backend. + It holds all the logic to do it. + To exchange data, it uses a Mediator object from which it reads/writes information + to handle backend requests. + + - + - Position (one based) within the query string where the error was encounterd. PostgreSQL 7.4 and up. + Checks for context socket availability. + Socket.Poll supports integer as microseconds parameter. + This limits the usable command timeout value + to 2,147 seconds: (2,147 x 1,000,000 less than max_int). + In order to bypass this limit, the availability of + the socket is checked in 2,147 seconds cycles + true, if for context socket availability was checked, false otherwise. + Context. + Select mode. - + - Trace back information. PostgreSQL 7.4 and up. + Resolve a host name or IP address. + This is needed because if you call Dns.Resolve() with an IP address, it will attempt + to resolve it as a host name, when it should just convert it to an IP address. + - + - Source file (in backend) reporting the error. PostgreSQL 7.4 and up. + Represents a SQL statement or function (stored procedure) to execute + against a PostgreSQL database. This class cannot be inherited. - + - Source file line number (in backend) reporting the error. PostgreSQL 7.4 and up. + Initializes a new instance of the NpgsqlCommand class. - + - Source routine (in backend) reporting the error. PostgreSQL 7.4 and up. + Initializes a new instance of the NpgsqlCommand class with the text of the query. + The text of the query. - + - String containing the sql sent which produced this error. + Initializes a new instance of the NpgsqlCommand class with the text of the query and a NpgsqlConnection. + The text of the query. + A NpgsqlConnection that represents the connection to a PostgreSQL server. - + - Returns the entire list of errors provided by the PostgreSQL backend. + Initializes a new instance of the NpgsqlCommand class with the text of the query, a NpgsqlConnection, and the NpgsqlTransaction. + The text of the query. + A NpgsqlConnection that represents the connection to a PostgreSQL server. + The NpgsqlTransaction in which the NpgsqlCommand executes. - + - The level of verbosity of the NpgsqlEventLog + Used to execute internal commands. - + - Don't log at all + Attempts to cancel the execution of a NpgsqlCommand. + This Method isn't implemented yet. - + - Only log the most common issues + Create a new command based on this one. + A new NpgsqlCommand object. - + - Log everything + Create a new command based on this one. + A new NpgsqlCommand object. - + - This class handles all the Npgsql event and debug logging + Creates a new instance of an DbParameter object. + An DbParameter object. - + - Writes a string to the Npgsql event log if msglevel is bigger then NpgsqlEventLog.Level + Creates a new instance of a NpgsqlParameter object. - - This method is obsolete and should no longer be used. - It is likely to be removed in future versions of Npgsql - - The message to write to the event log - The minimum LogLevel for which this message should be logged. + A NpgsqlParameter object. - + - Writes a string to the Npgsql event log if msglevel is bigger then NpgsqlEventLog.Level + Slightly optimised version of ExecuteNonQuery() for internal ues in cases where the number + of affected rows is of no interest. - The ResourceManager to get the localized resources - The name of the resource that should be fetched by the ResourceManager - The minimum LogLevel for which this message should be logged. - The additional parameters that shall be included into the log-message (must be compatible with the string in the resource): - + - Writes the default log-message for the action of calling the Get-part of an Indexer to the log file. + Executes a SQL statement against the connection and returns the number of rows affected. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Indexer - The parameter given to the Indexer + The number of rows affected if known; -1 otherwise. - + - Writes the default log-message for the action of calling the Set-part of an Indexer to the logfile. + Sends the CommandText to + the Connection and builds a + NpgsqlDataReader + using one of the CommandBehavior values. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Indexer - The parameter given to the Indexer - The value the Indexer is set to + One of the CommandBehavior values. + A NpgsqlDataReader object. - + - Writes the default log-message for the action of calling the Get-part of a Property to the logfile. + Sends the CommandText to + the Connection and builds a + NpgsqlDataReader. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Property - The name of the Property + A NpgsqlDataReader object. - + - Writes the default log-message for the action of calling the Set-part of a Property to the logfile. + Sends the CommandText to + the Connection and builds a + NpgsqlDataReader + using one of the CommandBehavior values. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Property - The name of the Property - The value the Property is set to + One of the CommandBehavior values. + A NpgsqlDataReader object. + Currently the CommandBehavior parameter is ignored. - + - Writes the default log-message for the action of calling a Method without Arguments to the logfile. + This method binds the parameters from parameters collection to the bind + message. + + + + + Executes the query, and returns the first column of the first row + in the result set returned by the query. Extra columns or rows are ignored. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Method - The name of the Method + The first column of the first row in the result set, + or a null reference if the result set is empty. - + - Writes the default log-message for the action of calling a Method with one Argument to the logfile. + Creates a prepared version of the command on a PostgreSQL server. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Method - The name of the Method - The value of the Argument of the Method - + - Writes the default log-message for the action of calling a Method with two Arguments to the logfile. + This method checks the connection state to see if the connection + is set or it is open. If one of this conditions is not met, throws + an InvalidOperationException - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Method - The name of the Method - The value of the first Argument of the Method - The value of the second Argument of the Method - + - Writes the default log-message for the action of calling a Method with three Arguments to the logfile. + This method substitutes the Parameters, if exist, in the command + to their actual values. + The parameter name format is :ParameterName. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Method - The name of the Method - The value of the first Argument of the Method - The value of the second Argument of the Method - The value of the third Argument of the Method + A version of CommandText with the Parameters inserted. - + - Writes the default log-message for the action of calling a Method with more than three Arguments to the logfile. + Gets or sets the SQL statement or function (stored procedure) to execute at the data source. - The minimum LogLevel for which this message should be logged. - The name of the class that contains the Method - The name of the Method - A Object-Array with zero or more Ojects that are Arguments of the Method. + The Transact-SQL statement or stored procedure to execute. The default is an empty string. - + - Sets/Returns the level of information to log to the logfile. - - The current LogLevel + Gets or sets the wait time before terminating the attempt + to execute a command and generating an error. + + The time (in seconds) to wait for the command to execute. + The default is 20 seconds. - + - Sets/Returns the filename to use for logging. - - The filename of the current Log file. + Gets or sets a value indicating how the + CommandText property is to be interpreted. + + One of the CommandType values. The default is CommandType.Text. - + - Sets/Returns whether Log messages should be echoed to the console - - true if Log messages are echoed to the console, otherwise false - - - - This class represents the Parse message sent to PostgreSQL - server. - - + Gets or sets the NpgsqlConnection + used by this instance of the NpgsqlCommand. + + The connection to a data source. The default value is a null reference. - + - Represents a PostgreSQL COPY FROM STDIN operation with a corresponding SQL statement - to execute against a PostgreSQL database - and an associated stream used to read data from (if provided by user) - or for writing it (when generated by driver). - Eg. new NpgsqlCopyIn("COPY mytable FROM STDIN", connection, streamToRead).Start(); + Gets the NpgsqlParameterCollection. + The parameters of the SQL statement or function (stored procedure). The default is an empty collection. - + - Creates NpgsqlCommand to run given query upon Start(). Data for the requested COPY IN operation can then be written to CopyData stream followed by a call to End() or Cancel(). + Gets or sets the NpgsqlTransaction + within which the NpgsqlCommand executes. + The NpgsqlTransaction. + The default value is a null reference. - + - Given command is run upon Start(). Data for the requested COPY IN operation can then be written to CopyData stream followed by a call to End() or Cancel(). + Gets or sets how command results are applied to the DataRow + when used by the Update + method of the DbDataAdapter. + One of the UpdateRowSource values. - + - Given command is executed upon Start() and all data from fromStream is passed to it as copy data. + Returns oid of inserted row. This is only updated when using executenonQuery and when command inserts just a single row. If table is created without oids, this will always be 0. - + - Returns true if this operation is currently active and field at given location is in binary format. + This class is responsible to create database commands for automatic insert, update and delete operations. - + - Command specified upon creation is executed as a non-query. - If CopyStream is set upon creation, it will be flushed to server as copy data, and operation will be finished immediately. - Otherwise the CopyStream member can be used for writing copy data to server and operation finished with a call to End() or Cancel(). + + This method is reponsible to derive the command parameter list with values obtained from function definition. + It clears the Parameters collection of command. Also, if there is any parameter type which is not supported by Npgsql, an InvalidOperationException will be thrown. + Parameters name will be parameter1, parameter2, ... + For while, only parameter name and NpgsqlDbType are obtained. + NpgsqlCommand whose function parameters will be obtained. - + - Called after writing all data to CopyStream to successfully complete this copy operation. + Represents the method that handles the Notice events. + A NpgsqlNoticeEventArgs that contains the event data. - + - Withdraws an already started copy operation. The operation will fail with given error message. - Will do nothing if current operation is not active. + Represents the method that handles the Notification events. + The source of the event. + A NpgsqlNotificationEventArgs that contains the event data. - + - Returns true if the connection is currently reserved for this operation. + This class represents a connection to a + PostgreSQL server. - + - The stream provided by user or generated upon Start(). - User may provide a stream to constructor; it is used to pass to server all data read from it. - Otherwise, call to Start() sets this to a writable NpgsqlCopyInStream that passes all data written to it to server. - In latter case this is only available while the copy operation is active and null otherwise. + Initializes a new instance of the + NpgsqlConnection class. - + - Returns true if this operation is currently active and in binary format. + Initializes a new instance of the + NpgsqlConnection class + and sets the ConnectionString. + The connection used to open the PostgreSQL database. - + - Returns number of fields expected on each input row if this operation is currently active, otherwise -1 + Begins a database transaction with the specified isolation level. + The isolation level under which the transaction should run. + An DbTransaction + object representing the new transaction. + + Currently the IsolationLevel ReadCommitted and Serializable are supported by the PostgreSQL backend. + There's no support for nested transactions. + - + - The Command used to execute this copy operation. + Begins a database transaction. + A NpgsqlTransaction + object representing the new transaction. + + Currently there's no support for nested transactions. + - + - Set before a COPY IN query to define size of internal buffer for reading from given CopyStream. + Begins a database transaction with the specified isolation level. + The isolation level under which the transaction should run. + A NpgsqlTransaction + object representing the new transaction. + + Currently the IsolationLevel ReadCommitted and Serializable are supported by the PostgreSQL backend. + There's no support for nested transactions. + - + - Represents information about COPY operation data transfer format as returned by server. + Opens a database connection with the property settings specified by the + ConnectionString. - + - Only created when a CopyInResponse or CopyOutResponse is received by NpgsqlState.ProcessBackendResponses() + This method changes the current database by disconnecting from the actual + database and connecting to the specified. + The name of the database to use in place of the current database. - + - Returns true if this operation is currently active and field at given location is in binary format. + Releases the connection to the database. If the connection is pooled, it will be + made available for re-use. If it is non-pooled, the actual connection will be shutdown. - + - Returns true if this operation is currently active and in binary format. + Creates and returns a DbCommand + object associated with the IDbConnection. + A DbCommand object. - + - Returns number of fields if this operation is currently active, otherwise -1 + Creates and returns a NpgsqlCommand + object associated with the NpgsqlConnection. + A NpgsqlCommand object. - - - + + + Releases all resources used by the + NpgsqlConnection. + + true when called from Dispose(); + false when being called from the finalizer. - + - Provide event handlers to convert all native supported basic data types from their backend - text representation to a .NET object. + Create a new connection based on this one. + A new NpgsqlConnection object. - + - Binary data. + Create a new connection based on this one. + A new NpgsqlConnection object. - + - Convert a postgresql boolean to a System.Boolean. + Default SSL CertificateSelectionCallback implementation. - + - Convert a postgresql bit to a System.Boolean. + Default SSL CertificateValidationCallback implementation. - + - Convert a postgresql datetime to a System.DateTime. + Default SSL PrivateKeySelectionCallback implementation. - + - Convert a postgresql date to a System.DateTime. + Default SSL ProvideClientCertificatesCallback implementation. - + - Convert a postgresql time to a System.DateTime. + Write each key/value pair in the connection string to the log. - + - Convert a postgresql money to a System.Decimal. + Returns the supported collections - + - Provide event handlers to convert the basic native supported data types from - native form to backend representation. + Returns the schema collection specified by the collection name. + The collection name. + The collection specified. - + - Binary data. + Returns the schema collection specified by the collection name filtered by the restrictions. + The collection name. + + The restriction values to filter the results. A description of the restrictions is contained + in the Restrictions collection. + + The collection specified. - + - Convert to a postgresql boolean. + Occurs on NoticeResponses from the PostgreSQL backend. - + - Convert to a postgresql bit. + Occurs on NotificationResponses from the PostgreSQL backend. - + - Convert to a postgresql timestamp. + Called to provide client certificates for SSL handshake. - + - Convert to a postgresql date. + Mono.Security.Protocol.Tls.CertificateSelectionCallback delegate. - + - Convert to a postgresql time. + Mono.Security.Protocol.Tls.CertificateValidationCallback delegate. - + - Convert to a postgres money. + Mono.Security.Protocol.Tls.PrivateKeySelectionCallback delegate. - + - Provide event handlers to convert extended native supported data types from their backend - text representation to a .NET object. + Gets or sets the string used to connect to a PostgreSQL database. + Valid values are: +
    +
  • + Server: Address/Name of Postgresql Server; +
  • +
  • + Port: Port to connect to; +
  • +
  • + Protocol: Protocol version to use, instead of automatic; Integer 2 or 3; +
  • +
  • + Database: Database name. Defaults to user name if not specified; +
  • +
  • + User Id: User name; +
  • +
  • + Password: Password for clear text authentication; +
  • +
  • + SSL: True or False. Controls whether to attempt a secure connection. Default = False; +
  • +
  • + Pooling: True or False. Controls whether connection pooling is used. Default = True; +
  • +
  • + MinPoolSize: Min size of connection pool; +
  • +
  • + MaxPoolSize: Max size of connection pool; +
  • +
  • + Timeout: Time to wait for connection open in seconds. Default is 15. +
  • +
  • + CommandTimeout: Time to wait for command to finish execution before throw an exception. In seconds. Default is 20. +
  • +
  • + Sslmode: Mode for ssl connection control. Can be Prefer, Require, Allow or Disable. Default is Disable. Check user manual for explanation of values. +
  • +
  • + ConnectionLifeTime: Time to wait before closing unused connections in the pool in seconds. Default is 15. +
  • +
  • + SyncNotification: Specifies if Npgsql should use synchronous notifications. +
  • +
  • + SearchPath: Changes search path to specified and public schemas. +
  • +
+ The connection string that includes the server name, + the database name, and other parameters needed to establish + the initial connection. The default value is an empty string. +
- + - Convert a postgresql point to a System.NpgsqlPoint. + Backend server host name. - + - Convert a postgresql point to a System.RectangleF. + Backend server port. - + - LDeg. + If true, the connection will attempt to use SSL. - + - Path. + Gets the time to wait while trying to establish a connection + before terminating the attempt and generating an error. + The time (in seconds) to wait for a connection to open. The default value is 15 seconds. - + - Polygon. + Gets the time to wait while trying to execute a command + before terminating the attempt and generating an error. + The time (in seconds) to wait for a command to complete. The default value is 20 seconds. - + - Circle. + Gets the time to wait before closing unused connections in the pool if the count + of all connections exeeds MinPoolSize. + + If connection pool contains unused connections for ConnectionLifeTime seconds, + the half of them will be closed. If there will be unused connections in a second + later then again the half of them will be closed and so on. + This strategy provide smooth change of connection count in the pool. + + The time (in seconds) to wait. The default value is 15 seconds. - + - Inet. - + Gets the name of the current database or the database to be used after a connection is opened. + + The name of the current database or the name of the database to be + used after a connection is opened. The default value is the empty string. - + - interval + Whether datareaders are loaded in their entirety (for compatibility with earlier code). - + - Provide event handlers to convert extended native supported data types from - native form to backend representation. + Gets the database server name. - + - Point. + Gets flag indicating if we are using Synchronous notification or not. + The default value is false. - + - Box. + Gets the current state of the connection. + A bitwise combination of the ConnectionState values. The default is Closed. - + - LSeg. + Gets whether the current state of the connection is Open or Closed + ConnectionState.Open or ConnectionState.Closed - + - Open path. + Version of the PostgreSQL backend. + This can only be called when there is an active connection. - + - Polygon. + Protocol version in use. + This can only be called when there is an active connection. - + - Circle. + Process id of backend server. + This can only be called when there is an active connection. - + - Convert to a postgres inet. + The connector object connected to the backend. - + - Convert to a postgres interval + Gets the NpgsqlConnectionStringBuilder containing the parsed connection string values. - + - EventArgs class to send Notification parameters. + User name. - + - Process ID of the PostgreSQL backend that sent this notification. + Password. - + - Condition that triggered that notification. + Determine if connection pooling will be used for this connection. - + - Additional Information From Notifiying Process (for future use, currently postgres always sets this to an empty string) + Return an exact copy of this NpgsqlConnectionString. - + - Resolve a host name or IP address. - This is needed because if you call Dns.Resolve() with an IP address, it will attempt - to resolve it as a host name, when it should just convert it to an IP address. + This function will set value for known key, both private member and base[key]. - - - - - This class represents a RowDescription message sent from - the PostgreSQL. - - + + - + - This struct represents the internal data of the RowDescription message. + The function will modify private member only, not base[key]. + + - - - This class represents the Parse message sent to PostgreSQL - server. - - - - + - A factory to create instances of various Npgsql objects. + Clear the member and assign them to the default value. - + - Creates an NpgsqlCommand object. + Compatibilty version. When possible, behaviour caused by breaking changes will be preserved + if this version is less than that where the breaking change was introduced. - - - This class represents the Parse message sent to PostgreSQL - server. - - - - + - Represents the method that handles the RowUpdated events. + Case insensative accessor for indivual connection string values. - The source of the event. - A NpgsqlRowUpdatedEventArgs that contains the event data. - + - Represents the method that handles the RowUpdating events. + Represents the method that allows the application to provide a certificate collection to be used for SSL clien authentication - The source of the event. - A NpgsqlRowUpdatingEventArgs that contains the event data. + A X509CertificateCollection to be filled with one or more client certificates. - + - This class represents an adapter from many commands: select, update, insert and delete to fill Datasets. + !!! Helper class, for compilation only. + Connector implements the logic for the Connection Objects to + access the physical connection to the database, and isolate + the application developer from connection pooling internals. - + - Stream for reading data from a table or select on a PostgreSQL version 7.4 or newer database during an active COPY TO STDOUT operation. - Passes data exactly as provided by the server. + Constructor. + Controls whether the connector can be shared. - + - Created only by NpgsqlCopyOutState.StartCopy() + This method checks if the connector is still ok. + We try to send a simple query text, select 1 as ConnectionTest; - + - Discards copy data as long as server pushes it. Returns after operation is finished. - Does nothing if this stream is not the active copy operation reader. + This method is responsible for releasing all resources associated with this Connector. - + - Not writable. + This method is responsible to release all portals used by this Connector. - + - Not flushable. + Default SSL CertificateSelectionCallback implementation. - + - Copies data read from server to given byte buffer. - Since server returns data row by row, length will differ each time, but it is only zero once the operation ends. - Can be mixed with calls to the more efficient NpgsqlCopyOutStream.Read() : byte[] though that would not make much sense. + Default SSL CertificateValidationCallback implementation. - + - Not seekable + Default SSL PrivateKeySelectionCallback implementation. - + - Not supported + Default SSL ProvideClientCertificatesCallback implementation. - + - Returns a whole row of data from server without extra work. - If standard Stream.Read(...) has been called before, it's internal buffers remains are returned. + This method is required to set all the version dependent features flags. + SupportsPrepare means the server can use prepared query plans (7.3+) - + - True while this stream can be used to read copy data from server + Opens the physical connection to the server. + Usually called by the RequestConnector + Method of the connection pool manager. - + - True + Closes the physical connection to the server. - + - False + Returns next portal index. - + - False + Returns next plan index. - + - Number of bytes read so far + Occurs on NoticeResponses from the PostgreSQL backend. - + - Number of bytes read so far; can not be set. + Occurs on NotificationResponses from the PostgreSQL backend. - - - This class represents the Bind message sent to PostgreSQL - server. - - - - + - Summary description for LargeObjectManager. + Called to provide client certificates for SSL handshake. - + - Represents a transaction to be made in a PostgreSQL database. This class cannot be inherited. + Mono.Security.Protocol.Tls.CertificateSelectionCallback delegate. - + - Commits the database transaction. + Mono.Security.Protocol.Tls.CertificateValidationCallback delegate. - + - Rolls back a transaction from a pending state. + Mono.Security.Protocol.Tls.PrivateKeySelectionCallback delegate. - + - Rolls back a transaction from a pending savepoint state. + Gets the current state of the connection. - + - Creates a transaction save point. + Return Connection String. - + - Cancel the transaction without telling the backend about it. This is - used to make the transaction go away when closing a connection. + Version of backend server this connector is connected to. - + - Gets the NpgsqlConnection - object associated with the transaction, or a null reference if the - transaction is no longer valid. + Backend protocol version in use by this connector. - The NpgsqlConnection - object associated with the transaction. - + - Specifies the IsolationLevel for this transaction. + The physical connection stream to the backend. - The IsolationLevel for this transaction. - The default is ReadCommitted. - - - - This class represents a StartupPacket message of PostgreSQL - protocol. - - - + - Provides a means of reading a forward-only stream of rows from a PostgreSQL backend. This class cannot be inherited. + The physical connection socket to the backend. - + - Return the data type name of the column at index . + Reports if this connector is fully connected. - + - Return the data type of the column at index . + The connection mediator. - + - Return the Npgsql specific data type of the column at requested ordinal. + Report if the connection is in a transaction. - column position - Appropriate Npgsql type for column. - + - Return the column name of the column at index . + Report whether the current connection can support prepare functionality. - + - Return the data type OID of the column at index . + This class manages all connector objects, pooled AND non-pooled. - FIXME: Why this method returns String? - + + Unique static instance of the connector pool + mamager. + + + Map of index to unused pooled connectors, avaliable to the + next RequestConnector() call. + This hashmap will be indexed by connection string. + This key will hold a list of queues of pooled connectors available to be used. + + + Timer for tracking unused connections in pools. + + - Return the column name of the column named . + Searches the shared and pooled connector lists for a + matching connector object or creates a new one. + The NpgsqlConnection that is requesting + the connector. Its ConnectionString will be used to search the + pool for available connectors. + A connector object. - + - Return the data DbType of the column at index . + Find a pooled connector. Handle locking and timeout here. - + - Return the data NpgsqlDbType of the column at index . + Find a pooled connector. Handle shared/non-shared here. - + - Get the value of a column as a . - If the differences between and - in handling of days and months is not important to your application, use - instead. + Releases a connector, possibly back to the pool for future use. - Index of the field to find. - value of the field. + + Pooled connectors will be put back into the pool if there is room. + Shared connectors should just have their use count decremented + since they always stay in the shared pool. + + The connector to release. - + - Gets the value of a column converted to a Guid. + Release a pooled connector. Handle locking here. - + - Gets the value of a column as Int16. + Release a pooled connector. Handle shared/non-shared here. - + - Gets the value of a column as Int32. + Create a connector without any pooling functionality. - + - Gets the value of a column as Int64. + Find an available pooled connector in the non-shared pool, or create + a new one if none found. - + - Gets the value of a column as Single. + This method is only called when NpgsqlConnection.Dispose(false) is called which means a + finalization. This also means, an NpgsqlConnection was leak. We clear pool count so that + client doesn't end running out of connections from pool. When the connection is finalized, its underlying + socket is closed. - + - Gets the value of a column as Double. + Close the connector. + + Connector to release - + - Gets the value of a column as String. + Put a pooled connector into the pool queue. + Connector to pool - + - Gets the value of a column as Decimal. + A queue with an extra Int32 for keeping track of busy connections. - + - Copy values from each column in the current row into . + Connections available to the end user - The number of column values copied. - + - Copy values from each column in the current row into . + Connections currently in use - An array appropriately sized to store values from all columns. - The number of column values copied. - + - Gets the value of a column as Boolean. + Represents information about COPY operation data transfer format as returned by server. - + - Gets the value of a column as Byte. Not implemented. + Only created when a CopyInResponse or CopyOutResponse is received by NpgsqlState.ProcessBackendResponses() - + - Gets the value of a column as Char. + Returns true if this operation is currently active and field at given location is in binary format. - + - Gets the value of a column as DateTime. + Returns true if this operation is currently active and in binary format. - + - Returns a System.Data.DataTable that describes the column metadata of the DataReader. + Returns number of fields if this operation is currently active, otherwise -1 - + - This methods parses the command text and tries to get the tablename - from it. + Represents a PostgreSQL COPY FROM STDIN operation with a corresponding SQL statement + to execute against a PostgreSQL database + and an associated stream used to read data from (if provided by user) + or for writing it (when generated by driver). + Eg. new NpgsqlCopyIn("COPY mytable FROM STDIN", connection, streamToRead).Start(); - + - Is raised whenever Close() is called. + Creates NpgsqlCommand to run given query upon Start(). Data for the requested COPY IN operation can then be written to CopyData stream followed by a call to End() or Cancel(). - + - Gets the number of columns in the current row. + Given command is run upon Start(). Data for the requested COPY IN operation can then be written to CopyData stream followed by a call to End() or Cancel(). - + - Gets the value of a column in its native format. + Given command is executed upon Start() and all data from fromStream is passed to it as copy data. - + - Gets the value of a column in its native format. + Returns true if this operation is currently active and field at given location is in binary format. - + - Gets a value indicating the depth of nesting for the current row. Always returns zero. + Command specified upon creation is executed as a non-query. + If CopyStream is set upon creation, it will be flushed to server as copy data, and operation will be finished immediately. + Otherwise the CopyStream member can be used for writing copy data to server and operation finished with a call to End() or Cancel(). - + - Gets a value indicating whether the data reader is closed. + Called after writing all data to CopyStream to successfully complete this copy operation. - + - Contains the column names as the keys + Withdraws an already started copy operation. The operation will fail with given error message. + Will do nothing if current operation is not active. - + - Contains all unique columns + Returns true if the connection is currently reserved for this operation. - + - This is the primary implementation of NpgsqlDataReader. It is the one used in normal cases (where the - preload-reader option is not set in the connection string to resolve some potential backwards-compatibility - issues), the only implementation used internally, and in cases where CachingDataReader is used, it is still - used to do the actual "leg-work" of turning a response stream from the server into a datareader-style - object - with CachingDataReader then filling it's cache from here. + The stream provided by user or generated upon Start(). + User may provide a stream to constructor; it is used to pass to server all data read from it. + Otherwise, call to Start() sets this to a writable NpgsqlCopyInStream that passes all data written to it to server. + In latter case this is only available while the copy operation is active and null otherwise. - + - Iterate through the objects returned through from the server. - If it's a CompletedResponse the rowsaffected count is updated appropriately, - and we iterate again, otherwise we return it (perhaps updating our cache of pending - rows if appropriate). + Returns true if this operation is currently active and in binary format. - The next we will deal with. - + - Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend. + Returns number of fields expected on each input row if this operation is currently active, otherwise -1 - True if the reader was advanced, otherwise false. - + - Releases the resources used by the NpgsqlCommand. + The Command used to execute this copy operation. - + - Closes the data reader object. + Set before a COPY IN query to define size of internal buffer for reading from given CopyStream. - + - Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend. + Represents an ongoing COPY FROM STDIN operation. + Provides methods to push data to server and end or cancel the operation. - True if the reader was advanced, otherwise false. - + - Advances the data reader to the next row. + Called from NpgsqlState.ProcessBackendResponses upon CopyInResponse. + If CopyStream is already set, it is used to read data to push to server, after which the copy is completed. + Otherwise CopyStream is set to a writable NpgsqlCopyInStream that calls SendCopyData each time it is written to. - True if the reader was advanced, otherwise false. - + - Return the value of the column at index . + Sends given packet to server as a CopyData message. + Does not check for notifications! Use another thread for that. - + - Gets raw data from a column. + Sends CopyDone message to server. Handles responses, ie. may throw an exception. - + - Gets raw data from a column. + Sends CopyFail message to server. Handles responses, ie. should always throw an exception: + in CopyIn state the server responds to CopyFail with an error response; + outside of a CopyIn state the server responds to CopyFail with an error response; + without network connection or whatever, there's going to eventually be a failure, timeout or user intervention. - + - Report whether the value in a column is DBNull. + Copy format information returned from server. - + - Gets the number of rows changed, inserted, or deleted by execution of the SQL statement. + Stream for writing data to a table on a PostgreSQL version 7.4 or newer database during an active COPY FROM STDIN operation. + Passes data exactly as is and when given, so see to it that you use server encoding, correct format and reasonably sized writes! - + - Indicates if NpgsqlDatareader has rows to be read. + Created only by NpgsqlCopyInState.StartCopy() - + - Provides an implementation of NpgsqlDataReader in which all data is pre-loaded into memory. - This operates by first creating a ForwardsOnlyDataReader as usual, and then loading all of it's - Rows into memory. There is a general principle that when there is a trade-off between a class design that - is more efficient and/or scalable on the one hand and one that is less efficient but has more functionality - (in this case the internal-only functionality of caching results) that one can build the less efficent class - from the most efficient without significant extra loss in efficiency, but not the other way around. The relationship - between ForwardsOnlyDataReader and CachingDataReader is an example of this). - Since the interface presented to the user is still forwards-only, queues are used to - store this information, so that dequeueing as we go we give the garbage collector the best opportunity - possible to reclaim any memory that is no longer in use. - ForwardsOnlyDataReader being used to actually - obtain the information from the server means that the "leg-work" is still only done (and need only be - maintained) in one place. - This class exists to allow for certain potential backwards-compatibility issues to be resolved - with little effort on the part of affected users. It is considerably less efficient than ForwardsOnlyDataReader - and hence never used internally. + Successfully completes copying data to server. Returns after operation is finished. + Does nothing if this stream is not the active copy operation writer. - + - Represents the method that allows the application to provide a certificate collection to be used for SSL clien authentication + Withdraws an already started copy operation. The operation will fail with given error message. + Does nothing if this stream is not the active copy operation writer. - A X509CertificateCollection to be filled with one or more client certificates. - + - !!! Helper class, for compilation only. - Connector implements the logic for the Connection Objects to - access the physical connection to the database, and isolate - the application developer from connection pooling internals. + Writes given bytes to server. + Fails if this stream is not the active copy operation writer. - + - Constructor. + Flushes stream contents to server. + Fails if this stream is not the active copy operation writer. - Controls whether the connector can be shared. - + - This method checks if the connector is still ok. - We try to send a simple query text, select 1 as ConnectionTest; + Not readable - + - This method is responsible for releasing all resources associated with this Connector. + Not seekable - + - This method is responsible to release all portals used by this Connector. + Not supported - + - Default SSL CertificateSelectionCallback implementation. + True while this stream can be used to write copy data to server - + - Default SSL CertificateValidationCallback implementation. + False - + - Default SSL PrivateKeySelectionCallback implementation. + True - + - Default SSL ProvideClientCertificatesCallback implementation. + False - + - This method is required to set all the version dependent features flags. - SupportsPrepare means the server can use prepared query plans (7.3+) + Number of bytes written so far - + - Opens the physical connection to the server. + Number of bytes written so far; not settable - Usually called by the RequestConnector - Method of the connection pool manager. - + - Closes the physical connection to the server. + Represents a PostgreSQL COPY TO STDOUT operation with a corresponding SQL statement + to execute against a PostgreSQL database + and an associated stream used to write results to (if provided by user) + or for reading the results (when generated by driver). + Eg. new NpgsqlCopyOut("COPY (SELECT * FROM mytable) TO STDOUT", connection, streamToWrite).Start(); - + - Returns next portal index. + Creates NpgsqlCommand to run given query upon Start(), after which CopyStream provides data from database as requested in the query. - + - Returns next plan index. + Given command is run upon Start(), after which CopyStream provides data from database as requested in the query. - + - Occurs on NoticeResponses from the PostgreSQL backend. + Given command is executed upon Start() and all requested copy data is written to toStream immediately. - + - Occurs on NotificationResponses from the PostgreSQL backend. + Returns true if this operation is currently active and field at given location is in binary format. - + - Called to provide client certificates for SSL handshake. + Command specified upon creation is executed as a non-query. + If CopyStream is set upon creation, all copy data from server will be written to it, and operation will be finished immediately. + Otherwise the CopyStream member can be used for reading copy data from server until no more data is available. - + - Mono.Security.Protocol.Tls.CertificateSelectionCallback delegate. + Flush generated CopyStream at once. Effectively reads and discard all the rest of copy data from server. - + - Mono.Security.Protocol.Tls.CertificateValidationCallback delegate. + Returns true if the connection is currently reserved for this operation. - + - Mono.Security.Protocol.Tls.PrivateKeySelectionCallback delegate. + The stream provided by user or generated upon Start() - + - Gets the current state of the connection. + The Command used to execute this copy operation. - + - Return Connection String. + Returns true if this operation is currently active and in binary format. - + - Version of backend server this connector is connected to. + Returns number of fields if this operation is currently active, otherwise -1 - + - Backend protocol version in use by this connector. + Faster alternative to using the generated CopyStream. - + - The physical connection stream to the backend. + Represents an ongoing COPY TO STDOUT operation. + Provides methods to read data from server or end the operation. - + - The physical connection socket to the backend. + Called from NpgsqlState.ProcessBackendResponses upon CopyOutResponse. + If CopyStream is already set, it is used to write data received from server, after which the copy ends. + Otherwise CopyStream is set to a readable NpgsqlCopyOutStream that receives data from server. - + - Reports if this connector is fully connected. + Called from NpgsqlOutStream.Read to read copy data from server. - + - The connection mediator. + Copy format information returned from server. - + - Report if the connection is in a transaction. + Stream for reading data from a table or select on a PostgreSQL version 7.4 or newer database during an active COPY TO STDOUT operation. + Passes data exactly as provided by the server. - + - Report whether the current connection can support prepare functionality. + Created only by NpgsqlCopyOutState.StartCopy() - + - This class contains helper methods for type conversion between - the .Net type system and postgresql. + Discards copy data as long as server pushes it. Returns after operation is finished. + Does nothing if this stream is not the active copy operation reader. - + - A cache of basic datatype mappings keyed by server version. This way we don't - have to load the basic type mappings for every connection. + Not writable. - + - Find a NpgsqlNativeTypeInfo in the default types map that can handle objects - of the given NpgsqlDbType. + Not flushable. - + - Find a NpgsqlNativeTypeInfo in the default types map that can handle objects - of the given NpgsqlDbType. + Copies data read from server to given byte buffer. + Since server returns data row by row, length will differ each time, but it is only zero once the operation ends. + Can be mixed with calls to the more efficient NpgsqlCopyOutStream.Read() : byte[] though that would not make much sense. - + - Find a NpgsqlNativeTypeInfo in the default types map that can handle objects - of the given DbType. + Not seekable - + - Find a NpgsqlNativeTypeInfo in the default types map that can handle objects - of the given System.Type. + Not supported - + - This method is responsible to convert the string received from the backend - to the corresponding NpgsqlType. - The given TypeInfo is called upon to do the conversion. - If no TypeInfo object is provided, no conversion is performed. - + Returns a whole row of data from server without extra work. + If standard Stream.Read(...) has been called before, it's internal buffers remains are returned. + - + - Create the one and only native to backend type map. - This map is used when formatting native data - types to backend representations. + True while this stream can be used to read copy data from server - + - This method creates (or retrieves from cache) a mapping between type and OID - of all natively supported postgresql data types. - This is needed as from one version to another, this mapping can be changed and - so we avoid hardcoding them. - - NpgsqlTypeMapping containing all known data types. The mapping must be - cloned before it is modified because it is cached; changes made by one connection may - effect another connection. + True + - + - Attempt to map types by issuing a query against pg_type. - This function takes a list of NpgsqlTypeInfo and attempts to resolve the OID field - of each by querying pg_type. If the mapping is found, the type info object is - updated (OID) and added to the provided NpgsqlTypeMapping object. + False - NpgsqlConnector to send query through. - Mapping object to add types too. - List of types that need to have OID's mapped. - + - Delegate called to convert the given backend data to its native representation. + False - + - Delegate called to convert the given native data to its backand representation. + Number of bytes read so far - + - Represents a backend data type. - This class can be called upon to convert a backend field representation to a native object. + Number of bytes read so far; can not be set. - + - Construct a new NpgsqlTypeInfo with the given attributes and conversion handlers. + Writes given objects into a stream for PostgreSQL COPY in default copy format (not CSV or BINARY). - Type OID provided by the backend server. - Type name provided by the backend server. - NpgsqlDbType - System type to convert fields of this type to. - Data conversion handler. - + - Perform a data conversion from a backend representation to - a native object. + Represents the method that handles the RowUpdated events. - Data sent from the backend. - Type modifier field sent from the backend. + The source of the event. + A NpgsqlRowUpdatedEventArgs that contains the event data. - + - Type OID provided by the backend server. + Represents the method that handles the RowUpdating events. + The source of the event. + A NpgsqlRowUpdatingEventArgs that contains the event data. - + - Type name provided by the backend server. + This class represents an adapter from many commands: select, update, insert and delete to fill Datasets. - + - NpgsqlDbType. + Provides a means of reading a forward-only stream of rows from a PostgreSQL backend. This class cannot be inherited. - + - NpgsqlDbType. + Return the data type name of the column at index . - + - Provider type to convert fields of this type to. + Return the data type of the column at index . - + - System type to convert fields of this type to. + Return the Npgsql specific data type of the column at requested ordinal. + column position + Appropriate Npgsql type for column. - + - Represents a backend data type. - This class can be called upon to convert a native object to its backend field representation, + Return the column name of the column at index . - + - Returns an NpgsqlNativeTypeInfo for an array where the elements are of the type - described by the NpgsqlNativeTypeInfo supplied. + Return the data type OID of the column at index . + FIXME: Why this method returns String? - + - Construct a new NpgsqlTypeInfo with the given attributes and conversion handlers. + Return the column name of the column named . - Type name provided by the backend server. - NpgsqlDbType - Data conversion handler. - + - Perform a data conversion from a native object to - a backend representation. - DBNull and null values are handled differently depending if a plain query is used - When + Return the data DbType of the column at index . - Native .NET object to be converted. - Flag indicating if the conversion has to be done for - plain queries or extended queries - + - Type name provided by the backend server. + Return the data NpgsqlDbType of the column at index . - + - NpgsqlDbType. + Get the value of a column as a . + If the differences between and + in handling of days and months is not important to your application, use + instead. + Index of the field to find. + value of the field. - + - DbType. + Gets the value of a column converted to a Guid. - + - Apply quoting. + Gets the value of a column as Int16. - + - Use parameter size information. + Gets the value of a column as Int32. - + - Provide mapping between type OID, type name, and a NpgsqlBackendTypeInfo object that represents it. + Gets the value of a column as Int64. - + - Construct an empty mapping. + Gets the value of a column as Single. - + - Copy constuctor. + Gets the value of a column as Double. - + - Add the given NpgsqlBackendTypeInfo to this mapping. + Gets the value of a column as String. - + - Add a new NpgsqlBackendTypeInfo with the given attributes and conversion handlers to this mapping. + Gets the value of a column as Decimal. - Type OID provided by the backend server. - Type name provided by the backend server. - NpgsqlDbType - System type to convert fields of this type to. - Data conversion handler. - + - Make a shallow copy of this type mapping. + Gets the value of a column as TimeSpan. - + - Determine if a NpgsqlBackendTypeInfo with the given backend type OID exists in this mapping. + Copy values from each column in the current row into . + The number of column values copied. - + - Determine if a NpgsqlBackendTypeInfo with the given backend type name exists in this mapping. + Copy values from each column in the current row into . + An array appropriately sized to store values from all columns. + The number of column values copied. - + - Get the number of type infos held. + Gets the value of a column as Boolean. - + - Retrieve the NpgsqlBackendTypeInfo with the given backend type OID, or null if none found. + Gets the value of a column as Byte. Not implemented. - + - Retrieve the NpgsqlBackendTypeInfo with the given backend type name, or null if none found. + Gets the value of a column as Char. - + - Provide mapping between type Type, NpgsqlDbType and a NpgsqlNativeTypeInfo object that represents it. + Gets the value of a column as DateTime. - + - Add the given NpgsqlNativeTypeInfo to this mapping. + Returns a System.Data.DataTable that describes the column metadata of the DataReader. - + - Add a new NpgsqlNativeTypeInfo with the given attributes and conversion handlers to this mapping. + This methods parses the command text and tries to get the tablename + from it. - Type name provided by the backend server. - NpgsqlDbType - Data conversion handler. - + - Retrieve the NpgsqlNativeTypeInfo with the given NpgsqlDbType. + Is raised whenever Close() is called. - + - Retrieve the NpgsqlNativeTypeInfo with the given DbType. + Gets the number of columns in the current row. - + - Retrieve the NpgsqlNativeTypeInfo with the given Type. + Gets the value of a column in its native format. - + - Determine if a NpgsqlNativeTypeInfo with the given backend type name exists in this mapping. + Gets the value of a column in its native format. - + - Determine if a NpgsqlNativeTypeInfo with the given NpgsqlDbType exists in this mapping. + Gets a value indicating the depth of nesting for the current row. Always returns zero. - + - Determine if a NpgsqlNativeTypeInfo with the given Type name exists in this mapping. + Gets a value indicating whether the data reader is closed. - + - Get the number of type infos held. + Contains the column names as the keys - + - Implements for version 3 of the protocol. + Contains all unique columns - + - Reads a row, field by field, allowing a DataRow to be built appropriately. + This is the primary implementation of NpgsqlDataReader. It is the one used in normal cases (where the + preload-reader option is not set in the connection string to resolve some potential backwards-compatibility + issues), the only implementation used internally, and in cases where CachingDataReader is used, it is still + used to do the actual "leg-work" of turning a response stream from the server into a datareader-style + object - with CachingDataReader then filling it's cache from here. - + - Reads part of a field, as needed (for - and + Iterate through the objects returned through from the server. + If it's a CompletedResponse the rowsaffected count is updated appropriately, + and we iterate again, otherwise we return it (perhaps updating our cache of pending + rows if appropriate). + The next we will deal with. - + - Adds further functionality to stream that is dependant upon the type of data read. + Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend. + True if the reader was advanced, otherwise false. - + - Completes the implementation of Streamer for char data. + Releases the resources used by the NpgsqlCommand. - + - Completes the implementation of Streamer for byte data. + Closes the data reader object. - + - Implements for version 2 of the protocol. + Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend. + True if the reader was advanced, otherwise false. - + - Encapsulates the null mapping bytes sent at the start of a version 2 - datarow message, and the process of identifying the nullity of the data - at a particular index + Advances the data reader to the next row. + True if the reader was advanced, otherwise false. - + - Provides the underlying mechanism for reading schema information. + Return the value of the column at index . - + - Creates an NpgsqlSchema that can read schema information from the database. + Gets raw data from a column. - An open database connection for reading metadata. - + - Returns the MetaDataCollections that lists all possible collections. + Gets raw data from a column. - The MetaDataCollections - + - Returns the Restrictions that contains the meaning and position of the values in the restrictions array. + Report whether the value in a column is DBNull. - The Restrictions - + - Returns the Databases that contains a list of all accessable databases. + Gets the number of rows changed, inserted, or deleted by execution of the SQL statement. - The restrictions to filter the collection. - The Databases - + - Returns the Tables that contains table and view names and the database and schema they come from. + Indicates if NpgsqlDatareader has rows to be read. - The restrictions to filter the collection. - The Tables - + - Returns the Columns that contains information about columns in tables. + Provides an implementation of NpgsqlDataReader in which all data is pre-loaded into memory. + This operates by first creating a ForwardsOnlyDataReader as usual, and then loading all of it's + Rows into memory. There is a general principle that when there is a trade-off between a class design that + is more efficient and/or scalable on the one hand and one that is less efficient but has more functionality + (in this case the internal-only functionality of caching results) that one can build the less efficent class + from the most efficient without significant extra loss in efficiency, but not the other way around. The relationship + between ForwardsOnlyDataReader and CachingDataReader is an example of this). + Since the interface presented to the user is still forwards-only, queues are used to + store this information, so that dequeueing as we go we give the garbage collector the best opportunity + possible to reclaim any memory that is no longer in use. + ForwardsOnlyDataReader being used to actually + obtain the information from the server means that the "leg-work" is still only done (and need only be + maintained) in one place. + This class exists to allow for certain potential backwards-compatibility issues to be resolved + with little effort on the part of affected users. It is considerably less efficient than ForwardsOnlyDataReader + and hence never used internally. - The restrictions to filter the collection. - The Columns. - + + + This class represents the Parse message sent to PostgreSQL + server. + + + + - Returns the Views that contains view names and the database and schema they come from. + EventArgs class to send Notice parameters, which are just NpgsqlError's in a lighter context. - The restrictions to filter the collection. - The Views - + - Returns the Users containing user names and the sysid of those users. + Notice information. - The restrictions to filter the collection. - The Users. - + - This is the abstract base class for NpgsqlAsciiRow and NpgsqlBinaryRow. + This class represents the ErrorResponse and NoticeResponse + message sent from PostgreSQL server. - + - Implements a bit string; a collection of zero or more bits which can each be 1 or 0. - BitString's behave as a list of bools, though like most strings and unlike most collections the position - tends to be of as much significance as the value. - BitStrings are often used as masks, and are commonly cast to and from other values. + Return a string representation of this error object. - + - Represents the empty string. + Severity code. All versions. - + - Create a BitString from an enumeration of boolean values. The BitString will contain - those booleans in the order they came in. + Error code. PostgreSQL 7.4 and up. - The boolean values. - + - Creates a BitString filled with a given number of true or false values. + Terse error message. All versions. - The value to fill the string with. - The number of bits to fill. - + - Creats a bitstring from a string. - The string to copy from. - + Detailed error message. PostgreSQL 7.4 and up. - + - Creates a single-bit element from a boolean value. + Suggestion to help resolve the error. PostgreSQL 7.4 and up. - The bool value which determines whether - the bit is 1 or 0. - + - Creates a bitstring from an unsigned integer value. The string will be the shortest required to - contain the integer (e.g. 1 bit for 0 or 1, 2 for 2 or 3, 3 for 4-7, and so on). + Position (one based) within the query string where the error was encounterd. PostgreSQL 7.4 and up. - The integer. - This method is not CLS Compliant, and may not be available to some languages. - + - Creates a bitstring from an integer value. The string will be the shortest required to - contain the integer (e.g. 1 bit for 0 or 1, 2 for 2 or 3, 3 for 4-7, and so on). + Position (one based) within the query string where the error was encounterd. This position refers to an internal command executed for example inside a PL/pgSQL function. PostgreSQL 7.4 and up. - The integer. - + - Finds the first instance of a given value + Internal query string where the error was encounterd. This position refers to an internal command executed for example inside a PL/pgSQL function. PostgreSQL 7.4 and up. - The value - whether true or false - to search for. - The index of the value found, or -1 if none are present. - + - True if there is at least one bit with the value looked for. + Trace back information. PostgreSQL 7.4 and up. - The value - true or false - to detect. - True if at least one bit was the same as item, false otherwise. - + - Copies the bitstring to an array of bools. + Source file (in backend) reporting the error. PostgreSQL 7.4 and up. - The boolean array to copy to. - The index in the array to start copying from. - + - Returns an enumerator that enumerates through the string. + Source file line number (in backend) reporting the error. PostgreSQL 7.4 and up. - The enumerator. - + - Creats a bitstring by concatenating another onto this one. + Source routine (in backend) reporting the error. PostgreSQL 7.4 and up. - The string to append to this one. - The combined strings. - + - Returns a substring of this string. + String containing the sql sent which produced this error. - The position to start from, must be between 0 and the length of the string. - The length of the string to return, must be greater than zero, and may not be - so large that the start + length exceeds the bounds of this instance. - The Bitstring identified - + - Returns a substring of this string. + Backend protocol version in use. - The position to start from, must be between 0 and the length of the string, - the rest of the string is returned. - The Bitstring identified - + - A logical and between this string and another. The two strings must be the same length. + The level of verbosity of the NpgsqlEventLog - Another BitString to AND with this one. - A bitstring with 1 where both BitStrings had 1 and 0 otherwise. - + - A logical or between this string and another. The two strings must be the same length. + Don't log at all - Another BitString to OR with this one. - A bitstring with 1 where either BitString had 1 and 0 otherwise. - + - A logical xor between this string and another. The two strings must be the same length. + Only log the most common issues - Another BitString to XOR with this one. - A bitstring with 1 where one BitStrings and the other had 0, - and 0 where they both had 1 or both had 0. - + - A bitstring that is the logical inverse of this one. + Log everything - A bitstring of the same length as this with 1 where this has 0 and vice-versa. - + - Shifts the string operand bits to the left, filling with zeros to produce a - string of the same length. + This class handles all the Npgsql event and debug logging - The number of bits to shift to the left. - A left-shifted bitstring. - The behaviour of LShift is closer to what one would expect from dealing - with PostgreSQL bit-strings than in using the same operations on integers in .NET - In particular, negative operands result in a right-shift, and operands greater than - the length of the string will shift it entirely, resulting in a zero-filled string. - - + - Shifts the string operand bits to the right, filling with zeros to produce a - string of the same length. + Writes a string to the Npgsql event log if msglevel is bigger then NpgsqlEventLog.Level - The number of bits to shift to the right. - A right-shifted bitstring. - The behaviour of RShift is closer to what one would expect from dealing - with PostgreSQL bit-strings than in using the same operations on integers in .NET - In particular, negative operands result in a left-shift, and operands greater than - the length of the string will shift it entirely, resulting in a zero-filled string. It also performs - a logical shift, rather than an arithmetic shift, so it always sets the vacated bit positions to zero - (like PostgreSQL and like .NET for unsigned integers but not for signed integers). + + This method is obsolete and should no longer be used. + It is likely to be removed in future versions of Npgsql + The message to write to the event log + The minimum LogLevel for which this message should be logged. - + - Returns true if the this string is identical to the argument passed. + Writes a string to the Npgsql event log if msglevel is bigger then NpgsqlEventLog.Level + The ResourceManager to get the localized resources + The name of the resource that should be fetched by the ResourceManager + The minimum LogLevel for which this message should be logged. + The additional parameters that shall be included into the log-message (must be compatible with the string in the resource): - + - Compares two strings. Strings are compared as strings, so while 0 being less than 1 will - mean a comparison between two strings of the same size is the same as treating them as numbers, - in the case of two strings of differing lengths the comparison starts at the right-most (most significant) - bit, and if all bits of the shorter string are exhausted without finding a comparison, then the larger - string is deemed to be greater than the shorter (0010 is greater than 0001 but less than 00100). + Writes the default log-message for the action of calling the Get-part of an Indexer to the log file. - Another string to compare with this one. - A value if the two strings are identical, an integer less - than zero if this is less than the argument, and an integer greater - than zero otherwise. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Indexer + The parameter given to the Indexer - + - Compares the string with another object. + Writes the default log-message for the action of calling the Set-part of an Indexer to the logfile. - The object to compare with. - If the object is null then this string is considered greater. If the object is another BitString - then they are compared as in the explicit comparison for BitStrings - in any other case a is thrown. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Indexer + The parameter given to the Indexer + The value the Indexer is set to - + - Compares this BitString with an object for equality. + Writes the default log-message for the action of calling the Get-part of a Property to the logfile. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Property + The name of the Property - + - Returns a code for use in hashing operations. + Writes the default log-message for the action of calling the Set-part of a Property to the logfile. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Property + The name of the Property + The value the Property is set to - + - Returns a string representation of the BitString. + Writes the default log-message for the action of calling a Method without Arguments to the logfile. - - A string which can contain a letter and optionally a number which sets a minimum size for the string - returned. In each case using the lower-case form of the letter will result in a lower-case string - being returned. - - - B - A string of 1s and 0s. - - - X - An hexadecimal string (will result in an error unless the string's length is divisible by 4). - - - G - A string of 1s and 0s in single-quotes preceded by 'B' (Postgres bit string literal syntax). - - Y - An hexadecimal string in single-quotes preceded by 'X' (Postgres bit literal syntax, will result in an error unless the string's length is divisible by 4. - - C - The format produced by format-string "Y" if legal, otherwise that produced by format-string "G". - E - The most compact safe representation for Postgres. If single bit will be either a 0 or a 1. Otherwise if it - can be that produce by format string "Y" it will, otherwise if there are less than 9bits in length it will be that - produced by format-string "G". For longer strings that cannot be represented in hexadecimal it will be a string - representing the first part of the string in format "Y" followed by the PostgreSQL concatenation operator, followed - by the final bits in the format "G". E.g. "X'13DCE'||B'110'" - If format is empty or null, it is treated as if "B" had been passed (the default repreesentation, and that - generally used by PostgreSQL for display). - - The formatted string. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method - + - Returns a string representation for the Bitstring + Writes the default log-message for the action of calling a Method with one Argument to the logfile. - A string containing '0' and '1' characters. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + The value of the Argument of the Method - + - Returns the same string as . formatProvider is ignored. + Writes the default log-message for the action of calling a Method with two Arguments to the logfile. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + The value of the first Argument of the Method + The value of the second Argument of the Method - + - Parses a string to produce a BitString. Most formats that can be produced by - can be accepted, but hexadecimal - can be interpreted with the preceding X' to mark the following characters as - being hexadecimal rather than binary. + Writes the default log-message for the action of calling a Method with three Arguments to the logfile. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + The value of the first Argument of the Method + The value of the second Argument of the Method + The value of the third Argument of the Method - + - Performs a logical AND on the two operands. + Writes the default log-message for the action of calling a Method with more than three Arguments to the logfile. + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + A Object-Array with zero or more Ojects that are Arguments of the Method. - + - Performs a logcial OR on the two operands. - + Sets/Returns the level of information to log to the logfile. + + The current LogLevel - + - Perofrms a logical EXCLUSIVE-OR on the two operands - + Sets/Returns the filename to use for logging. + + The filename of the current Log file. - + - Performs a logical NOT on the operand. - + Sets/Returns whether Log messages should be echoed to the console + + true if Log messages are echoed to the console, otherwise false - + - Concatenates the operands. + The exception that is thrown when the PostgreSQL backend reports errors. - + - Left-shifts the string BitString. + Construct a backend error exception based on a list of one or more + backend errors. The basic Exception.Message will be built from the + first (usually the only) error in the list. - + - Right-shifts the string BitString. + Format a .NET style exception string. + Include all errors in the list, including any hints. - + - Compares the two operands. + Append a line to the given Stream, first checking for zero-length. - + - Compares the two operands. + Provide access to the entire list of errors provided by the PostgreSQL backend. - + - Compares the two operands. + Severity code. All versions. - + - Compares the two operands. + Error code. PostgreSQL 7.4 and up. - + - Compares the two operands. + Basic error message. All versions. - + - Compares the two operands. + Detailed error message. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of bits in an encoded character string, - encoded according to the Encoding passed, and returns that string. - The bitstring must contain a whole number of octets(bytes) and also be - valid according to the Encoding passed. + Suggestion to help resolve the error. PostgreSQL 7.4 and up. - The to use in producing the string. - The string that was encoded in the BitString. - + - Interprets the bitstring as a series of octets (bytes) and returns those octets. Fails - if the Bitstring does not contain a whole number of octets (its length is not evenly - divisible by 8). + Position (one based) within the query string where the error was encounterd. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of signed octets (bytes) and returns those octets. Fails - if the Bitstring does not contain a whole number of octets (its length is not evenly - divisible by 8). - This method is not CLS-Compliant and may not be available to languages that cannot - handle signed bytes. + Trace back information. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of unsigned 16-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 16. - This method is not CLS-Compliant and may not be available to languages that cannot - handle unsigned integers. + Source file (in backend) reporting the error. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of 16-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 16. + Source file line number (in backend) reporting the error. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of unsigned 32-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 32. - This method is not CLS-Compliant and may not be available to languages that cannot - handle unsigned integers. + Source routine (in backend) reporting the error. PostgreSQL 7.4 and up. - + - Interprets the bitstring as a series of signed 32-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 32. + String containing the sql sent which produced this error. - + - Interprets the bitstring as a series of unsigned 64-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 64. - This method is not CLS-Compliant and may not be available to languages that cannot - handle unsigned integers. + Returns the entire list of errors provided by the PostgreSQL backend. - + + + This class represents the Parse message sent to PostgreSQL + server. + + + + - Interprets the bitstring as a series of signed 64-bit integers and returns those integers. - Fails if the Bitstring's length is not evenly divisible by 64. + A factory to create instances of various Npgsql objects. - + - The length of the string. + Creates an NpgsqlCommand object. - + + + This class represents the Parse message sent to PostgreSQL + server. + + + + - Retrieves the value of the bit at the given index. - + This class is responsible for serving as bridge between the backend + protocol handling and the core classes. It is used as the mediator for + exchanging data generated/sent from/to backend. + + - + - C# implementation of the MD5 cryptographic hash function. + EventArgs class to send Notification parameters. - + - Creates a new MD5CryptoServiceProvider. + Process ID of the PostgreSQL backend that sent this notification. - + - Drives the hashing function. + Condition that triggered that notification. - Byte array containing the data to hash. - Where in the input buffer to start. - Size in bytes of the data in the buffer to hash. - + - This finalizes the hash. Takes the data from the chaining variables and returns it. + Additional Information From Notifiying Process (for future use, currently postgres always sets this to an empty string) - + - Resets the class after use. Called automatically after hashing is done. + This class represents a parameter to a command that will be sent to server - + - This is the meat of the hash function. It is what processes each block one at a time. + Initializes a new instance of the NpgsqlParameter class. - Byte array to process data from. - Where in the byte array to start processing. - + - Pads and then processes the final block. + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name and a value of the new NpgsqlParameter. - Buffer to grab data from. - Position in buffer in bytes to get data from. - How much data in bytes in the buffer to use. + The m_Name of the parameter to map. + An Object that is the value of the NpgsqlParameter. + +

When you specify an Object + in the value parameter, the DbType is + inferred from the .NET Framework type of the Object.

+

When using this constructor, you must be aware of a possible misuse of the constructor which takes a DbType parameter. + This happens when calling this constructor passing an int 0 and the compiler thinks you are passing a value of DbType. + Use Convert.ToInt32(value) for example to have compiler calling the correct constructor.

+
- + - Stream for writing data to a table on a PostgreSQL version 7.4 or newer database during an active COPY FROM STDIN operation. - Passes data exactly as is and when given, so see to it that you use server encoding, correct format and reasonably sized writes! + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name and the data type. + The m_Name of the parameter to map. + One of the DbType values. - + - Created only by NpgsqlCopyInState.StartCopy() + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name, the DbType, and the size. + The m_Name of the parameter to map. + One of the DbType values. + The length of the parameter. - + - Successfully completes copying data to server. Returns after operation is finished. - Does nothing if this stream is not the active copy operation writer. + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name, the DbType, the size, + and the source column m_Name. + The m_Name of the parameter to map. + One of the DbType values. + The length of the parameter. + The m_Name of the source column. - + - Withdraws an already started copy operation. The operation will fail with given error message. - Does nothing if this stream is not the active copy operation writer. + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name, the DbType, the size, + the source column m_Name, a ParameterDirection, + the precision of the parameter, the scale of the parameter, a + DataRowVersion to use, and the + value of the parameter. + The m_Name of the parameter to map. + One of the DbType values. + The length of the parameter. + The m_Name of the source column. + One of the ParameterDirection values. + true if the value of the field can be null, otherwise false. + The total number of digits to the left and right of the decimal point to which + Value is resolved. + The total number of decimal places to which + Value is resolved. + One of the DataRowVersion values. + An Object that is the value + of the NpgsqlParameter. - + - Writes given bytes to server. - Fails if this stream is not the active copy operation writer. + Creates a new NpgsqlParameter that + is a copy of the current instance. + A new NpgsqlParameter that is a copy of this instance. - + - Flushes stream contents to server. - Fails if this stream is not the active copy operation writer. + Gets or sets the maximum number of digits used to represent the + Value property. + The maximum number of digits used to represent the + Value property. + The default value is 0, which indicates that the data provider + sets the precision for Value. - + - Not readable + Gets or sets the number of decimal places to which + Value is resolved. + The number of decimal places to which + Value is resolved. The default is 0. - + - Not seekable + Gets or sets the maximum size, in bytes, of the data within the column. + The maximum size, in bytes, of the data within the column. + The default value is inferred from the parameter value. - + - Not supported + Gets or sets the DbType of the parameter. + One of the DbType values. The default is String. - + - True while this stream can be used to write copy data to server + Gets or sets the DbType of the parameter. + One of the DbType values. The default is String. - + - False + Gets or sets a value indicating whether the parameter is input-only, + output-only, bidirectional, or a stored procedure return value parameter. + One of the ParameterDirection + values. The default is Input. - + - True + Gets or sets a value indicating whether the parameter accepts null values. + true if null values are accepted; otherwise, false. The default is false. - + - False + Gets or sets the m_Name of the NpgsqlParameter. + The m_Name of the NpgsqlParameter. + The default is an empty string. - + - Number of bytes written so far + The m_Name scrubbed of any optional marker - + - Number of bytes written so far; not settable + Gets or sets the m_Name of the source column that is mapped to the + DataSet and used for loading or + returning the Value. + The m_Name of the source column that is mapped to the + DataSet. The default is an empty string. - + - Represents a SQL statement or function (stored procedure) to execute - against a PostgreSQL database. This class cannot be inherited. + Gets or sets the DataRowVersion + to use when loading Value. + One of the DataRowVersion values. + The default is Current. - + - Initializes a new instance of the NpgsqlCommand class. + Gets or sets the value of the parameter. + An Object that is the value of the parameter. + The default value is null. - + - Initializes a new instance of the NpgsqlCommand class with the text of the query. + Gets or sets the value of the parameter. - The text of the query. + An Object that is the value of the parameter. + The default value is null. - + - Initializes a new instance of the NpgsqlCommand class with the text of the query and a NpgsqlConnection. + Represents a collection of parameters relevant to a NpgsqlCommand + as well as their respective mappings to columns in a DataSet. + This class cannot be inherited. - The text of the query. - A NpgsqlConnection that represents the connection to a PostgreSQL server. - + - Initializes a new instance of the NpgsqlCommand class with the text of the query, a NpgsqlConnection, and the NpgsqlTransaction. - - The text of the query. - A NpgsqlConnection that represents the connection to a PostgreSQL server. - The NpgsqlTransaction in which the NpgsqlCommand executes. + Initializes a new instance of the NpgsqlParameterCollection class. + - + - Used to execute internal commands. + Adds the specified NpgsqlParameter object to the NpgsqlParameterCollection. + The NpgsqlParameter to add to the collection. + The index of the new NpgsqlParameter object. - + - Attempts to cancel the execution of a NpgsqlCommand. + Adds a NpgsqlParameter to the NpgsqlParameterCollection given the specified parameter name and value. - This Method isn't implemented yet. + The name of the NpgsqlParameter. + The Value of the NpgsqlParameter to add to the collection. + The index of the new NpgsqlParameter object. + + Use caution when using this overload of the + Add method to specify integer parameter values. + Because this overload takes a value of type Object, + you must convert the integral value to an Object + type when the value is zero, as the following C# example demonstrates. + parameters.Add(":pname", Convert.ToInt32(0)); + If you do not perform this conversion, the compiler will assume you + are attempting to call the NpgsqlParameterCollection.Add(string, DbType) overload. + - + - Create a new command based on this one. + Adds a NpgsqlParameter to the NpgsqlParameterCollection given the parameter name and the data type. - A new NpgsqlCommand object. + The name of the parameter. + One of the DbType values. + The index of the new NpgsqlParameter object. - + - Create a new command based on this one. + Adds a NpgsqlParameter to the NpgsqlParameterCollection with the parameter name, the data type, and the column length. - A new NpgsqlCommand object. + The name of the parameter. + One of the DbType values. + The length of the column. + The index of the new NpgsqlParameter object. - + - Creates a new instance of an DbParameter object. + Adds a NpgsqlParameter to the NpgsqlParameterCollection with the parameter name, the data type, the column length, and the source column name. - An DbParameter object. + The name of the parameter. + One of the DbType values. + The length of the column. + The name of the source column. + The index of the new NpgsqlParameter object. - + - Creates a new instance of a NpgsqlParameter object. + Removes the specified NpgsqlParameter from the collection using the parameter name. - A NpgsqlParameter object. + The name of the NpgsqlParameter object to retrieve. - + - Slightly optimised version of ExecuteNonQuery() for internal ues in cases where the number - of affected rows is of no interest. + Gets a value indicating whether a NpgsqlParameter with the specified parameter name exists in the collection. + The name of the NpgsqlParameter object to find. + true if the collection contains the parameter; otherwise, false. - + - Executes a SQL statement against the connection and returns the number of rows affected. + Gets the location of the NpgsqlParameter in the collection with a specific parameter name. - The number of rows affected if known; -1 otherwise. + The name of the NpgsqlParameter object to find. + The zero-based location of the NpgsqlParameter in the collection. - + - Sends the CommandText to - the Connection and builds a - NpgsqlDataReader - using one of the CommandBehavior values. + Removes the specified NpgsqlParameter from the collection using a specific index. - One of the CommandBehavior values. - A NpgsqlDataReader object. + The zero-based index of the parameter. - + - Sends the CommandText to - the Connection and builds a - NpgsqlDataReader. + Inserts a NpgsqlParameter into the collection at the specified index. - A NpgsqlDataReader object. + The zero-based index where the parameter is to be inserted within the collection. + The NpgsqlParameter to add to the collection. - + - Sends the CommandText to - the Connection and builds a - NpgsqlDataReader - using one of the CommandBehavior values. + Removes the specified NpgsqlParameter from the collection. - One of the CommandBehavior values. - A NpgsqlDataReader object. - Currently the CommandBehavior parameter is ignored. + The NpgsqlParameter to remove from the collection. - + - This method binds the parameters from parameters collection to the bind - message. - + Gets a value indicating whether a NpgsqlParameter exists in the collection. + + The value of the NpgsqlParameter object to find. + true if the collection contains the NpgsqlParameter object; otherwise, false. - + - Executes the query, and returns the first column of the first row - in the result set returned by the query. Extra columns or rows are ignored. + Gets a value indicating whether a NpgsqlParameter with the specified parameter name exists in the collection. - The first column of the first row in the result set, - or a null reference if the result set is empty. + The name of the NpgsqlParameter object to find. + A reference to the requested parameter is returned in this out param if it is found in the list. This value is null if the parameter is not found. + true if the collection contains the parameter and param will contain the parameter; otherwise, false. - + - Creates a prepared version of the command on a PostgreSQL server. + Removes all items from the collection. - + - This method checks the connection state to see if the connection - is set or it is open. If one of this conditions is not met, throws - an InvalidOperationException + Gets the location of a NpgsqlParameter in the collection. + The value of the NpgsqlParameter object to find. + The zero-based index of the NpgsqlParameter object in the collection. - + - This method substitutes the Parameters, if exist, in the command - to their actual values. - The parameter name format is :ParameterName. + Adds the specified NpgsqlParameter object to the NpgsqlParameterCollection. - A version of CommandText with the Parameters inserted. + The NpgsqlParameter to add to the collection. + The zero-based index of the new NpgsqlParameter object. - + - Gets or sets the SQL statement or function (stored procedure) to execute at the data source. + Copies NpgsqlParameter objects from the NpgsqlParameterCollection to the specified array. - The Transact-SQL statement or stored procedure to execute. The default is an empty string. + An Array to which to copy the NpgsqlParameter objects in the collection. + The starting index of the array. - + - Gets or sets the wait time before terminating the attempt - to execute a command and generating an error. + Returns an enumerator that can iterate through the collection. - The time (in seconds) to wait for the command to execute. - The default is 20 seconds. + An IEnumerator that can be used to iterate through the collection. - + - Gets or sets a value indicating how the - CommandText property is to be interpreted. + In methods taking an object as argument this method is used to verify + that the argument has the type NpgsqlParameter - One of the CommandType values. The default is CommandType.Text. + The object to verify - + - Gets or sets the NpgsqlConnection - used by this instance of the NpgsqlCommand. + Gets the NpgsqlParameter with the specified name. - The connection to a data source. The default value is a null reference. + The name of the NpgsqlParameter to retrieve. + The NpgsqlParameter with the specified name, or a null reference if the parameter is not found. - + - Gets the NpgsqlParameterCollection. + Gets the NpgsqlParameter at the specified index. - The parameters of the SQL statement or function (stored procedure). The default is an empty collection. + The zero-based index of the NpgsqlParameter to retrieve. + The NpgsqlParameter at the specified index. - + - Gets or sets the NpgsqlTransaction - within which the NpgsqlCommand executes. + Gets the number of NpgsqlParameter objects in the collection. - The NpgsqlTransaction. - The default value is a null reference. + The number of NpgsqlParameter objects in the collection. - + + + This class represents the ParameterStatus message sent from PostgreSQL + server. + + + + + + This class represents the Parse message sent to PostgreSQL + server. + + + + - Gets or sets how command results are applied to the DataRow - when used by the Update - method of the DbDataAdapter. + This class represents a PasswordPacket message sent to backend + PostgreSQL. - One of the UpdateRowSource values. - + - Returns oid of inserted row. This is only updated when using executenonQuery and when command inserts just a single row. If table is created without oids, this will always be 0. + Used when a connection is closed - + - Represents a collection of parameters relevant to a NpgsqlCommand - as well as their respective mappings to columns in a DataSet. - This class cannot be inherited. + Summary description for NpgsqlQuery - + - Initializes a new instance of the NpgsqlParameterCollection class. + This is the abstract base class for NpgsqlAsciiRow and NpgsqlBinaryRow. - + + + This class represents a RowDescription message sent from + the PostgreSQL. + + + + - Adds the specified NpgsqlParameter object to the NpgsqlParameterCollection. + This struct represents the internal data of the RowDescription message. - The NpgsqlParameter to add to the collection. - The index of the new NpgsqlParameter object. - + - Adds a NpgsqlParameter to the NpgsqlParameterCollection given the specified parameter name and value. + Provides the underlying mechanism for reading schema information. - The name of the NpgsqlParameter. - The Value of the NpgsqlParameter to add to the collection. - The index of the new NpgsqlParameter object. - - Use caution when using this overload of the - Add method to specify integer parameter values. - Because this overload takes a value of type Object, - you must convert the integral value to an Object - type when the value is zero, as the following C# example demonstrates. - parameters.Add(":pname", Convert.ToInt32(0)); - If you do not perform this conversion, the compiler will assume you - are attempting to call the NpgsqlParameterCollection.Add(string, DbType) overload. - - + - Adds a NpgsqlParameter to the NpgsqlParameterCollection given the parameter name and the data type. + Creates an NpgsqlSchema that can read schema information from the database. - The name of the parameter. - One of the DbType values. - The index of the new NpgsqlParameter object. + An open database connection for reading metadata. - + - Adds a NpgsqlParameter to the NpgsqlParameterCollection with the parameter name, the data type, and the column length. + Returns the MetaDataCollections that lists all possible collections. - The name of the parameter. - One of the DbType values. - The length of the column. - The index of the new NpgsqlParameter object. + The MetaDataCollections - + - Adds a NpgsqlParameter to the NpgsqlParameterCollection with the parameter name, the data type, the column length, and the source column name. + Returns the Restrictions that contains the meaning and position of the values in the restrictions array. - The name of the parameter. - One of the DbType values. - The length of the column. - The name of the source column. - The index of the new NpgsqlParameter object. + The Restrictions - + - Removes the specified NpgsqlParameter from the collection using the parameter name. + Returns the Databases that contains a list of all accessable databases. - The name of the NpgsqlParameter object to retrieve. + The restrictions to filter the collection. + The Databases - + - Gets a value indicating whether a NpgsqlParameter with the specified parameter name exists in the collection. + Returns the Tables that contains table and view names and the database and schema they come from. - The name of the NpgsqlParameter object to find. - true if the collection contains the parameter; otherwise, false. + The restrictions to filter the collection. + The Tables - + - Gets the location of the NpgsqlParameter in the collection with a specific parameter name. + Returns the Columns that contains information about columns in tables. - The name of the NpgsqlParameter object to find. - The zero-based location of the NpgsqlParameter in the collection. + The restrictions to filter the collection. + The Columns. - + - Removes the specified NpgsqlParameter from the collection using a specific index. + Returns the Views that contains view names and the database and schema they come from. - The zero-based index of the parameter. + The restrictions to filter the collection. + The Views - + - Inserts a NpgsqlParameter into the collection at the specified index. + Returns the Users containing user names and the sysid of those users. - The zero-based index where the parameter is to be inserted within the collection. - The NpgsqlParameter to add to the collection. + The restrictions to filter the collection. + The Users. - + + + This class represents a StartupPacket message of PostgreSQL + protocol. + + + + - Removes the specified NpgsqlParameter from the collection. + Represents a completed response message. - The NpgsqlParameter to remove from the collection. - + + + This class represents the Parse message sent to PostgreSQL + server. + + + + - Gets a value indicating whether a NpgsqlParameter exists in the collection. + Represents a transaction to be made in a PostgreSQL database. This class cannot be inherited. - The value of the NpgsqlParameter object to find. - true if the collection contains the NpgsqlParameter object; otherwise, false. - + - Gets a value indicating whether a NpgsqlParameter with the specified parameter name exists in the collection. + Commits the database transaction. - The name of the NpgsqlParameter object to find. - A reference to the requested parameter is returned in this out param if it is found in the list. This value is null if the parameter is not found. - true if the collection contains the parameter and param will contain the parameter; otherwise, false. - + - Removes all items from the collection. + Rolls back a transaction from a pending state. - + - Gets the location of a NpgsqlParameter in the collection. + Rolls back a transaction from a pending savepoint state. - The value of the NpgsqlParameter object to find. - The zero-based index of the NpgsqlParameter object in the collection. - + - Adds the specified NpgsqlParameter object to the NpgsqlParameterCollection. + Creates a transaction save point. - The NpgsqlParameter to add to the collection. - The zero-based index of the new NpgsqlParameter object. - + - Copies NpgsqlParameter objects from the NpgsqlParameterCollection to the specified array. + Cancel the transaction without telling the backend about it. This is + used to make the transaction go away when closing a connection. - An Array to which to copy the NpgsqlParameter objects in the collection. - The starting index of the array. - + - Returns an enumerator that can iterate through the collection. + Gets the NpgsqlConnection + object associated with the transaction, or a null reference if the + transaction is no longer valid. - An IEnumerator that can be used to iterate through the collection. + The NpgsqlConnection + object associated with the transaction. - + - In methods taking an object as argument this method is used to verify - that the argument has the type NpgsqlParameter + Specifies the IsolationLevel for this transaction. - The object to verify + The IsolationLevel for this transaction. + The default is ReadCommitted. - + - Gets the NpgsqlParameter with the specified name. - - The name of the NpgsqlParameter to retrieve. - The NpgsqlParameter with the specified name, or a null reference if the parameter is not found. + This class provides many util methods to handle + reading and writing of PostgreSQL protocol messages. + - + - Gets the NpgsqlParameter at the specified index. + This method takes a ProtocolVersion and returns an integer + version number that the Postgres backend will recognize in a + startup packet. + + + + + This method takes a version string as returned by SELECT VERSION() and returns + a valid version string ("7.2.2" for example). + This is only needed when running protocol version 2. + This does not do any validity checks. - The zero-based index of the NpgsqlParameter to retrieve. - The NpgsqlParameter at the specified index. - + - Gets the number of NpgsqlParameter objects in the collection. + This method gets a C NULL terminated string from the network stream. + It keeps reading a byte in each time until a NULL byte is returned. + It returns the resultant string of bytes read. + This string is sent from backend. + + + + + Reads requested number of bytes from stream with retries until Stream.Read returns 0 or count is reached. - The number of NpgsqlParameter objects in the collection. + Stream to read + byte buffer to fill + starting position to fill the buffer + number of bytes to read + The number of bytes read. May be less than count if no more bytes are available. - + - Represents an ongoing COPY FROM STDIN operation. - Provides methods to push data to server and end or cancel the operation. + This method writes a C NULL terminated string to the network stream. + It appends a NULL terminator to the end of the String. + + + This method writes a C NULL terminated string to the network stream. + It appends a NULL terminator to the end of the String. + + + + + This method writes a set of bytes to the stream. It also enables logging of them. - + - Called from NpgsqlState.ProcessBackendResponses upon CopyInResponse. - If CopyStream is already set, it is used to read data to push to server, after which the copy is completed. - Otherwise CopyStream is set to a writable NpgsqlCopyInStream that calls SendCopyData each time it is written to. + This method writes a C NULL terminated string limited in length to the + backend server. + It pads the string with null bytes to the size specified. + + + + + Write a 32-bit integer to the given stream in the correct byte order. - + - Sends given packet to server as a CopyData message. - Does not check for notifications! Use another thread for that. + Read a 32-bit integer from the given stream in the correct byte order. - + - Sends CopyDone message to server. Handles responses, ie. may throw an exception. + Write a 16-bit integer to the given stream in the correct byte order. - + - Sends CopyFail message to server. Handles responses, ie. should always throw an exception: - in CopyIn state the server responds to CopyFail with an error response; - outside of a CopyIn state the server responds to CopyFail with an error response; - without network connection or whatever, there's going to eventually be a failure, timeout or user intervention. + Read a 16-bit integer from the given stream in the correct byte order. - + - Copy format information returned from server. + Represent the frontend/backend protocol version. - + - Represents a PostgreSQL Point type + Represent the backend server version. + As this class offers no functionality beyond that offered by it has been + deprecated in favour of that class. + - + - Represents a PostgreSQL Line Segment type. + Returns the string representation of this version in three place dot notation (Major.Minor.Patch). - + - Represents a PostgreSQL Path type. + Server version major number. - + - Represents a PostgreSQL Polygon type. + Server version minor number. - + - Represents a PostgreSQL Circle type. + Server version patch level number. - + - Represents a PostgreSQL inet type. + A class to handle everything associated with SSPI authentication - + - This class represents a PasswordPacket message sent to backend - PostgreSQL. + Simplified SecBufferDesc struct with only one SecBuffer
diff --git a/packages/Npgsql.2.0.14.3/lib/net40/de/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net40/de/Npgsql.resources.dll new file mode 100644 index 000000000..11f4328b1 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net40/de/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net40/es/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net40/es/Npgsql.resources.dll new file mode 100644 index 000000000..7a6587b10 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net40/es/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net40/fi/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net40/fi/Npgsql.resources.dll new file mode 100644 index 000000000..643d4dfc9 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net40/fi/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net40/fr/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net40/fr/Npgsql.resources.dll new file mode 100644 index 000000000..6c5186e66 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net40/fr/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net40/ja/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net40/ja/Npgsql.resources.dll new file mode 100644 index 000000000..02bd1d907 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net40/ja/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net40/zh-CN/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net40/zh-CN/Npgsql.resources.dll new file mode 100644 index 000000000..f34d9d8dc Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net40/zh-CN/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net45/Mono.Security.dll b/packages/Npgsql.2.0.14.3/lib/net45/Mono.Security.dll new file mode 100644 index 000000000..1371f5cb6 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net45/Mono.Security.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net45/Npgsql.dll b/packages/Npgsql.2.0.14.3/lib/net45/Npgsql.dll new file mode 100644 index 000000000..9635ef8cd Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net45/Npgsql.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net45/Npgsql.pdb b/packages/Npgsql.2.0.14.3/lib/net45/Npgsql.pdb new file mode 100644 index 000000000..4ae41dc03 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net45/Npgsql.pdb differ diff --git a/packages/Npgsql.2.0.14.3/lib/net45/Npgsql.xml b/packages/Npgsql.2.0.14.3/lib/net45/Npgsql.xml new file mode 100644 index 000000000..0f5dc5348 --- /dev/null +++ b/packages/Npgsql.2.0.14.3/lib/net45/Npgsql.xml @@ -0,0 +1,4705 @@ + + + + Npgsql + + + + + Handles serialisation of .NET array or IEnumeration to pg format. + Arrays of arrays, enumerations of enumerations, arrays of enumerations etc. + are treated as multi-dimensional arrays (in much the same manner as an array of arrays + is used to emulate multi-dimensional arrays in languages that lack native support for them). + If such an enumeration of enumerations is "jagged" (as opposed to rectangular, cuboid, + hypercuboid, hyperhypercuboid, etc) then this class will "correctly" serialise it, but pg + will raise an error as it doesn't allow jagged arrays. + + + + + Create an ArrayNativeToBackendTypeConverter with the element converter passed + + The that would be used to serialise the element type. + + + + Serialise the enumeration or array. + + + + + Handles parsing of pg arrays into .NET arrays. + + + + + Takes a string representation of a pg 1-dimensional array + (or a 1-dimensional row within an n-dimensional array) + and allows enumeration of the string represenations of each items. + + + + + Takes a string representation of a pg n-dimensional array + and allows enumeration of the string represenations of the next + lower level of rows (which in turn can be taken as (n-1)-dimensional arrays. + + + + + Takes an ArrayList which may be an ArrayList of ArrayLists, an ArrayList of ArrayLists of ArrayLists + and so on and enumerates the items that aren't ArrayLists (the leaf nodes if we think of the ArrayList + passed as a tree). Simply uses the ArrayLists' own IEnumerators to get that of the next, + pushing them onto a stack until we hit something that isn't an ArrayList. + ArrayList to enumerate + IEnumerable + + + + + Create a new ArrayBackendToNativeTypeConverter + + for the element type. + + + + Creates an array from pg representation. + + + + + Creates an array list from pg represenation of an array. + Multidimensional arrays are treated as ArrayLists of ArrayLists + + + + + Creates an n-dimensional array from an ArrayList of ArrayLists or + a 1-dimensional array from something else. + + to convert + produced. + + + + Takes an array of ints and treats them like the limits of a set of counters. + Retains a matching set of ints that is set to all zeros on the first ++ + On a ++ it increments the "right-most" int. If that int reaches it's + limit it is set to zero and the one before it is incremented, and so on. + + Making this a more general purpose class is pretty straight-forward, but we'll just put what we need here. + + + + + Implements a bit string; a collection of zero or more bits which can each be 1 or 0. + BitString's behave as a list of bools, though like most strings and unlike most collections the position + tends to be of as much significance as the value. + BitStrings are often used as masks, and are commonly cast to and from other values. + + + + + Represents the empty string. + + + + + Create a BitString from an enumeration of boolean values. The BitString will contain + those booleans in the order they came in. + + The boolean values. + + + + Creates a BitString filled with a given number of true or false values. + + The value to fill the string with. + The number of bits to fill. + + + + Creats a bitstring from a string. + The string to copy from. + + + + + + Creates a single-bit element from a boolean value. + + The bool value which determines whether + the bit is 1 or 0. + + + + Creates a bitstring from an unsigned integer value. The string will be the shortest required to + contain the integer (e.g. 1 bit for 0 or 1, 2 for 2 or 3, 3 for 4-7, and so on). + + The integer. + This method is not CLS Compliant, and may not be available to some languages. + + + + Creates a bitstring from an integer value. The string will be the shortest required to + contain the integer (e.g. 1 bit for 0 or 1, 2 for 2 or 3, 3 for 4-7, and so on). + + The integer. + + + + Finds the first instance of a given value + + The value - whether true or false - to search for. + The index of the value found, or -1 if none are present. + + + + True if there is at least one bit with the value looked for. + + The value - true or false - to detect. + True if at least one bit was the same as item, false otherwise. + + + + Copies the bitstring to an array of bools. + + The boolean array to copy to. + The index in the array to start copying from. + + + + Returns an enumerator that enumerates through the string. + + The enumerator. + + + + Creats a bitstring by concatenating another onto this one. + + The string to append to this one. + The combined strings. + + + + Returns a substring of this string. + + The position to start from, must be between 0 and the length of the string. + The length of the string to return, must be greater than zero, and may not be + so large that the start + length exceeds the bounds of this instance. + The Bitstring identified + + + + Returns a substring of this string. + + The position to start from, must be between 0 and the length of the string, + the rest of the string is returned. + The Bitstring identified + + + + A logical and between this string and another. The two strings must be the same length. + + Another BitString to AND with this one. + A bitstring with 1 where both BitStrings had 1 and 0 otherwise. + + + + A logical or between this string and another. The two strings must be the same length. + + Another BitString to OR with this one. + A bitstring with 1 where either BitString had 1 and 0 otherwise. + + + + A logical xor between this string and another. The two strings must be the same length. + + Another BitString to XOR with this one. + A bitstring with 1 where one BitStrings and the other had 0, + and 0 where they both had 1 or both had 0. + + + + A bitstring that is the logical inverse of this one. + + A bitstring of the same length as this with 1 where this has 0 and vice-versa. + + + + Shifts the string operand bits to the left, filling with zeros to produce a + string of the same length. + + The number of bits to shift to the left. + A left-shifted bitstring. + The behaviour of LShift is closer to what one would expect from dealing + with PostgreSQL bit-strings than in using the same operations on integers in .NET + In particular, negative operands result in a right-shift, and operands greater than + the length of the string will shift it entirely, resulting in a zero-filled string. + + + + + Shifts the string operand bits to the right, filling with zeros to produce a + string of the same length. + + The number of bits to shift to the right. + A right-shifted bitstring. + The behaviour of RShift is closer to what one would expect from dealing + with PostgreSQL bit-strings than in using the same operations on integers in .NET + In particular, negative operands result in a left-shift, and operands greater than + the length of the string will shift it entirely, resulting in a zero-filled string. It also performs + a logical shift, rather than an arithmetic shift, so it always sets the vacated bit positions to zero + (like PostgreSQL and like .NET for unsigned integers but not for signed integers). + + + + + Returns true if the this string is identical to the argument passed. + + + + + Compares two strings. Strings are compared as strings, so while 0 being less than 1 will + mean a comparison between two strings of the same size is the same as treating them as numbers, + in the case of two strings of differing lengths the comparison starts at the right-most (most significant) + bit, and if all bits of the shorter string are exhausted without finding a comparison, then the larger + string is deemed to be greater than the shorter (0010 is greater than 0001 but less than 00100). + + Another string to compare with this one. + A value if the two strings are identical, an integer less + than zero if this is less than the argument, and an integer greater + than zero otherwise. + + + + Compares the string with another object. + + The object to compare with. + If the object is null then this string is considered greater. If the object is another BitString + then they are compared as in the explicit comparison for BitStrings + in any other case a is thrown. + + + + Compares this BitString with an object for equality. + + + + + Returns a code for use in hashing operations. + + + + + Returns a string representation of the BitString. + + + A string which can contain a letter and optionally a number which sets a minimum size for the string + returned. In each case using the lower-case form of the letter will result in a lower-case string + being returned. + + + B + A string of 1s and 0s. + + + X + An hexadecimal string (will result in an error unless the string's length is divisible by 4). + + + G + A string of 1s and 0s in single-quotes preceded by 'B' (Postgres bit string literal syntax). + + Y + An hexadecimal string in single-quotes preceded by 'X' (Postgres bit literal syntax, will result in an error unless the string's length is divisible by 4. + + C + The format produced by format-string "Y" if legal, otherwise that produced by format-string "G". + E + The most compact safe representation for Postgres. If single bit will be either a 0 or a 1. Otherwise if it + can be that produce by format string "Y" it will, otherwise if there are less than 9bits in length it will be that + produced by format-string "G". For longer strings that cannot be represented in hexadecimal it will be a string + representing the first part of the string in format "Y" followed by the PostgreSQL concatenation operator, followed + by the final bits in the format "G". E.g. "X'13DCE'||B'110'" + If format is empty or null, it is treated as if "B" had been passed (the default repreesentation, and that + generally used by PostgreSQL for display). + + The formatted string. + + + + Returns a string representation for the Bitstring + + A string containing '0' and '1' characters. + + + + Returns the same string as . formatProvider is ignored. + + + + + Parses a string to produce a BitString. Most formats that can be produced by + can be accepted, but hexadecimal + can be interpreted with the preceding X' to mark the following characters as + being hexadecimal rather than binary. + + + + + Performs a logical AND on the two operands. + + + + + Performs a logcial OR on the two operands. + + + + + Perofrms a logical EXCLUSIVE-OR on the two operands + + + + + Performs a logical NOT on the operand. + + + + + Concatenates the operands. + + + + + Left-shifts the string BitString. + + + + + Right-shifts the string BitString. + + + + + Compares the two operands. + + + + + Compares the two operands. + + + + + Compares the two operands. + + + + + Compares the two operands. + + + + + Compares the two operands. + + + + + Compares the two operands. + + + + + Interprets the bitstring as a series of bits in an encoded character string, + encoded according to the Encoding passed, and returns that string. + The bitstring must contain a whole number of octets(bytes) and also be + valid according to the Encoding passed. + + The to use in producing the string. + The string that was encoded in the BitString. + + + + Interprets the bitstring as a series of octets (bytes) and returns those octets. Fails + if the Bitstring does not contain a whole number of octets (its length is not evenly + divisible by 8). + + + + + Interprets the bitstring as a series of signed octets (bytes) and returns those octets. Fails + if the Bitstring does not contain a whole number of octets (its length is not evenly + divisible by 8). + This method is not CLS-Compliant and may not be available to languages that cannot + handle signed bytes. + + + + + Interprets the bitstring as a series of unsigned 16-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 16. + This method is not CLS-Compliant and may not be available to languages that cannot + handle unsigned integers. + + + + + Interprets the bitstring as a series of 16-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 16. + + + + + Interprets the bitstring as a series of unsigned 32-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 32. + This method is not CLS-Compliant and may not be available to languages that cannot + handle unsigned integers. + + + + + Interprets the bitstring as a series of signed 32-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 32. + + + + + Interprets the bitstring as a series of unsigned 64-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 64. + This method is not CLS-Compliant and may not be available to languages that cannot + handle unsigned integers. + + + + + Interprets the bitstring as a series of signed 64-bit integers and returns those integers. + Fails if the Bitstring's length is not evenly divisible by 64. + + + + + The length of the string. + + + + + Retrieves the value of the bit at the given index. + + + + + Represents the PostgreSQL interval datatype. + PostgreSQL differs from .NET in how it's interval type doesn't assume 24 hours in a day + (to deal with 23- and 25-hour days caused by daylight savings adjustments) and has a concept + of months that doesn't exist in .NET's class. (Neither datatype + has any concessions for leap-seconds). + For most uses just casting to and from TimeSpan will work correctly — in particular, + the results of subtracting one or the PostgreSQL date, time and + timestamp types from another should be the same whether you do so in .NET or PostgreSQL — + but if the handling of days and months in PostgreSQL is important to your application then you + should use this class instead of . + If you don't know whether these differences are important to your application, they + probably arent! Just use and do not use this class directly ☺ + To avoid forcing unnecessary provider-specific concerns on users who need not be concerned + with them a call to on a field containing an + value will return a rather than an + . If you need the extra functionality of + then use . + + + + + + + + + + Represents the number of ticks (100ns periods) in one microsecond. This field is constant. + + + + + Represents the number of ticks (100ns periods) in one millisecond. This field is constant. + + + + + Represents the number of ticks (100ns periods) in one second. This field is constant. + + + + + Represents the number of ticks (100ns periods) in one minute. This field is constant. + + + + + Represents the number of ticks (100ns periods) in one hour. This field is constant. + + + + + Represents the number of ticks (100ns periods) in one day. This field is constant. + + + + + Represents the number of hours in one day (assuming no daylight savings adjustments). This field is constant. + + + + + Represents the number of days assumed in one month if month justification or unjustifcation is performed. + This is set to 30 for consistency with PostgreSQL. Note that this is means that month adjustments cause + a year to be taken as 30 × 12 = 360 rather than 356/366 days. + + + + + Represents the number of ticks (100ns periods) in one day, assuming 30 days per month. + + + + + Represents the number of months in a year. This field is constant. + + + + + Represents the maximum . This field is read-only. + + + + + Represents the minimum . This field is read-only. + + + + + Represents the zero . This field is read-only. + + + + + Initializes a new to the specified number of ticks. + + A time period expressed in 100ns units. + + + + Initializes a new to hold the same time as a + + A time period expressed in a + + + + Initializes a new to the specified number of months, days + & ticks. + + Number of months. + Number of days. + Number of 100ns units. + + + + Initializes a new to the specified number of + days, hours, minutes & seconds. + + Number of days. + Number of hours. + Number of minutes. + Number of seconds. + + + + Initializes a new to the specified number of + days, hours, minutes, seconds & milliseconds. + + Number of days. + Number of hours. + Number of minutes. + Number of seconds. + Number of milliseconds. + + + + Initializes a new to the specified number of + months, days, hours, minutes, seconds & milliseconds. + + Number of months. + Number of days. + Number of hours. + Number of minutes. + Number of seconds. + Number of milliseconds. + + + + Initializes a new to the specified number of + years, months, days, hours, minutes, seconds & milliseconds. + Years are calculated exactly equivalent to 12 months. + + Number of years. + Number of months. + Number of days. + Number of hours. + Number of minutes. + Number of seconds. + Number of milliseconds. + + + + Creates an from a number of ticks. + + The number of ticks (100ns units) in the interval. + A d with the given number of ticks. + + + + Creates an from a number of microseconds. + + The number of microseconds in the interval. + A d with the given number of microseconds. + + + + Creates an from a number of milliseconds. + + The number of milliseconds in the interval. + A d with the given number of milliseconds. + + + + Creates an from a number of seconds. + + The number of seconds in the interval. + A d with the given number of seconds. + + + + Creates an from a number of minutes. + + The number of minutes in the interval. + A d with the given number of minutes. + + + + Creates an from a number of hours. + + The number of hours in the interval. + A d with the given number of hours. + + + + Creates an from a number of days. + + The number of days in the interval. + A d with the given number of days. + + + + Creates an from a number of months. + + The number of months in the interval. + A d with the given number of months. + + + + Adds another interval to this instance and returns the result. + + An to add to this instance. + An whose values are the sums of the two instances. + + + + Subtracts another interval from this instance and returns the result. + + An to subtract from this instance. + An whose values are the differences of the two instances. + + + + Returns an whose value is the negated value of this instance. + + An whose value is the negated value of this instance. + + + + This absolute value of this instance. In the case of some, but not all, components being negative, + the rules used for justification are used to determine if the instance is positive or negative. + + An whose value is the absolute value of this instance. + + + + Equivalent to PostgreSQL's justify_days function. + + An based on this one, but with any hours outside of the range [-23, 23] + converted into days. + + + + Opposite to PostgreSQL's justify_days function. + + An based on this one, but with any days converted to multiples of ±24hours. + + + + Equivalent to PostgreSQL's justify_months function. + + An based on this one, but with any days outside of the range [-30, 30] + converted into months. + + + + Opposite to PostgreSQL's justify_months function. + + An based on this one, but with any months converted to multiples of ±30days. + + + + Equivalent to PostgreSQL's justify_interval function. + + An based on this one, + but with any months converted to multiples of ±30days + and then with any days converted to multiples of ±24hours + + + + Opposite to PostgreSQL's justify_interval function. + + An based on this one, but with any months converted to multiples of ±30days and then any days converted to multiples of ±24hours; + + + + + Implicit cast of a to an + + A + An eqivalent, canonical, . + + + + Implicit cast of an to a . + + A . + An equivalent . + + + + Returns true if another is exactly the same as this instance. + + An for comparison. + true if the two instances are exactly the same, + false otherwise. + + + + Returns true if another object is an , that is exactly the same as + this instance + + An for comparison. + true if the argument is an and is exactly the same + as this one, false otherwise. + + + + Compares two instances. + + The first . + The second . + 0 if the two are equal or equivalent. A value greater than zero if x is greater than y, + a value less than zero if x is less than y. + + + + A hash code suitable for uses with hashing algorithms. + + An signed integer. + + + + Compares this instance with another/ + + An to compare this with. + 0 if the instances are equal or equivalent. A value less than zero if + this instance is less than the argument. A value greater than zero if this instance + is greater than the instance. + + + + Compares this instance with another/ + + An object to compare this with. + 0 if the argument is an and the instances are equal or equivalent. + A value less than zero if the argument is an and + this instance is less than the argument. + A value greater than zero if the argument is an and this instance + is greater than the instance. + A value greater than zero if the argument is null. + The argument is not an . + + + + Parses a and returns a instance. + Designed to use the formats generally returned by PostgreSQL. + + The to parse. + An represented by the argument. + The string was null. + A value obtained from parsing the string exceeded the values allowed for the relevant component. + The string was not in a format that could be parsed to produce an . + + + + Attempt to parse a to produce an . + + The to parse. + (out) The produced, or if the parsing failed. + true if the parsing succeeded, false otherwise. + + + + Create a representation of the instance. + The format returned is of the form: + [M mon[s]] [d day[s]] [HH:mm:ss[.f[f[f[f[f[f[f[f[f]]]]]]]]]] + A zero is represented as 00:00:00 + + Ticks are 100ns, Postgress resolution is only to 1µs at most. Hence we lose 1 or more decimal + precision in storing values in the database. Despite this, this method will output that extra + digit of precision. It's forward-compatible with any future increases in resolution up to 100ns, + and also makes this ToString() more applicable to any other use-case. + + + The representation. + + + + Adds two together. + + The first to add. + The second to add. + An whose values are the sum of the arguments. + + + + Subtracts one from another. + + The to subtract the other from. + The to subtract from the other. + An whose values are the difference of the arguments + + + + Returns true if two are exactly the same. + + The first to compare. + The second to compare. + true if the two arguments are exactly the same, false otherwise. + + + + Returns false if two are exactly the same. + + The first to compare. + The second to compare. + false if the two arguments are exactly the same, true otherwise. + + + + Compares two instances to see if the first is less than the second + + The first to compare. + The second to compare. + true if the first is less than second, false otherwise. + + + + Compares two instances to see if the first is less than or equivalent to the second + + The first to compare. + The second to compare. + true if the first is less than or equivalent to second, false otherwise. + + + + Compares two instances to see if the first is greater than the second + + The first to compare. + The second to compare. + true if the first is greater than second, false otherwise. + + + + Compares two instances to see if the first is greater than or equivalent the second + + The first to compare. + The second to compare. + true if the first is greater than or equivalent to the second, false otherwise. + + + + Returns the instance. + + An . + The argument. + + + + Negates an instance. + + An . + The negation of the argument. + + + + The total number of ticks(100ns units) contained. This is the resolution of the + type. This ignores the number of days and + months held. If you want them included use first. + The resolution of the PostgreSQL + interval type is by default 1µs = 1,000 ns. It may be smaller as follows: + + + interval(0) + resolution of 1s (1 second) + + + interval(1) + resolution of 100ms = 0.1s (100 milliseconds) + + + interval(2) + resolution of 10ms = 0.01s (10 milliseconds) + + + interval(3) + resolution of 1ms = 0.001s (1 millisecond) + + + interval(4) + resolution of 100µs = 0.0001s (100 microseconds) + + + interval(5) + resolution of 10µs = 0.00001s (10 microseconds) + + + interval(6) or interval + resolution of 1µs = 0.000001s (1 microsecond) + + + As such, if the 100-nanosecond resolution is significant to an application, a PostgreSQL interval will + not suffice for those purposes. + In more frequent cases though, the resolution of the interval suffices. + will always suffice to handle the resolution of any interval value, and upon + writing to the database, will be rounded to the resolution used. + + The number of ticks in the instance. + + + + + Gets the number of whole microseconds held in the instance. + An in the range [-999999, 999999]. + + + + + Gets the number of whole milliseconds held in the instance. + An in the range [-999, 999]. + + + + + Gets the number of whole seconds held in the instance. + An in the range [-59, 59]. + + + + + Gets the number of whole minutes held in the instance. + An in the range [-59, 59]. + + + + + Gets the number of whole hours held in the instance. + Note that this can be less than -23 or greater than 23 unless + has been used to produce this instance. + + + + + Gets the number of days held in the instance. + Note that this does not pay attention to a time component with -24 or less hours or + 24 or more hours, unless has been called to produce this instance. + + + + + Gets the number of months held in the instance. + Note that this does not pay attention to a day component with -30 or less days or + 30 or more days, unless has been called to produce this instance. + + + + + Returns a representing the time component of the instance. + Note that this may have a value beyond the range ±23:59:59.9999999 unless + has been called to produce this instance. + + + + + The total number of ticks (100ns units) in the instance, assuming 24 hours in each day and + 30 days in a month. + + + + + The total number of microseconds in the instance, assuming 24 hours in each day and + 30 days in a month. + + + + + The total number of milliseconds in the instance, assuming 24 hours in each day and + 30 days in a month. + + + + + The total number of seconds in the instance, assuming 24 hours in each day and + 30 days in a month. + + + + + The total number of minutes in the instance, assuming 24 hours in each day and + 30 days in a month. + + + + + The total number of hours in the instance, assuming 24 hours in each day and + 30 days in a month. + + + + + The total number of days in the instance, assuming 24 hours in each day and + 30 days in a month. + + + + + The total number of months in the instance, assuming 24 hours in each day and + 30 days in a month. + + + + + Normalise this time; if it is 24:00:00, convert it to 00:00:00 + + This time, normalised + + + + The total number of ticks(100ns units) contained. This is the resolution of the + type. + The resolution of the PostgreSQL + interval type is by default 1µs = 1,000 ns. It may be smaller as follows: + + + time(0) + resolution of 1s (1 second) + + + time(1) + resolution of 100ms = 0.1s (100 milliseconds) + + + time(2) + resolution of 10ms = 0.01s (10 milliseconds) + + + time(3) + resolution of 1ms = 0.001s (1 millisecond) + + + time(4) + resolution of 100µs = 0.0001s (100 microseconds) + + + time(5) + resolution of 10µs = 0.00001s (10 microseconds) + + + time(6) or interval + resolution of 1µs = 0.000001s (1 microsecond) + + + As such, if the 100-nanosecond resolution is significant to an application, a PostgreSQL time will + not suffice for those purposes. + In more frequent cases though, the resolution of time suffices. + will always suffice to handle the resolution of any time value, and upon + writing to the database, will be rounded to the resolution used. + + The number of ticks in the instance. + + + + + Gets the number of whole microseconds held in the instance. + An integer in the range [0, 999999]. + + + + + Gets the number of whole milliseconds held in the instance. + An integer in the range [0, 999]. + + + + + Gets the number of whole seconds held in the instance. + An interger in the range [0, 59]. + + + + + Gets the number of whole minutes held in the instance. + An integer in the range [0, 59]. + + + + + Gets the number of whole hours held in the instance. + Note that the time 24:00:00 can be stored for roundtrip compatibility. Any calculations on such a + value will normalised it to 00:00:00. + + + + + Normalise this time; if it is 24:00:00, convert it to 00:00:00 + + This time, normalised + + + + Compares this with another . As per postgres' rules, + first the times are compared as if they were both in the same timezone. If they are equal then + then timezones are compared (+01:00 being "smaller" than -01:00). + + the to compare with. + An integer which is 0 if they are equal, < 0 if this is the smaller and > 0 if this is the larger. + + + + Gets the number of whole microseconds held in the instance. + An integer in the range [0, 999999]. + + + + + Gets the number of whole milliseconds held in the instance. + An integer in the range [0, 999]. + + + + + Gets the number of whole seconds held in the instance. + An interger in the range [0, 59]. + + + + + Gets the number of whole minutes held in the instance. + An integer in the range [0, 59]. + + + + + Gets the number of whole hours held in the instance. + Note that the time 24:00:00 can be stored for roundtrip compatibility. Any calculations on such a + value will normalised it to 00:00:00. + + + + + Summary description for LargeObjectManager. + + + + + Provide event handlers to convert all native supported basic data types from their backend + text representation to a .NET object. + + + + + Binary data. + + + + + Convert a postgresql boolean to a System.Boolean. + + + + + Convert a postgresql bit to a System.Boolean. + + + + + Convert a postgresql datetime to a System.DateTime. + + + + + Convert a postgresql date to a System.DateTime. + + + + + Convert a postgresql time to a System.DateTime. + + + + + Convert a postgresql money to a System.Decimal. + + + + + Provide event handlers to convert the basic native supported data types from + native form to backend representation. + + + + + Binary data. + + + + + Convert to a postgresql boolean. + + + + + Convert to a postgresql bit. + + + + + Convert to a postgresql timestamp. + + + + + Convert to a postgresql date. + + + + + Convert to a postgresql time. + + + + + Convert to a postgres money. + + + + + Convert to a postgres double with maximum precision. + + + + + Provide event handlers to convert extended native supported data types from their backend + text representation to a .NET object. + + + + + Convert a postgresql point to a System.NpgsqlPoint. + + + + + Convert a postgresql point to a System.RectangleF. + + + + + LDeg. + + + + + Path. + + + + + Polygon. + + + + + Circle. + + + + + Inet. + + + + + MAC Address. + + + + + interval + + + + + Provide event handlers to convert extended native supported data types from + native form to backend representation. + + + + + Point. + + + + + Box. + + + + + LSeg. + + + + + Open path. + + + + + Polygon. + + + + + Convert to a postgres MAC Address. + + + + + Circle. + + + + + Convert to a postgres inet. + + + + + Convert to a postgres interval + + + + + Represents a PostgreSQL Point type + + + + + Represents a PostgreSQL Line Segment type. + + + + + Represents a PostgreSQL Path type. + + + + + Represents a PostgreSQL Polygon type. + + + + + Represents a PostgreSQL Circle type. + + + + + Represents a PostgreSQL inet type. + + + + + Represents a PostgreSQL MacAddress type. + + + + + + + The macAddr parameter must contain a string that can only consist of numbers + and upper-case letters as hexadecimal digits. (See PhysicalAddress.Parse method on MSDN) + + + + This class contains helper methods for type conversion between + the .Net type system and postgresql. + + + + + A cache of basic datatype mappings keyed by server version. This way we don't + have to load the basic type mappings for every connection. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given NpgsqlDbType. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given NpgsqlDbType. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given DbType. + + + + + Find a NpgsqlNativeTypeInfo in the default types map that can handle objects + of the given System.Type. + + + + + This method is responsible to convert the string received from the backend + to the corresponding NpgsqlType. + The given TypeInfo is called upon to do the conversion. + If no TypeInfo object is provided, no conversion is performed. + + + + + Create the one and only native to backend type map. + This map is used when formatting native data + types to backend representations. + + + + + This method creates (or retrieves from cache) a mapping between type and OID + of all natively supported postgresql data types. + This is needed as from one version to another, this mapping can be changed and + so we avoid hardcoding them. + + NpgsqlTypeMapping containing all known data types. The mapping must be + cloned before it is modified because it is cached; changes made by one connection may + effect another connection. + + + + Attempt to map types by issuing a query against pg_type. + This function takes a list of NpgsqlTypeInfo and attempts to resolve the OID field + of each by querying pg_type. If the mapping is found, the type info object is + updated (OID) and added to the provided NpgsqlTypeMapping object. + + NpgsqlConnector to send query through. + Mapping object to add types too. + List of types that need to have OID's mapped. + + + + Delegate called to convert the given backend data to its native representation. + + + + + Delegate called to convert the given native data to its backand representation. + + + + + Represents a backend data type. + This class can be called upon to convert a backend field representation to a native object. + + + + + Construct a new NpgsqlTypeInfo with the given attributes and conversion handlers. + + Type OID provided by the backend server. + Type name provided by the backend server. + NpgsqlDbType + System type to convert fields of this type to. + Data conversion handler. + + + + Perform a data conversion from a backend representation to + a native object. + + Data sent from the backend. + Type modifier field sent from the backend. + + + + Type OID provided by the backend server. + + + + + Type name provided by the backend server. + + + + + NpgsqlDbType. + + + + + NpgsqlDbType. + + + + + Provider type to convert fields of this type to. + + + + + System type to convert fields of this type to. + + + + + Represents a backend data type. + This class can be called upon to convert a native object to its backend field representation, + + + + + Returns an NpgsqlNativeTypeInfo for an array where the elements are of the type + described by the NpgsqlNativeTypeInfo supplied. + + + + + Construct a new NpgsqlTypeInfo with the given attributes and conversion handlers. + + Type name provided by the backend server. + NpgsqlDbType + Data conversion handler. + + + + Perform a data conversion from a native object to + a backend representation. + DBNull and null values are handled differently depending if a plain query is used + When + + Native .NET object to be converted. + Flag indicating if the conversion has to be done for + plain queries or extended queries + + + + Type name provided by the backend server. + + + + + NpgsqlDbType. + + + + + DbType. + + + + + Apply quoting. + + + + + Use parameter size information. + + + + + Provide mapping between type OID, type name, and a NpgsqlBackendTypeInfo object that represents it. + + + + + Construct an empty mapping. + + + + + Copy constuctor. + + + + + Add the given NpgsqlBackendTypeInfo to this mapping. + + + + + Add a new NpgsqlBackendTypeInfo with the given attributes and conversion handlers to this mapping. + + Type OID provided by the backend server. + Type name provided by the backend server. + NpgsqlDbType + System type to convert fields of this type to. + Data conversion handler. + + + + Make a shallow copy of this type mapping. + + + + + Determine if a NpgsqlBackendTypeInfo with the given backend type OID exists in this mapping. + + + + + Determine if a NpgsqlBackendTypeInfo with the given backend type name exists in this mapping. + + + + + Get the number of type infos held. + + + + + Retrieve the NpgsqlBackendTypeInfo with the given backend type OID, or null if none found. + + + + + Retrieve the NpgsqlBackendTypeInfo with the given backend type name, or null if none found. + + + + + Provide mapping between type Type, NpgsqlDbType and a NpgsqlNativeTypeInfo object that represents it. + + + + + Add the given NpgsqlNativeTypeInfo to this mapping. + + + + + Add a new NpgsqlNativeTypeInfo with the given attributes and conversion handlers to this mapping. + + Type name provided by the backend server. + NpgsqlDbType + Data conversion handler. + + + + Retrieve the NpgsqlNativeTypeInfo with the given NpgsqlDbType. + + + + + Retrieve the NpgsqlNativeTypeInfo with the given DbType. + + + + + Retrieve the NpgsqlNativeTypeInfo with the given Type. + + + + + Determine if a NpgsqlNativeTypeInfo with the given backend type name exists in this mapping. + + + + + Determine if a NpgsqlNativeTypeInfo with the given NpgsqlDbType exists in this mapping. + + + + + Determine if a NpgsqlNativeTypeInfo with the given Type name exists in this mapping. + + + + + Get the number of type infos held. + + + + + Given a join expression and a projection, fetch all columns in the projection + that reference columns in the join. + + + + + Given an InputExpression append all from names (including nested joins) to the list. + + + + + Get new ColumnExpression that will be used in projection that had it's existing columns moved. + These should be simple references to the inner column + + + + + Every property accessed in the list of columns must be adjusted for a new scope + + + + + Set Cache Size. The default value is 20. + + + + + Lookup cached entity. null will returned if not match. + For both get{} and set{} apply LRU rule. + + key + + + + + Called from constructor of derived class. + + + + + Finalizer for HashAlgorithm + + + + + Computes the entire hash of all the bytes in the byte array. + + + + + When overridden in a derived class, drives the hashing function. + + + + + + + + When overridden in a derived class, this pads and hashes whatever data might be left in the buffers and then returns the hash created. + + + + + When overridden in a derived class, initializes the object to prepare for hashing. + + + + + Used for stream chaining. Computes hash as data passes through it. + + The buffer from which to grab the data to be copied. + The offset into the input buffer to start reading at. + The number of bytes to be copied. + The buffer to write the copied data to. + At what point in the outputBuffer to write the data at. + + + + Used for stream chaining. Computes hash as data passes through it. Finishes off the hash. + + The buffer from which to grab the data to be copied. + The offset into the input buffer to start reading at. + The number of bytes to be copied. + + + + Get whether or not the hash can transform multiple blocks at a time. + Note: MUST be overriden if descendant can transform multiple block + on a single call! + + + + + Gets the previously computed hash. + + + + + Returns the size in bits of the hash. + + + + + Must be overriden if not 1 + + + + + Must be overriden if not 1 + + + + + Common base class for all derived MD5 implementations. + + + + + Called from constructor of derived class. + + + + + Creates the default derived class. + + + + + C# implementation of the MD5 cryptographic hash function. + + + + + Creates a new MD5CryptoServiceProvider. + + + + + Drives the hashing function. + + Byte array containing the data to hash. + Where in the input buffer to start. + Size in bytes of the data in the buffer to hash. + + + + This finalizes the hash. Takes the data from the chaining variables and returns it. + + + + + Resets the class after use. Called automatically after hashing is done. + + + + + This is the meat of the hash function. It is what processes each block one at a time. + + Byte array to process data from. + Where in the byte array to start processing. + + + + Pads and then processes the final block. + + Buffer to grab data from. + Position in buffer in bytes to get data from. + How much data in bytes in the buffer to use. + + + + Implements for version 3 of the protocol. + + + + + Reads a row, field by field, allowing a DataRow to be built appropriately. + + + + + Marker interface which identifies a class which may take possession of a stream for the duration of + it's lifetime (possibly temporarily giving that possession to another class for part of that time. + + It inherits from IDisposable, since any such class must make sure it leaves the stream in a valid state. + + The most important such class is that compiler-generated from ProcessBackendResponsesEnum. Of course + we can't make that inherit from this interface, alas. + + + + + + Reads part of a field, as needed (for + and + + + + + Adds further functionality to stream that is dependant upon the type of data read. + + + + + Completes the implementation of Streamer for char data. + + + + + Completes the implementation of Streamer for byte data. + + + + + Implements for version 2 of the protocol. + + + + + Encapsulates the null mapping bytes sent at the start of a version 2 + datarow message, and the process of identifying the nullity of the data + at a particular index + + + + + This class represents a BackEndKeyData message received + from PostgreSQL + + + + + This class represents the Bind message sent to PostgreSQL + server. + + + + + + For classes representing messages sent from the client to the server. + + + + + This class represents the CancelRequest message sent to PostgreSQL + server. + + + + + This class represents the base class for the state pattern design pattern + implementation. + + + + + + This method is used by the states to change the state of the context. + + + + + This method is responsible to handle all protocol messages sent from the backend. + It holds all the logic to do it. + To exchange data, it uses a Mediator object from which it reads/writes information + to handle backend requests. + + + + + + This method is responsible to handle all protocol messages sent from the backend. + It holds all the logic to do it. + To exchange data, it uses a Mediator object from which it reads/writes information + to handle backend requests. + + + + + + Checks for context socket availability. + Socket.Poll supports integer as microseconds parameter. + This limits the usable command timeout value + to 2,147 seconds: (2,147 x 1,000,000 less than max_int). + In order to bypass this limit, the availability of + the socket is checked in 2,147 seconds cycles + + true, if for context socket availability was checked, false otherwise. + Context. + Select mode. + + + + Resolve a host name or IP address. + This is needed because if you call Dns.Resolve() with an IP address, it will attempt + to resolve it as a host name, when it should just convert it to an IP address. + + + + + + Represents a SQL statement or function (stored procedure) to execute + against a PostgreSQL database. This class cannot be inherited. + + + + + Initializes a new instance of the NpgsqlCommand class. + + + + + Initializes a new instance of the NpgsqlCommand class with the text of the query. + + The text of the query. + + + + Initializes a new instance of the NpgsqlCommand class with the text of the query and a NpgsqlConnection. + + The text of the query. + A NpgsqlConnection that represents the connection to a PostgreSQL server. + + + + Initializes a new instance of the NpgsqlCommand class with the text of the query, a NpgsqlConnection, and the NpgsqlTransaction. + + The text of the query. + A NpgsqlConnection that represents the connection to a PostgreSQL server. + The NpgsqlTransaction in which the NpgsqlCommand executes. + + + + Used to execute internal commands. + + + + + Attempts to cancel the execution of a NpgsqlCommand. + + This Method isn't implemented yet. + + + + Create a new command based on this one. + + A new NpgsqlCommand object. + + + + Create a new command based on this one. + + A new NpgsqlCommand object. + + + + Creates a new instance of an DbParameter object. + + An DbParameter object. + + + + Creates a new instance of a NpgsqlParameter object. + + A NpgsqlParameter object. + + + + Slightly optimised version of ExecuteNonQuery() for internal ues in cases where the number + of affected rows is of no interest. + + + + + Executes a SQL statement against the connection and returns the number of rows affected. + + The number of rows affected if known; -1 otherwise. + + + + Sends the CommandText to + the Connection and builds a + NpgsqlDataReader + using one of the CommandBehavior values. + + One of the CommandBehavior values. + A NpgsqlDataReader object. + + + + Sends the CommandText to + the Connection and builds a + NpgsqlDataReader. + + A NpgsqlDataReader object. + + + + Sends the CommandText to + the Connection and builds a + NpgsqlDataReader + using one of the CommandBehavior values. + + One of the CommandBehavior values. + A NpgsqlDataReader object. + Currently the CommandBehavior parameter is ignored. + + + + This method binds the parameters from parameters collection to the bind + message. + + + + + Executes the query, and returns the first column of the first row + in the result set returned by the query. Extra columns or rows are ignored. + + The first column of the first row in the result set, + or a null reference if the result set is empty. + + + + Creates a prepared version of the command on a PostgreSQL server. + + + + + This method checks the connection state to see if the connection + is set or it is open. If one of this conditions is not met, throws + an InvalidOperationException + + + + + This method substitutes the Parameters, if exist, in the command + to their actual values. + The parameter name format is :ParameterName. + + A version of CommandText with the Parameters inserted. + + + + Gets or sets the SQL statement or function (stored procedure) to execute at the data source. + + The Transact-SQL statement or stored procedure to execute. The default is an empty string. + + + + Gets or sets the wait time before terminating the attempt + to execute a command and generating an error. + + The time (in seconds) to wait for the command to execute. + The default is 20 seconds. + + + + Gets or sets a value indicating how the + CommandText property is to be interpreted. + + One of the CommandType values. The default is CommandType.Text. + + + + Gets or sets the NpgsqlConnection + used by this instance of the NpgsqlCommand. + + The connection to a data source. The default value is a null reference. + + + + Gets the NpgsqlParameterCollection. + + The parameters of the SQL statement or function (stored procedure). The default is an empty collection. + + + + Gets or sets the NpgsqlTransaction + within which the NpgsqlCommand executes. + + The NpgsqlTransaction. + The default value is a null reference. + + + + Gets or sets how command results are applied to the DataRow + when used by the Update + method of the DbDataAdapter. + + One of the UpdateRowSource values. + + + + Returns oid of inserted row. This is only updated when using executenonQuery and when command inserts just a single row. If table is created without oids, this will always be 0. + + + + + This class is responsible to create database commands for automatic insert, update and delete operations. + + + + + + This method is reponsible to derive the command parameter list with values obtained from function definition. + It clears the Parameters collection of command. Also, if there is any parameter type which is not supported by Npgsql, an InvalidOperationException will be thrown. + Parameters name will be parameter1, parameter2, ... + For while, only parameter name and NpgsqlDbType are obtained. + + NpgsqlCommand whose function parameters will be obtained. + + + + Represents the method that handles the Notice events. + + A NpgsqlNoticeEventArgs that contains the event data. + + + + Represents the method that handles the Notification events. + + The source of the event. + A NpgsqlNotificationEventArgs that contains the event data. + + + + This class represents a connection to a + PostgreSQL server. + + + + + Initializes a new instance of the + NpgsqlConnection class. + + + + + Initializes a new instance of the + NpgsqlConnection class + and sets the ConnectionString. + + The connection used to open the PostgreSQL database. + + + + Begins a database transaction with the specified isolation level. + + The isolation level under which the transaction should run. + An DbTransaction + object representing the new transaction. + + Currently the IsolationLevel ReadCommitted and Serializable are supported by the PostgreSQL backend. + There's no support for nested transactions. + + + + + Begins a database transaction. + + A NpgsqlTransaction + object representing the new transaction. + + Currently there's no support for nested transactions. + + + + + Begins a database transaction with the specified isolation level. + + The isolation level under which the transaction should run. + A NpgsqlTransaction + object representing the new transaction. + + Currently the IsolationLevel ReadCommitted and Serializable are supported by the PostgreSQL backend. + There's no support for nested transactions. + + + + + Opens a database connection with the property settings specified by the + ConnectionString. + + + + + This method changes the current database by disconnecting from the actual + database and connecting to the specified. + + The name of the database to use in place of the current database. + + + + Releases the connection to the database. If the connection is pooled, it will be + made available for re-use. If it is non-pooled, the actual connection will be shutdown. + + + + + Creates and returns a DbCommand + object associated with the IDbConnection. + + A DbCommand object. + + + + Creates and returns a NpgsqlCommand + object associated with the NpgsqlConnection. + + A NpgsqlCommand object. + + + + Releases all resources used by the + NpgsqlConnection. + + true when called from Dispose(); + false when being called from the finalizer. + + + + Create a new connection based on this one. + + A new NpgsqlConnection object. + + + + Create a new connection based on this one. + + A new NpgsqlConnection object. + + + + Default SSL CertificateSelectionCallback implementation. + + + + + Default SSL CertificateValidationCallback implementation. + + + + + Default SSL PrivateKeySelectionCallback implementation. + + + + + Default SSL ProvideClientCertificatesCallback implementation. + + + + + Write each key/value pair in the connection string to the log. + + + + + Returns the supported collections + + + + + Returns the schema collection specified by the collection name. + + The collection name. + The collection specified. + + + + Returns the schema collection specified by the collection name filtered by the restrictions. + + The collection name. + + The restriction values to filter the results. A description of the restrictions is contained + in the Restrictions collection. + + The collection specified. + + + + Occurs on NoticeResponses from the PostgreSQL backend. + + + + + Occurs on NotificationResponses from the PostgreSQL backend. + + + + + Called to provide client certificates for SSL handshake. + + + + + Mono.Security.Protocol.Tls.CertificateSelectionCallback delegate. + + + + + Mono.Security.Protocol.Tls.CertificateValidationCallback delegate. + + + + + Mono.Security.Protocol.Tls.PrivateKeySelectionCallback delegate. + + + + + Gets or sets the string used to connect to a PostgreSQL database. + Valid values are: +
    +
  • + Server: Address/Name of Postgresql Server; +
  • +
  • + Port: Port to connect to; +
  • +
  • + Protocol: Protocol version to use, instead of automatic; Integer 2 or 3; +
  • +
  • + Database: Database name. Defaults to user name if not specified; +
  • +
  • + User Id: User name; +
  • +
  • + Password: Password for clear text authentication; +
  • +
  • + SSL: True or False. Controls whether to attempt a secure connection. Default = False; +
  • +
  • + Pooling: True or False. Controls whether connection pooling is used. Default = True; +
  • +
  • + MinPoolSize: Min size of connection pool; +
  • +
  • + MaxPoolSize: Max size of connection pool; +
  • +
  • + Timeout: Time to wait for connection open in seconds. Default is 15. +
  • +
  • + CommandTimeout: Time to wait for command to finish execution before throw an exception. In seconds. Default is 20. +
  • +
  • + Sslmode: Mode for ssl connection control. Can be Prefer, Require, Allow or Disable. Default is Disable. Check user manual for explanation of values. +
  • +
  • + ConnectionLifeTime: Time to wait before closing unused connections in the pool in seconds. Default is 15. +
  • +
  • + SyncNotification: Specifies if Npgsql should use synchronous notifications. +
  • +
  • + SearchPath: Changes search path to specified and public schemas. +
  • +
+
+ The connection string that includes the server name, + the database name, and other parameters needed to establish + the initial connection. The default value is an empty string. + +
+ + + Backend server host name. + + + + + Backend server port. + + + + + If true, the connection will attempt to use SSL. + + + + + Gets the time to wait while trying to establish a connection + before terminating the attempt and generating an error. + + The time (in seconds) to wait for a connection to open. The default value is 15 seconds. + + + + Gets the time to wait while trying to execute a command + before terminating the attempt and generating an error. + + The time (in seconds) to wait for a command to complete. The default value is 20 seconds. + + + + Gets the time to wait before closing unused connections in the pool if the count + of all connections exeeds MinPoolSize. + + + If connection pool contains unused connections for ConnectionLifeTime seconds, + the half of them will be closed. If there will be unused connections in a second + later then again the half of them will be closed and so on. + This strategy provide smooth change of connection count in the pool. + + The time (in seconds) to wait. The default value is 15 seconds. + + + + Gets the name of the current database or the database to be used after a connection is opened. + + The name of the current database or the name of the database to be + used after a connection is opened. The default value is the empty string. + + + + Whether datareaders are loaded in their entirety (for compatibility with earlier code). + + + + + Gets the database server name. + + + + + Gets flag indicating if we are using Synchronous notification or not. + The default value is false. + + + + + Gets the current state of the connection. + + A bitwise combination of the ConnectionState values. The default is Closed. + + + + Gets whether the current state of the connection is Open or Closed + + ConnectionState.Open or ConnectionState.Closed + + + + Version of the PostgreSQL backend. + This can only be called when there is an active connection. + + + + + Protocol version in use. + This can only be called when there is an active connection. + + + + + Process id of backend server. + This can only be called when there is an active connection. + + + + + The connector object connected to the backend. + + + + + Gets the NpgsqlConnectionStringBuilder containing the parsed connection string values. + + + + + User name. + + + + + Password. + + + + + Determine if connection pooling will be used for this connection. + + + + + Return an exact copy of this NpgsqlConnectionString. + + + + + This function will set value for known key, both private member and base[key]. + + + + + + + The function will modify private member only, not base[key]. + + + + + + + Clear the member and assign them to the default value. + + + + + Compatibilty version. When possible, behaviour caused by breaking changes will be preserved + if this version is less than that where the breaking change was introduced. + + + + + Case insensative accessor for indivual connection string values. + + + + + Represents the method that allows the application to provide a certificate collection to be used for SSL clien authentication + + A X509CertificateCollection to be filled with one or more client certificates. + + + + !!! Helper class, for compilation only. + Connector implements the logic for the Connection Objects to + access the physical connection to the database, and isolate + the application developer from connection pooling internals. + + + + + Constructor. + + Controls whether the connector can be shared. + + + + This method checks if the connector is still ok. + We try to send a simple query text, select 1 as ConnectionTest; + + + + + This method is responsible for releasing all resources associated with this Connector. + + + + + This method is responsible to release all portals used by this Connector. + + + + + Default SSL CertificateSelectionCallback implementation. + + + + + Default SSL CertificateValidationCallback implementation. + + + + + Default SSL PrivateKeySelectionCallback implementation. + + + + + Default SSL ProvideClientCertificatesCallback implementation. + + + + + This method is required to set all the version dependent features flags. + SupportsPrepare means the server can use prepared query plans (7.3+) + + + + + Opens the physical connection to the server. + + Usually called by the RequestConnector + Method of the connection pool manager. + + + + Closes the physical connection to the server. + + + + + Returns next portal index. + + + + + Returns next plan index. + + + + + Occurs on NoticeResponses from the PostgreSQL backend. + + + + + Occurs on NotificationResponses from the PostgreSQL backend. + + + + + Called to provide client certificates for SSL handshake. + + + + + Mono.Security.Protocol.Tls.CertificateSelectionCallback delegate. + + + + + Mono.Security.Protocol.Tls.CertificateValidationCallback delegate. + + + + + Mono.Security.Protocol.Tls.PrivateKeySelectionCallback delegate. + + + + + Gets the current state of the connection. + + + + + Return Connection String. + + + + + Version of backend server this connector is connected to. + + + + + Backend protocol version in use by this connector. + + + + + The physical connection stream to the backend. + + + + + The physical connection socket to the backend. + + + + + Reports if this connector is fully connected. + + + + + The connection mediator. + + + + + Report if the connection is in a transaction. + + + + + Report whether the current connection can support prepare functionality. + + + + + This class manages all connector objects, pooled AND non-pooled. + + + + Unique static instance of the connector pool + mamager. + + + Map of index to unused pooled connectors, avaliable to the + next RequestConnector() call. + This hashmap will be indexed by connection string. + This key will hold a list of queues of pooled connectors available to be used. + + + Timer for tracking unused connections in pools. + + + + Searches the shared and pooled connector lists for a + matching connector object or creates a new one. + + The NpgsqlConnection that is requesting + the connector. Its ConnectionString will be used to search the + pool for available connectors. + A connector object. + + + + Find a pooled connector. Handle locking and timeout here. + + + + + Find a pooled connector. Handle shared/non-shared here. + + + + + Releases a connector, possibly back to the pool for future use. + + + Pooled connectors will be put back into the pool if there is room. + Shared connectors should just have their use count decremented + since they always stay in the shared pool. + + The connector to release. + + + + Release a pooled connector. Handle locking here. + + + + + Release a pooled connector. Handle shared/non-shared here. + + + + + Create a connector without any pooling functionality. + + + + + Find an available pooled connector in the non-shared pool, or create + a new one if none found. + + + + + This method is only called when NpgsqlConnection.Dispose(false) is called which means a + finalization. This also means, an NpgsqlConnection was leak. We clear pool count so that + client doesn't end running out of connections from pool. When the connection is finalized, its underlying + socket is closed. + + + + + Close the connector. + + + Connector to release + + + + Put a pooled connector into the pool queue. + + Connector to pool + + + + A queue with an extra Int32 for keeping track of busy connections. + + + + + Connections available to the end user + + + + + Connections currently in use + + + + + Represents information about COPY operation data transfer format as returned by server. + + + + + Only created when a CopyInResponse or CopyOutResponse is received by NpgsqlState.ProcessBackendResponses() + + + + + Returns true if this operation is currently active and field at given location is in binary format. + + + + + Returns true if this operation is currently active and in binary format. + + + + + Returns number of fields if this operation is currently active, otherwise -1 + + + + + Represents a PostgreSQL COPY FROM STDIN operation with a corresponding SQL statement + to execute against a PostgreSQL database + and an associated stream used to read data from (if provided by user) + or for writing it (when generated by driver). + Eg. new NpgsqlCopyIn("COPY mytable FROM STDIN", connection, streamToRead).Start(); + + + + + Creates NpgsqlCommand to run given query upon Start(). Data for the requested COPY IN operation can then be written to CopyData stream followed by a call to End() or Cancel(). + + + + + Given command is run upon Start(). Data for the requested COPY IN operation can then be written to CopyData stream followed by a call to End() or Cancel(). + + + + + Given command is executed upon Start() and all data from fromStream is passed to it as copy data. + + + + + Returns true if this operation is currently active and field at given location is in binary format. + + + + + Command specified upon creation is executed as a non-query. + If CopyStream is set upon creation, it will be flushed to server as copy data, and operation will be finished immediately. + Otherwise the CopyStream member can be used for writing copy data to server and operation finished with a call to End() or Cancel(). + + + + + Called after writing all data to CopyStream to successfully complete this copy operation. + + + + + Withdraws an already started copy operation. The operation will fail with given error message. + Will do nothing if current operation is not active. + + + + + Returns true if the connection is currently reserved for this operation. + + + + + The stream provided by user or generated upon Start(). + User may provide a stream to constructor; it is used to pass to server all data read from it. + Otherwise, call to Start() sets this to a writable NpgsqlCopyInStream that passes all data written to it to server. + In latter case this is only available while the copy operation is active and null otherwise. + + + + + Returns true if this operation is currently active and in binary format. + + + + + Returns number of fields expected on each input row if this operation is currently active, otherwise -1 + + + + + The Command used to execute this copy operation. + + + + + Set before a COPY IN query to define size of internal buffer for reading from given CopyStream. + + + + + Represents an ongoing COPY FROM STDIN operation. + Provides methods to push data to server and end or cancel the operation. + + + + + Called from NpgsqlState.ProcessBackendResponses upon CopyInResponse. + If CopyStream is already set, it is used to read data to push to server, after which the copy is completed. + Otherwise CopyStream is set to a writable NpgsqlCopyInStream that calls SendCopyData each time it is written to. + + + + + Sends given packet to server as a CopyData message. + Does not check for notifications! Use another thread for that. + + + + + Sends CopyDone message to server. Handles responses, ie. may throw an exception. + + + + + Sends CopyFail message to server. Handles responses, ie. should always throw an exception: + in CopyIn state the server responds to CopyFail with an error response; + outside of a CopyIn state the server responds to CopyFail with an error response; + without network connection or whatever, there's going to eventually be a failure, timeout or user intervention. + + + + + Copy format information returned from server. + + + + + Stream for writing data to a table on a PostgreSQL version 7.4 or newer database during an active COPY FROM STDIN operation. + Passes data exactly as is and when given, so see to it that you use server encoding, correct format and reasonably sized writes! + + + + + Created only by NpgsqlCopyInState.StartCopy() + + + + + Successfully completes copying data to server. Returns after operation is finished. + Does nothing if this stream is not the active copy operation writer. + + + + + Withdraws an already started copy operation. The operation will fail with given error message. + Does nothing if this stream is not the active copy operation writer. + + + + + Writes given bytes to server. + Fails if this stream is not the active copy operation writer. + + + + + Flushes stream contents to server. + Fails if this stream is not the active copy operation writer. + + + + + Not readable + + + + + Not seekable + + + + + Not supported + + + + + True while this stream can be used to write copy data to server + + + + + False + + + + + True + + + + + False + + + + + Number of bytes written so far + + + + + Number of bytes written so far; not settable + + + + + Represents a PostgreSQL COPY TO STDOUT operation with a corresponding SQL statement + to execute against a PostgreSQL database + and an associated stream used to write results to (if provided by user) + or for reading the results (when generated by driver). + Eg. new NpgsqlCopyOut("COPY (SELECT * FROM mytable) TO STDOUT", connection, streamToWrite).Start(); + + + + + Creates NpgsqlCommand to run given query upon Start(), after which CopyStream provides data from database as requested in the query. + + + + + Given command is run upon Start(), after which CopyStream provides data from database as requested in the query. + + + + + Given command is executed upon Start() and all requested copy data is written to toStream immediately. + + + + + Returns true if this operation is currently active and field at given location is in binary format. + + + + + Command specified upon creation is executed as a non-query. + If CopyStream is set upon creation, all copy data from server will be written to it, and operation will be finished immediately. + Otherwise the CopyStream member can be used for reading copy data from server until no more data is available. + + + + + Flush generated CopyStream at once. Effectively reads and discard all the rest of copy data from server. + + + + + Returns true if the connection is currently reserved for this operation. + + + + + The stream provided by user or generated upon Start() + + + + + The Command used to execute this copy operation. + + + + + Returns true if this operation is currently active and in binary format. + + + + + Returns number of fields if this operation is currently active, otherwise -1 + + + + + Faster alternative to using the generated CopyStream. + + + + + Represents an ongoing COPY TO STDOUT operation. + Provides methods to read data from server or end the operation. + + + + + Called from NpgsqlState.ProcessBackendResponses upon CopyOutResponse. + If CopyStream is already set, it is used to write data received from server, after which the copy ends. + Otherwise CopyStream is set to a readable NpgsqlCopyOutStream that receives data from server. + + + + + Called from NpgsqlOutStream.Read to read copy data from server. + + + + + Copy format information returned from server. + + + + + Stream for reading data from a table or select on a PostgreSQL version 7.4 or newer database during an active COPY TO STDOUT operation. + Passes data exactly as provided by the server. + + + + + Created only by NpgsqlCopyOutState.StartCopy() + + + + + Discards copy data as long as server pushes it. Returns after operation is finished. + Does nothing if this stream is not the active copy operation reader. + + + + + Not writable. + + + + + Not flushable. + + + + + Copies data read from server to given byte buffer. + Since server returns data row by row, length will differ each time, but it is only zero once the operation ends. + Can be mixed with calls to the more efficient NpgsqlCopyOutStream.Read() : byte[] though that would not make much sense. + + + + + Not seekable + + + + + Not supported + + + + + Returns a whole row of data from server without extra work. + If standard Stream.Read(...) has been called before, it's internal buffers remains are returned. + + + + + True while this stream can be used to read copy data from server + + + + + True + + + + + False + + + + + False + + + + + Number of bytes read so far + + + + + Number of bytes read so far; can not be set. + + + + + Writes given objects into a stream for PostgreSQL COPY in default copy format (not CSV or BINARY). + + + + + Represents the method that handles the RowUpdated events. + + The source of the event. + A NpgsqlRowUpdatedEventArgs that contains the event data. + + + + Represents the method that handles the RowUpdating events. + + The source of the event. + A NpgsqlRowUpdatingEventArgs that contains the event data. + + + + This class represents an adapter from many commands: select, update, insert and delete to fill Datasets. + + + + + Provides a means of reading a forward-only stream of rows from a PostgreSQL backend. This class cannot be inherited. + + + + + Return the data type name of the column at index . + + + + + Return the data type of the column at index . + + + + + Return the Npgsql specific data type of the column at requested ordinal. + + column position + Appropriate Npgsql type for column. + + + + Return the column name of the column at index . + + + + + Return the data type OID of the column at index . + + FIXME: Why this method returns String? + + + + Return the column name of the column named . + + + + + Return the data DbType of the column at index . + + + + + Return the data NpgsqlDbType of the column at index . + + + + + Get the value of a column as a . + If the differences between and + in handling of days and months is not important to your application, use + instead. + + Index of the field to find. + value of the field. + + + + Gets the value of a column converted to a Guid. + + + + + Gets the value of a column as Int16. + + + + + Gets the value of a column as Int32. + + + + + Gets the value of a column as Int64. + + + + + Gets the value of a column as Single. + + + + + Gets the value of a column as Double. + + + + + Gets the value of a column as String. + + + + + Gets the value of a column as Decimal. + + + + + Gets the value of a column as TimeSpan. + + + + + Copy values from each column in the current row into . + + The number of column values copied. + + + + Copy values from each column in the current row into . + + An array appropriately sized to store values from all columns. + The number of column values copied. + + + + Gets the value of a column as Boolean. + + + + + Gets the value of a column as Byte. Not implemented. + + + + + Gets the value of a column as Char. + + + + + Gets the value of a column as DateTime. + + + + + Returns a System.Data.DataTable that describes the column metadata of the DataReader. + + + + + This methods parses the command text and tries to get the tablename + from it. + + + + + Is raised whenever Close() is called. + + + + + Gets the number of columns in the current row. + + + + + Gets the value of a column in its native format. + + + + + Gets the value of a column in its native format. + + + + + Gets a value indicating the depth of nesting for the current row. Always returns zero. + + + + + Gets a value indicating whether the data reader is closed. + + + + + Contains the column names as the keys + + + + + Contains all unique columns + + + + + This is the primary implementation of NpgsqlDataReader. It is the one used in normal cases (where the + preload-reader option is not set in the connection string to resolve some potential backwards-compatibility + issues), the only implementation used internally, and in cases where CachingDataReader is used, it is still + used to do the actual "leg-work" of turning a response stream from the server into a datareader-style + object - with CachingDataReader then filling it's cache from here. + + + + + Iterate through the objects returned through from the server. + If it's a CompletedResponse the rowsaffected count is updated appropriately, + and we iterate again, otherwise we return it (perhaps updating our cache of pending + rows if appropriate). + + The next we will deal with. + + + + Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend. + + True if the reader was advanced, otherwise false. + + + + Releases the resources used by the NpgsqlCommand. + + + + + Closes the data reader object. + + + + + Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend. + + True if the reader was advanced, otherwise false. + + + + Advances the data reader to the next row. + + True if the reader was advanced, otherwise false. + + + + Return the value of the column at index . + + + + + Gets raw data from a column. + + + + + Gets raw data from a column. + + + + + Report whether the value in a column is DBNull. + + + + + Gets the number of rows changed, inserted, or deleted by execution of the SQL statement. + + + + + Indicates if NpgsqlDatareader has rows to be read. + + + + + Provides an implementation of NpgsqlDataReader in which all data is pre-loaded into memory. + This operates by first creating a ForwardsOnlyDataReader as usual, and then loading all of it's + Rows into memory. There is a general principle that when there is a trade-off between a class design that + is more efficient and/or scalable on the one hand and one that is less efficient but has more functionality + (in this case the internal-only functionality of caching results) that one can build the less efficent class + from the most efficient without significant extra loss in efficiency, but not the other way around. The relationship + between ForwardsOnlyDataReader and CachingDataReader is an example of this). + Since the interface presented to the user is still forwards-only, queues are used to + store this information, so that dequeueing as we go we give the garbage collector the best opportunity + possible to reclaim any memory that is no longer in use. + ForwardsOnlyDataReader being used to actually + obtain the information from the server means that the "leg-work" is still only done (and need only be + maintained) in one place. + This class exists to allow for certain potential backwards-compatibility issues to be resolved + with little effort on the part of affected users. It is considerably less efficient than ForwardsOnlyDataReader + and hence never used internally. + + + + + This class represents the Parse message sent to PostgreSQL + server. + + + + + + EventArgs class to send Notice parameters, which are just NpgsqlError's in a lighter context. + + + + + Notice information. + + + + + This class represents the ErrorResponse and NoticeResponse + message sent from PostgreSQL server. + + + + + Return a string representation of this error object. + + + + + Severity code. All versions. + + + + + Error code. PostgreSQL 7.4 and up. + + + + + Terse error message. All versions. + + + + + Detailed error message. PostgreSQL 7.4 and up. + + + + + Suggestion to help resolve the error. PostgreSQL 7.4 and up. + + + + + Position (one based) within the query string where the error was encounterd. PostgreSQL 7.4 and up. + + + + + Position (one based) within the query string where the error was encounterd. This position refers to an internal command executed for example inside a PL/pgSQL function. PostgreSQL 7.4 and up. + + + + + Internal query string where the error was encounterd. This position refers to an internal command executed for example inside a PL/pgSQL function. PostgreSQL 7.4 and up. + + + + + Trace back information. PostgreSQL 7.4 and up. + + + + + Source file (in backend) reporting the error. PostgreSQL 7.4 and up. + + + + + Source file line number (in backend) reporting the error. PostgreSQL 7.4 and up. + + + + + Source routine (in backend) reporting the error. PostgreSQL 7.4 and up. + + + + + String containing the sql sent which produced this error. + + + + + Backend protocol version in use. + + + + + The level of verbosity of the NpgsqlEventLog + + + + + Don't log at all + + + + + Only log the most common issues + + + + + Log everything + + + + + This class handles all the Npgsql event and debug logging + + + + + Writes a string to the Npgsql event log if msglevel is bigger then NpgsqlEventLog.Level + + + This method is obsolete and should no longer be used. + It is likely to be removed in future versions of Npgsql + + The message to write to the event log + The minimum LogLevel for which this message should be logged. + + + + Writes a string to the Npgsql event log if msglevel is bigger then NpgsqlEventLog.Level + + The ResourceManager to get the localized resources + The name of the resource that should be fetched by the ResourceManager + The minimum LogLevel for which this message should be logged. + The additional parameters that shall be included into the log-message (must be compatible with the string in the resource): + + + + Writes the default log-message for the action of calling the Get-part of an Indexer to the log file. + + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Indexer + The parameter given to the Indexer + + + + Writes the default log-message for the action of calling the Set-part of an Indexer to the logfile. + + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Indexer + The parameter given to the Indexer + The value the Indexer is set to + + + + Writes the default log-message for the action of calling the Get-part of a Property to the logfile. + + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Property + The name of the Property + + + + Writes the default log-message for the action of calling the Set-part of a Property to the logfile. + + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Property + The name of the Property + The value the Property is set to + + + + Writes the default log-message for the action of calling a Method without Arguments to the logfile. + + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + + + + Writes the default log-message for the action of calling a Method with one Argument to the logfile. + + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + The value of the Argument of the Method + + + + Writes the default log-message for the action of calling a Method with two Arguments to the logfile. + + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + The value of the first Argument of the Method + The value of the second Argument of the Method + + + + Writes the default log-message for the action of calling a Method with three Arguments to the logfile. + + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + The value of the first Argument of the Method + The value of the second Argument of the Method + The value of the third Argument of the Method + + + + Writes the default log-message for the action of calling a Method with more than three Arguments to the logfile. + + The minimum LogLevel for which this message should be logged. + The name of the class that contains the Method + The name of the Method + A Object-Array with zero or more Ojects that are Arguments of the Method. + + + + Sets/Returns the level of information to log to the logfile. + + The current LogLevel + + + + Sets/Returns the filename to use for logging. + + The filename of the current Log file. + + + + Sets/Returns whether Log messages should be echoed to the console + + true if Log messages are echoed to the console, otherwise false + + + + The exception that is thrown when the PostgreSQL backend reports errors. + + + + + Construct a backend error exception based on a list of one or more + backend errors. The basic Exception.Message will be built from the + first (usually the only) error in the list. + + + + + Format a .NET style exception string. + Include all errors in the list, including any hints. + + + + + Append a line to the given Stream, first checking for zero-length. + + + + + Provide access to the entire list of errors provided by the PostgreSQL backend. + + + + + Severity code. All versions. + + + + + Error code. PostgreSQL 7.4 and up. + + + + + Basic error message. All versions. + + + + + Detailed error message. PostgreSQL 7.4 and up. + + + + + Suggestion to help resolve the error. PostgreSQL 7.4 and up. + + + + + Position (one based) within the query string where the error was encounterd. PostgreSQL 7.4 and up. + + + + + Trace back information. PostgreSQL 7.4 and up. + + + + + Source file (in backend) reporting the error. PostgreSQL 7.4 and up. + + + + + Source file line number (in backend) reporting the error. PostgreSQL 7.4 and up. + + + + + Source routine (in backend) reporting the error. PostgreSQL 7.4 and up. + + + + + String containing the sql sent which produced this error. + + + + + Returns the entire list of errors provided by the PostgreSQL backend. + + + + + This class represents the Parse message sent to PostgreSQL + server. + + + + + + A factory to create instances of various Npgsql objects. + + + + + Creates an NpgsqlCommand object. + + + + + This class represents the Parse message sent to PostgreSQL + server. + + + + + + This class is responsible for serving as bridge between the backend + protocol handling and the core classes. It is used as the mediator for + exchanging data generated/sent from/to backend. + + + + + + EventArgs class to send Notification parameters. + + + + + Process ID of the PostgreSQL backend that sent this notification. + + + + + Condition that triggered that notification. + + + + + Additional Information From Notifiying Process (for future use, currently postgres always sets this to an empty string) + + + + + This class represents a parameter to a command that will be sent to server + + + + + Initializes a new instance of the NpgsqlParameter class. + + + + + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name and a value of the new NpgsqlParameter. + + The m_Name of the parameter to map. + An Object that is the value of the NpgsqlParameter. + +

When you specify an Object + in the value parameter, the DbType is + inferred from the .NET Framework type of the Object.

+

When using this constructor, you must be aware of a possible misuse of the constructor which takes a DbType parameter. + This happens when calling this constructor passing an int 0 and the compiler thinks you are passing a value of DbType. + Use Convert.ToInt32(value) for example to have compiler calling the correct constructor.

+
+
+ + + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name and the data type. + + The m_Name of the parameter to map. + One of the DbType values. + + + + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name, the DbType, and the size. + + The m_Name of the parameter to map. + One of the DbType values. + The length of the parameter. + + + + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name, the DbType, the size, + and the source column m_Name. + + The m_Name of the parameter to map. + One of the DbType values. + The length of the parameter. + The m_Name of the source column. + + + + Initializes a new instance of the NpgsqlParameter + class with the parameter m_Name, the DbType, the size, + the source column m_Name, a ParameterDirection, + the precision of the parameter, the scale of the parameter, a + DataRowVersion to use, and the + value of the parameter. + + The m_Name of the parameter to map. + One of the DbType values. + The length of the parameter. + The m_Name of the source column. + One of the ParameterDirection values. + true if the value of the field can be null, otherwise false. + The total number of digits to the left and right of the decimal point to which + Value is resolved. + The total number of decimal places to which + Value is resolved. + One of the DataRowVersion values. + An Object that is the value + of the NpgsqlParameter. + + + + Creates a new NpgsqlParameter that + is a copy of the current instance. + + A new NpgsqlParameter that is a copy of this instance. + + + + Gets or sets the maximum number of digits used to represent the + Value property. + + The maximum number of digits used to represent the + Value property. + The default value is 0, which indicates that the data provider + sets the precision for Value. + + + + Gets or sets the number of decimal places to which + Value is resolved. + + The number of decimal places to which + Value is resolved. The default is 0. + + + + Gets or sets the maximum size, in bytes, of the data within the column. + + The maximum size, in bytes, of the data within the column. + The default value is inferred from the parameter value. + + + + Gets or sets the DbType of the parameter. + + One of the DbType values. The default is String. + + + + Gets or sets the DbType of the parameter. + + One of the DbType values. The default is String. + + + + Gets or sets a value indicating whether the parameter is input-only, + output-only, bidirectional, or a stored procedure return value parameter. + + One of the ParameterDirection + values. The default is Input. + + + + Gets or sets a value indicating whether the parameter accepts null values. + + true if null values are accepted; otherwise, false. The default is false. + + + + Gets or sets the m_Name of the NpgsqlParameter. + + The m_Name of the NpgsqlParameter. + The default is an empty string. + + + + The m_Name scrubbed of any optional marker + + + + + Gets or sets the m_Name of the source column that is mapped to the + DataSet and used for loading or + returning the Value. + + The m_Name of the source column that is mapped to the + DataSet. The default is an empty string. + + + + Gets or sets the DataRowVersion + to use when loading Value. + + One of the DataRowVersion values. + The default is Current. + + + + Gets or sets the value of the parameter. + + An Object that is the value of the parameter. + The default value is null. + + + + Gets or sets the value of the parameter. + + An Object that is the value of the parameter. + The default value is null. + + + + Represents a collection of parameters relevant to a NpgsqlCommand + as well as their respective mappings to columns in a DataSet. + This class cannot be inherited. + + + + + Initializes a new instance of the NpgsqlParameterCollection class. + + + + + Adds the specified NpgsqlParameter object to the NpgsqlParameterCollection. + + The NpgsqlParameter to add to the collection. + The index of the new NpgsqlParameter object. + + + + Adds a NpgsqlParameter to the NpgsqlParameterCollection given the specified parameter name and value. + + The name of the NpgsqlParameter. + The Value of the NpgsqlParameter to add to the collection. + The index of the new NpgsqlParameter object. + + Use caution when using this overload of the + Add method to specify integer parameter values. + Because this overload takes a value of type Object, + you must convert the integral value to an Object + type when the value is zero, as the following C# example demonstrates. + parameters.Add(":pname", Convert.ToInt32(0)); + If you do not perform this conversion, the compiler will assume you + are attempting to call the NpgsqlParameterCollection.Add(string, DbType) overload. + + + + + Adds a NpgsqlParameter to the NpgsqlParameterCollection given the parameter name and the data type. + + The name of the parameter. + One of the DbType values. + The index of the new NpgsqlParameter object. + + + + Adds a NpgsqlParameter to the NpgsqlParameterCollection with the parameter name, the data type, and the column length. + + The name of the parameter. + One of the DbType values. + The length of the column. + The index of the new NpgsqlParameter object. + + + + Adds a NpgsqlParameter to the NpgsqlParameterCollection with the parameter name, the data type, the column length, and the source column name. + + The name of the parameter. + One of the DbType values. + The length of the column. + The name of the source column. + The index of the new NpgsqlParameter object. + + + + Removes the specified NpgsqlParameter from the collection using the parameter name. + + The name of the NpgsqlParameter object to retrieve. + + + + Gets a value indicating whether a NpgsqlParameter with the specified parameter name exists in the collection. + + The name of the NpgsqlParameter object to find. + true if the collection contains the parameter; otherwise, false. + + + + Gets the location of the NpgsqlParameter in the collection with a specific parameter name. + + The name of the NpgsqlParameter object to find. + The zero-based location of the NpgsqlParameter in the collection. + + + + Removes the specified NpgsqlParameter from the collection using a specific index. + + The zero-based index of the parameter. + + + + Inserts a NpgsqlParameter into the collection at the specified index. + + The zero-based index where the parameter is to be inserted within the collection. + The NpgsqlParameter to add to the collection. + + + + Removes the specified NpgsqlParameter from the collection. + + The NpgsqlParameter to remove from the collection. + + + + Gets a value indicating whether a NpgsqlParameter exists in the collection. + + The value of the NpgsqlParameter object to find. + true if the collection contains the NpgsqlParameter object; otherwise, false. + + + + Gets a value indicating whether a NpgsqlParameter with the specified parameter name exists in the collection. + + The name of the NpgsqlParameter object to find. + A reference to the requested parameter is returned in this out param if it is found in the list. This value is null if the parameter is not found. + true if the collection contains the parameter and param will contain the parameter; otherwise, false. + + + + Removes all items from the collection. + + + + + Gets the location of a NpgsqlParameter in the collection. + + The value of the NpgsqlParameter object to find. + The zero-based index of the NpgsqlParameter object in the collection. + + + + Adds the specified NpgsqlParameter object to the NpgsqlParameterCollection. + + The NpgsqlParameter to add to the collection. + The zero-based index of the new NpgsqlParameter object. + + + + Copies NpgsqlParameter objects from the NpgsqlParameterCollection to the specified array. + + An Array to which to copy the NpgsqlParameter objects in the collection. + The starting index of the array. + + + + Returns an enumerator that can iterate through the collection. + + An IEnumerator that can be used to iterate through the collection. + + + + In methods taking an object as argument this method is used to verify + that the argument has the type NpgsqlParameter + + The object to verify + + + + Gets the NpgsqlParameter with the specified name. + + The name of the NpgsqlParameter to retrieve. + The NpgsqlParameter with the specified name, or a null reference if the parameter is not found. + + + + Gets the NpgsqlParameter at the specified index. + + The zero-based index of the NpgsqlParameter to retrieve. + The NpgsqlParameter at the specified index. + + + + Gets the number of NpgsqlParameter objects in the collection. + + The number of NpgsqlParameter objects in the collection. + + + + This class represents the ParameterStatus message sent from PostgreSQL + server. + + + + + + This class represents the Parse message sent to PostgreSQL + server. + + + + + + This class represents a PasswordPacket message sent to backend + PostgreSQL. + + + + + Used when a connection is closed + + + + + Summary description for NpgsqlQuery + + + + + This is the abstract base class for NpgsqlAsciiRow and NpgsqlBinaryRow. + + + + + This class represents a RowDescription message sent from + the PostgreSQL. + + + + + + This struct represents the internal data of the RowDescription message. + + + + + Provides the underlying mechanism for reading schema information. + + + + + Creates an NpgsqlSchema that can read schema information from the database. + + An open database connection for reading metadata. + + + + Returns the MetaDataCollections that lists all possible collections. + + The MetaDataCollections + + + + Returns the Restrictions that contains the meaning and position of the values in the restrictions array. + + The Restrictions + + + + Returns the Databases that contains a list of all accessable databases. + + The restrictions to filter the collection. + The Databases + + + + Returns the Tables that contains table and view names and the database and schema they come from. + + The restrictions to filter the collection. + The Tables + + + + Returns the Columns that contains information about columns in tables. + + The restrictions to filter the collection. + The Columns. + + + + Returns the Views that contains view names and the database and schema they come from. + + The restrictions to filter the collection. + The Views + + + + Returns the Users containing user names and the sysid of those users. + + The restrictions to filter the collection. + The Users. + + + + This class represents a StartupPacket message of PostgreSQL + protocol. + + + + + + Represents a completed response message. + + + + + This class represents the Parse message sent to PostgreSQL + server. + + + + + + Represents a transaction to be made in a PostgreSQL database. This class cannot be inherited. + + + + + Commits the database transaction. + + + + + Rolls back a transaction from a pending state. + + + + + Rolls back a transaction from a pending savepoint state. + + + + + Creates a transaction save point. + + + + + Cancel the transaction without telling the backend about it. This is + used to make the transaction go away when closing a connection. + + + + + Gets the NpgsqlConnection + object associated with the transaction, or a null reference if the + transaction is no longer valid. + + The NpgsqlConnection + object associated with the transaction. + + + + Specifies the IsolationLevel for this transaction. + + The IsolationLevel for this transaction. + The default is ReadCommitted. + + + + This class provides many util methods to handle + reading and writing of PostgreSQL protocol messages. + + + + + This method takes a ProtocolVersion and returns an integer + version number that the Postgres backend will recognize in a + startup packet. + + + + + This method takes a version string as returned by SELECT VERSION() and returns + a valid version string ("7.2.2" for example). + This is only needed when running protocol version 2. + This does not do any validity checks. + + + + + This method gets a C NULL terminated string from the network stream. + It keeps reading a byte in each time until a NULL byte is returned. + It returns the resultant string of bytes read. + This string is sent from backend. + + + + + Reads requested number of bytes from stream with retries until Stream.Read returns 0 or count is reached. + + Stream to read + byte buffer to fill + starting position to fill the buffer + number of bytes to read + The number of bytes read. May be less than count if no more bytes are available. + + + + This method writes a C NULL terminated string to the network stream. + It appends a NULL terminator to the end of the String. + + + This method writes a C NULL terminated string to the network stream. + It appends a NULL terminator to the end of the String. + + + + + This method writes a set of bytes to the stream. It also enables logging of them. + + + + + This method writes a C NULL terminated string limited in length to the + backend server. + It pads the string with null bytes to the size specified. + + + + + Write a 32-bit integer to the given stream in the correct byte order. + + + + + Read a 32-bit integer from the given stream in the correct byte order. + + + + + Write a 16-bit integer to the given stream in the correct byte order. + + + + + Read a 16-bit integer from the given stream in the correct byte order. + + + + + Represent the frontend/backend protocol version. + + + + + Represent the backend server version. + As this class offers no functionality beyond that offered by it has been + deprecated in favour of that class. + + + + + + Returns the string representation of this version in three place dot notation (Major.Minor.Patch). + + + + + Server version major number. + + + + + Server version minor number. + + + + + Server version patch level number. + + + + + A class to handle everything associated with SSPI authentication + + + + + Simplified SecBufferDesc struct with only one SecBuffer + + +
+
diff --git a/packages/Npgsql.2.0.14.3/lib/net45/de/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net45/de/Npgsql.resources.dll new file mode 100644 index 000000000..a65a17d1c Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net45/de/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net45/es/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net45/es/Npgsql.resources.dll new file mode 100644 index 000000000..e63cfd71a Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net45/es/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net45/fi/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net45/fi/Npgsql.resources.dll new file mode 100644 index 000000000..64e4db0d9 Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net45/fi/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net45/fr/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net45/fr/Npgsql.resources.dll new file mode 100644 index 000000000..b8eca214f Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net45/fr/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net45/ja/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net45/ja/Npgsql.resources.dll new file mode 100644 index 000000000..346dcc13b Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net45/ja/Npgsql.resources.dll differ diff --git a/packages/Npgsql.2.0.14.3/lib/net45/zh-CN/Npgsql.resources.dll b/packages/Npgsql.2.0.14.3/lib/net45/zh-CN/Npgsql.resources.dll new file mode 100644 index 000000000..d2a1fc73f Binary files /dev/null and b/packages/Npgsql.2.0.14.3/lib/net45/zh-CN/Npgsql.resources.dll differ diff --git a/packages/System.Data.SQLite.1.0.82.0/System.Data.SQLite.1.0.82.0.nupkg b/packages/System.Data.SQLite.1.0.82.0/System.Data.SQLite.1.0.82.0.nupkg deleted file mode 100644 index 503fde591..000000000 Binary files a/packages/System.Data.SQLite.1.0.82.0/System.Data.SQLite.1.0.82.0.nupkg and /dev/null differ diff --git a/packages/System.Data.SQLite.1.0.82.0/content/net20/x64/SQLite.Interop.dll b/packages/System.Data.SQLite.1.0.82.0/content/net20/x64/SQLite.Interop.dll deleted file mode 100644 index 038000c8f..000000000 Binary files a/packages/System.Data.SQLite.1.0.82.0/content/net20/x64/SQLite.Interop.dll and /dev/null differ diff --git a/packages/System.Data.SQLite.1.0.82.0/content/net20/x86/SQLite.Interop.dll b/packages/System.Data.SQLite.1.0.82.0/content/net20/x86/SQLite.Interop.dll deleted file mode 100644 index 5da7ee99c..000000000 Binary files a/packages/System.Data.SQLite.1.0.82.0/content/net20/x86/SQLite.Interop.dll and /dev/null differ diff --git a/packages/System.Data.SQLite.1.0.82.0/content/net40/x64/SQLite.Interop.dll b/packages/System.Data.SQLite.1.0.82.0/content/net40/x64/SQLite.Interop.dll deleted file mode 100644 index 21c2bd85c..000000000 Binary files a/packages/System.Data.SQLite.1.0.82.0/content/net40/x64/SQLite.Interop.dll and /dev/null differ diff --git a/packages/System.Data.SQLite.1.0.82.0/content/net40/x86/SQLite.Interop.dll b/packages/System.Data.SQLite.1.0.82.0/content/net40/x86/SQLite.Interop.dll deleted file mode 100644 index 817fa3a27..000000000 Binary files a/packages/System.Data.SQLite.1.0.82.0/content/net40/x86/SQLite.Interop.dll and /dev/null differ diff --git a/packages/System.Data.SQLite.1.0.82.0/lib/net20/System.Data.SQLite.dll b/packages/System.Data.SQLite.1.0.82.0/lib/net20/System.Data.SQLite.dll deleted file mode 100644 index 58f294f35..000000000 Binary files a/packages/System.Data.SQLite.1.0.82.0/lib/net20/System.Data.SQLite.dll and /dev/null differ diff --git a/packages/System.Data.SQLite.1.0.82.0/lib/net40/System.Data.SQLite.dll b/packages/System.Data.SQLite.1.0.82.0/lib/net40/System.Data.SQLite.dll deleted file mode 100644 index 457521fa4..000000000 Binary files a/packages/System.Data.SQLite.1.0.82.0/lib/net40/System.Data.SQLite.dll and /dev/null differ diff --git a/packages/System.Data.SQLite.1.0.90.0/System.Data.SQLite.1.0.90.0.nupkg b/packages/System.Data.SQLite.1.0.90.0/System.Data.SQLite.1.0.90.0.nupkg new file mode 100644 index 000000000..45bfbc27a Binary files /dev/null and b/packages/System.Data.SQLite.1.0.90.0/System.Data.SQLite.1.0.90.0.nupkg differ diff --git a/packages/System.Data.SQLite.1.0.90.0/System.Data.SQLite.1.0.90.0.nuspec b/packages/System.Data.SQLite.1.0.90.0/System.Data.SQLite.1.0.90.0.nuspec new file mode 100644 index 000000000..9c8ea9e8d --- /dev/null +++ b/packages/System.Data.SQLite.1.0.90.0/System.Data.SQLite.1.0.90.0.nuspec @@ -0,0 +1,18 @@ + + + + System.Data.SQLite + 1.0.90.0 + System.Data.SQLite (x86/x64) + SQLite Development Team + SQLite Development Team + http://www.sqlite.org/copyright.html + http://system.data.sqlite.org/ + http://system.data.sqlite.org/images/sqlite32.png + false + The official SQLite database engine for both x86 and x64 along with the ADO.NET provider. + Public Domain + en-US + sqlite database ado.net provider interop + + \ No newline at end of file diff --git a/packages/System.Data.SQLite.1.0.90.0/content/net20/x64/SQLite.Interop.dll b/packages/System.Data.SQLite.1.0.90.0/content/net20/x64/SQLite.Interop.dll new file mode 100644 index 000000000..078e83647 Binary files /dev/null and b/packages/System.Data.SQLite.1.0.90.0/content/net20/x64/SQLite.Interop.dll differ diff --git a/packages/System.Data.SQLite.1.0.90.0/content/net20/x86/SQLite.Interop.dll b/packages/System.Data.SQLite.1.0.90.0/content/net20/x86/SQLite.Interop.dll new file mode 100644 index 000000000..36cfca046 Binary files /dev/null and b/packages/System.Data.SQLite.1.0.90.0/content/net20/x86/SQLite.Interop.dll differ diff --git a/packages/System.Data.SQLite.1.0.90.0/content/net40/x64/SQLite.Interop.dll b/packages/System.Data.SQLite.1.0.90.0/content/net40/x64/SQLite.Interop.dll new file mode 100644 index 000000000..30e752000 Binary files /dev/null and b/packages/System.Data.SQLite.1.0.90.0/content/net40/x64/SQLite.Interop.dll differ diff --git a/packages/System.Data.SQLite.1.0.90.0/content/net40/x86/SQLite.Interop.dll b/packages/System.Data.SQLite.1.0.90.0/content/net40/x86/SQLite.Interop.dll new file mode 100644 index 000000000..092ed077a Binary files /dev/null and b/packages/System.Data.SQLite.1.0.90.0/content/net40/x86/SQLite.Interop.dll differ diff --git a/packages/System.Data.SQLite.1.0.90.0/content/net45/x64/SQLite.Interop.dll b/packages/System.Data.SQLite.1.0.90.0/content/net45/x64/SQLite.Interop.dll new file mode 100644 index 000000000..7207eee1d Binary files /dev/null and b/packages/System.Data.SQLite.1.0.90.0/content/net45/x64/SQLite.Interop.dll differ diff --git a/packages/System.Data.SQLite.1.0.90.0/content/net45/x86/SQLite.Interop.dll b/packages/System.Data.SQLite.1.0.90.0/content/net45/x86/SQLite.Interop.dll new file mode 100644 index 000000000..29ff17d0a Binary files /dev/null and b/packages/System.Data.SQLite.1.0.90.0/content/net45/x86/SQLite.Interop.dll differ diff --git a/packages/System.Data.SQLite.1.0.90.0/content/net451/x64/SQLite.Interop.dll b/packages/System.Data.SQLite.1.0.90.0/content/net451/x64/SQLite.Interop.dll new file mode 100644 index 000000000..f510a6bee Binary files /dev/null and b/packages/System.Data.SQLite.1.0.90.0/content/net451/x64/SQLite.Interop.dll differ diff --git a/packages/System.Data.SQLite.1.0.90.0/content/net451/x86/SQLite.Interop.dll b/packages/System.Data.SQLite.1.0.90.0/content/net451/x86/SQLite.Interop.dll new file mode 100644 index 000000000..ead040401 Binary files /dev/null and b/packages/System.Data.SQLite.1.0.90.0/content/net451/x86/SQLite.Interop.dll differ diff --git a/packages/System.Data.SQLite.1.0.82.0/lib/net20/System.Data.SQLite.Linq.dll b/packages/System.Data.SQLite.1.0.90.0/lib/net20/System.Data.SQLite.Linq.dll similarity index 95% rename from packages/System.Data.SQLite.1.0.82.0/lib/net20/System.Data.SQLite.Linq.dll rename to packages/System.Data.SQLite.1.0.90.0/lib/net20/System.Data.SQLite.Linq.dll index 4475a413f..3c10118f6 100644 Binary files a/packages/System.Data.SQLite.1.0.82.0/lib/net20/System.Data.SQLite.Linq.dll and b/packages/System.Data.SQLite.1.0.90.0/lib/net20/System.Data.SQLite.Linq.dll differ diff --git a/packages/System.Data.SQLite.1.0.90.0/lib/net20/System.Data.SQLite.dll b/packages/System.Data.SQLite.1.0.90.0/lib/net20/System.Data.SQLite.dll new file mode 100644 index 000000000..3cc39cfce Binary files /dev/null and b/packages/System.Data.SQLite.1.0.90.0/lib/net20/System.Data.SQLite.dll differ diff --git a/packages/System.Data.SQLite.1.0.90.0/lib/net20/System.Data.SQLite.xml b/packages/System.Data.SQLite.1.0.90.0/lib/net20/System.Data.SQLite.xml new file mode 100644 index 000000000..67db7df4c --- /dev/null +++ b/packages/System.Data.SQLite.1.0.90.0/lib/net20/System.Data.SQLite.xml @@ -0,0 +1,12758 @@ + + + + System.Data.SQLite + + + + + Defines a source code identifier custom attribute for an assembly + manifest. + + + + + Constructs an instance of this attribute class using the specified + source code identifier value. + + + The source code identifier value to use. + + + + + Gets the source code identifier value. + + + + + Defines a source code time-stamp custom attribute for an assembly + manifest. + + + + + Constructs an instance of this attribute class using the specified + source code time-stamp value. + + + The source code time-stamp value to use. + + + + + Gets the source code time-stamp value. + + + + + This is the method signature for the SQLite core library logging callback + function for use with sqlite3_log() and the SQLITE_CONFIG_LOG. + + WARNING: This delegate is used more-or-less directly by native code, do + not modify its type signature. + + + The extra data associated with this message, if any. + + + The error code associated with this message. + + + The message string to be logged. + + + + + This class implements SQLiteBase completely, and is the guts of the code that interop's SQLite with .NET + + + + + This internal class provides the foundation of SQLite support. It defines all the abstract members needed to implement + a SQLite data provider, and inherits from SQLiteConvert which allows for simple translations of string to and from SQLite. + + + + + This base class provides datatype conversion services for the SQLite provider. + + + + + The format string for DateTime values when using the InvariantCulture or CurrentCulture formats. + + + + + The value for the Unix epoch (e.g. January 1, 1970 at midnight, in UTC). + + + + + The value of the OLE Automation epoch represented as a Julian day. + + + + + An array of ISO-8601 DateTime formats that we support parsing. + + + + + The internal default format for UTC DateTime values when converting + to a string. + + + + + The internal default format for local DateTime values when converting + to a string. + + + + + An UTF-8 Encoding instance, so we can convert strings to and from UTF-8 + + + + + The default DateTime format for this instance. + + + + + The default DateTimeKind for this instance. + + + + + The default DateTime format string for this instance. + + + + + Initializes the conversion class + + The default date/time format to use for this instance + The DateTimeKind to use. + The DateTime format string to use. + + + + Converts a string to a UTF-8 encoded byte array sized to include a null-terminating character. + + The string to convert to UTF-8 + A byte array containing the converted string plus an extra 0 terminating byte at the end of the array. + + + + Convert a DateTime to a UTF-8 encoded, zero-terminated byte array. + + + This function is a convenience function, which first calls ToString() on the DateTime, and then calls ToUTF8() with the + string result. + + The DateTime to convert. + The UTF-8 encoded string, including a 0 terminating byte at the end of the array. + + + + Converts a UTF-8 encoded IntPtr of the specified length into a .NET string + + The pointer to the memory where the UTF-8 string is encoded + The number of bytes to decode + A string containing the translated character(s) + + + + Converts a UTF-8 encoded IntPtr of the specified length into a .NET string + + The pointer to the memory where the UTF-8 string is encoded + The number of bytes to decode + A string containing the translated character(s) + + + + Converts a string into a DateTime, using the DateTimeFormat, DateTimeKind, + and DateTimeFormatString specified for the connection when it was opened. + + + Acceptable ISO8601 DateTime formats are: + + THHmmssK + THHmmK + HH:mm:ss.FFFFFFFK + HH:mm:ssK + HH:mmK + yyyy-MM-dd HH:mm:ss.FFFFFFFK + yyyy-MM-dd HH:mm:ssK + yyyy-MM-dd HH:mmK + yyyy-MM-ddTHH:mm:ss.FFFFFFFK + yyyy-MM-ddTHH:mmK + yyyy-MM-ddTHH:mm:ssK + yyyyMMddHHmmssK + yyyyMMddHHmmK + yyyyMMddTHHmmssFFFFFFFK + THHmmss + THHmm + HH:mm:ss.FFFFFFF + HH:mm:ss + HH:mm + yyyy-MM-dd HH:mm:ss.FFFFFFF + yyyy-MM-dd HH:mm:ss + yyyy-MM-dd HH:mm + yyyy-MM-ddTHH:mm:ss.FFFFFFF + yyyy-MM-ddTHH:mm + yyyy-MM-ddTHH:mm:ss + yyyyMMddHHmmss + yyyyMMddHHmm + yyyyMMddTHHmmssFFFFFFF + yyyy-MM-dd + yyyyMMdd + yy-MM-dd + + If the string cannot be matched to one of the above formats -OR- + the DateTimeFormatString if one was provided, an exception will + be thrown. + + The string containing either a long integer number of 100-nanosecond units since + System.DateTime.MinValue, a Julian day double, an integer number of seconds since the Unix epoch, a + culture-independent formatted date and time string, a formatted date and time string in the current + culture, or an ISO8601-format string. + A DateTime value + + + + Converts a string into a DateTime, using the specified DateTimeFormat, + DateTimeKind and DateTimeFormatString. + + + Acceptable ISO8601 DateTime formats are: + + THHmmssK + THHmmK + HH:mm:ss.FFFFFFFK + HH:mm:ssK + HH:mmK + yyyy-MM-dd HH:mm:ss.FFFFFFFK + yyyy-MM-dd HH:mm:ssK + yyyy-MM-dd HH:mmK + yyyy-MM-ddTHH:mm:ss.FFFFFFFK + yyyy-MM-ddTHH:mmK + yyyy-MM-ddTHH:mm:ssK + yyyyMMddHHmmssK + yyyyMMddHHmmK + yyyyMMddTHHmmssFFFFFFFK + THHmmss + THHmm + HH:mm:ss.FFFFFFF + HH:mm:ss + HH:mm + yyyy-MM-dd HH:mm:ss.FFFFFFF + yyyy-MM-dd HH:mm:ss + yyyy-MM-dd HH:mm + yyyy-MM-ddTHH:mm:ss.FFFFFFF + yyyy-MM-ddTHH:mm + yyyy-MM-ddTHH:mm:ss + yyyyMMddHHmmss + yyyyMMddHHmm + yyyyMMddTHHmmssFFFFFFF + yyyy-MM-dd + yyyyMMdd + yy-MM-dd + + If the string cannot be matched to one of the above formats -OR- + the DateTimeFormatString if one was provided, an exception will + be thrown. + + The string containing either a long integer number of 100-nanosecond units since + System.DateTime.MinValue, a Julian day double, an integer number of seconds since the Unix epoch, a + culture-independent formatted date and time string, a formatted date and time string in the current + culture, or an ISO8601-format string. + The SQLiteDateFormats to use. + The DateTimeKind to use. + The DateTime format string to use. + A DateTime value + + + + Converts a julianday value into a DateTime + + The value to convert + A .NET DateTime + + + + Converts a julianday value into a DateTime + + The value to convert + The DateTimeKind to use. + A .NET DateTime + + + + Converts the specified number of seconds from the Unix epoch into a + value. + + + The number of whole seconds since the Unix epoch. + + + Either Utc or Local time. + + + The new value. + + + + + Converts the specified number of ticks since the epoch into a + value. + + + The number of whole ticks since the epoch. + + + Either Utc or Local time. + + + The new value. + + + + + Converts a DateTime struct to a JulianDay double + + The DateTime to convert + The JulianDay value the Datetime represents + + + + Converts a DateTime struct to the whole number of seconds since the + Unix epoch. + + The DateTime to convert + The whole number of seconds since the Unix epoch + + + + Returns the DateTime format string to use for the specified DateTimeKind. + If is not null, it will be returned verbatim. + + The DateTimeKind to use. + The DateTime format string to use. + + The DateTime format string to use for the specified DateTimeKind. + + + + + Converts a string into a DateTime, using the DateTimeFormat, DateTimeKind, + and DateTimeFormatString specified for the connection when it was opened. + + The DateTime value to convert + Either a string containing the long integer number of 100-nanosecond units since System.DateTime.MinValue, a + Julian day double, an integer number of seconds since the Unix epoch, a culture-independent formatted date and time + string, a formatted date and time string in the current culture, or an ISO8601-format date/time string. + + + + Internal function to convert a UTF-8 encoded IntPtr of the specified length to a DateTime. + + + This is a convenience function, which first calls ToString() on the IntPtr to convert it to a string, then calls + ToDateTime() on the string to return a DateTime. + + A pointer to the UTF-8 encoded string + The length in bytes of the string + The parsed DateTime value + + + + Smart method of splitting a string. Skips quoted elements, removes the quotes. + + + This split function works somewhat like the String.Split() function in that it breaks apart a string into + pieces and returns the pieces as an array. The primary differences are: + + Only one character can be provided as a separator character + Quoted text inside the string is skipped over when searching for the separator, and the quotes are removed. + + Thus, if splitting the following string looking for a comma:
+ One,Two, "Three, Four", Five
+
+ The resulting array would contain
+ [0] One
+ [1] Two
+ [2] Three, Four
+ [3] Five
+
+ Note that the leading and trailing spaces were removed from each item during the split. +
+ Source string to split apart + Separator character + A string array of the split up elements +
+ + + Splits the specified string into multiple strings based on a separator + and returns the result as an array of strings. + + + The string to split into pieces based on the separator character. If + this string is null, null will always be returned. If this string is + empty, an array of zero strings will always be returned. + + + The character used to divide the original string into sub-strings. + This character cannot be a backslash or a double-quote; otherwise, no + work will be performed and null will be returned. + + + If this parameter is non-zero, all double-quote characters will be + retained in the returned list of strings; otherwise, they will be + dropped. + + + Upon failure, this parameter will be modified to contain an appropriate + error message. + + + The new array of strings or null if the input string is null -OR- the + separator character is a backslash or a double-quote -OR- the string + contains an unbalanced backslash or double-quote character. + + + + + Convert a value to true or false. + + A string or number representing true or false + + + + + Convert a string to true or false. + + A string representing true or false + + + "yes", "no", "y", "n", "0", "1", "on", "off" as well as Boolean.FalseString and Boolean.TrueString will all be + converted to a proper boolean value. + + + + + Converts a SQLiteType to a .NET Type object + + The SQLiteType to convert + Returns a .NET Type object + + + + For a given intrinsic type, return a DbType + + The native type to convert + The corresponding (closest match) DbType + + + + Returns the ColumnSize for the given DbType + + The DbType to get the size of + + + + + Determines the type name for the given database value type. + + The database value type. + The flags associated with the parent connection object. + The type name or an empty string if it cannot be determined. + + + + Convert a DbType to a Type + + The DbType to convert from + The closest-match .NET type + + + + For a given type, return the closest-match SQLite TypeAffinity, which only understands a very limited subset of types. + + The type to evaluate + The SQLite type affinity for that type. + + + + Builds and returns a map containing the database column types + recognized by this provider. + + + A map containing the database column types recognized by this + provider. + + + + + For a given type name, return a closest-match .NET type + + The name of the type to match + The flags associated with the parent connection object. + The .NET DBType the text evaluates to. + + + + The error code used for logging exceptions caught in user-provided + code. + + + + + Sets the status of the memory usage tracking subsystem in the SQLite core library. By default, this is enabled. + If this is disabled, memory usage tracking will not be performed. This is not really a per-connection value, it is + global to the process. + + Non-zero to enable memory usage tracking, zero otherwise. + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Attempts to free as much heap memory as possible for the database connection. + + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Shutdown the SQLite engine so that it can be restarted with different config options. + We depend on auto initialization to recover. + + + + + Determines if the associated native connection handle is open. + + + Non-zero if a database connection is open. + + + + + Opens a database. + + + Implementers should call SQLiteFunction.BindFunctions() and save the array after opening a connection + to bind all attributed user-defined functions and collating sequences to the new connection. + + The filename of the database to open. SQLite automatically creates it if it doesn't exist. + The flags associated with the parent connection object + The open flags to use when creating the connection + The maximum size of the pool for the given filename + If true, the connection can be pulled from the connection pool + + + + Closes the currently-open database. + + + After the database has been closed implemeters should call SQLiteFunction.UnbindFunctions() to deallocate all interop allocated + memory associated with the user-defined functions and collating sequences tied to the closed connection. + + Non-zero if the operation is allowed to throw exceptions, zero otherwise. + + + + Sets the busy timeout on the connection. SQLiteCommand will call this before executing any command. + + The number of milliseconds to wait before returning SQLITE_BUSY + + + + Returns the text of the last error issued by SQLite + + + + + + Returns the text of the last error issued by SQLite -OR- the specified default error text if + none is available from the SQLite core library. + + + The error text to return in the event that one is not available from the SQLite core library. + + + The error text. + + + + + When pooling is enabled, force this connection to be disposed rather than returned to the pool + + + + + When pooling is enabled, returns the number of pool entries matching the current file name. + + The number of pool entries matching the current file name. + + + + Prepares a SQL statement for execution. + + The source connection preparing the command. Can be null for any caller except LINQ + The SQL command text to prepare + The previous statement in a multi-statement command, or null if no previous statement exists + The timeout to wait before aborting the prepare + The remainder of the statement that was not processed. Each call to prepare parses the + SQL up to to either the end of the text or to the first semi-colon delimiter. The remaining text is returned + here for a subsequent call to Prepare() until all the text has been processed. + Returns an initialized SQLiteStatement. + + + + Steps through a prepared statement. + + The SQLiteStatement to step through + True if a row was returned, False if not. + + + + Resets a prepared statement so it can be executed again. If the error returned is SQLITE_SCHEMA, + transparently attempt to rebuild the SQL statement and throw an error if that was not possible. + + The statement to reset + Returns -1 if the schema changed while resetting, 0 if the reset was sucessful or 6 (SQLITE_LOCKED) if the reset failed due to a lock + + + + Attempts to interrupt the query currently executing on the associated + native database connection. + + + + + This function binds a user-defined functions to the connection. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + + + + Calls the native SQLite core library in order to create a disposable + module containing the implementation of a virtual table. + + + The module object to be used when creating the native disposable module. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to cleanup the resources + associated with a module containing the implementation of a virtual table. + + + The module object previously passed to the + method. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to declare a virtual table + in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + being declared. + + + The string containing the SQL statement describing the virtual table to + be declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Calls the native SQLite core library in order to declare a virtual table + function in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + function being declared. + + + The number of arguments to the function being declared. + + + The name of the function being declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Enables or disabled extension loading by SQLite. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + + Enables or disabled extened result codes returned by SQLite + + true to enable extended result codes, false to disable. + + + + + Returns the numeric result code for the most recent failed SQLite API call + associated with the database connection. + + Result code + + + + Returns the extended numeric result code for the most recent failed SQLite API call + associated with the database connection. + + Extended result code + + + + Add a log message via the SQLite sqlite3_log interface. + + Error code to be logged with the message. + String to be logged. Unlike the SQLite sqlite3_log() + interface, this should be pre-formatted. Consider using the + String.Format() function. + + + + + Checks if the SQLite core library has been initialized in the current process. + + + Non-zero if the SQLite core library has been initialized in the current process, + zero otherwise. + + + + + Creates a new SQLite backup object based on the provided destination + database connection. The source database connection is the one + associated with this object. The source and destination database + connections cannot be the same. + + The destination database connection. + The destination database name. + The source database name. + The newly created backup object. + + + + Copies up to N pages from the source database to the destination + database associated with the specified backup object. + + The backup object to use. + + The number of pages to copy or negative to copy all remaining pages. + + + Set to true if the operation needs to be retried due to database + locking issues. + + + True if there are more pages to be copied, false otherwise. + + + + + Returns the number of pages remaining to be copied from the source + database to the destination database associated with the specified + backup object. + + The backup object to check. + The number of pages remaining to be copied. + + + + Returns the total number of pages in the source database associated + with the specified backup object. + + The backup object to check. + The total number of pages in the source database. + + + + Destroys the backup object, rolling back any backup that may be in + progess. + + The backup object to destroy. + + + + Returns the error message for the specified SQLite return code using + the internal static lookup table. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns the error message for the specified SQLite return code using + the sqlite3_errstr() function, falling back to the internal lookup + table if necessary. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns a string representing the active version of SQLite + + + + + Returns an integer representing the active version of SQLite + + + + + Returns the rowid of the most recent successful INSERT into the database from this connection. + + + + + Returns the number of changes the last executing insert/update caused. + + + + + Returns the amount of memory (in bytes) currently in use by the SQLite core library. This is not really a per-connection + value, it is global to the process. + + + + + Returns the maximum amount of memory (in bytes) used by the SQLite core library since the high-water mark was last reset. + This is not really a per-connection value, it is global to the process. + + + + + Returns non-zero if the underlying native connection handle is owned by this instance. + + + + + Returns non-zero if the given database connection is in autocommit mode. + Autocommit mode is on by default. Autocommit mode is disabled by a BEGIN + statement. Autocommit mode is re-enabled by a COMMIT or ROLLBACK. + + + + + The opaque pointer returned to us by the sqlite provider + + + + + The user-defined functions registered on this connection + + + + + The modules created using this connection. + + + + + Constructs the object used to interact with the SQLite core library + using the UTF-8 text encoding. + + + The DateTime format to be used when converting string values to a + DateTime and binding DateTime parameters. + + + The to be used when creating DateTime + values. + + + The format string to be used when parsing and formatting DateTime + values. + + + The native handle to be associated with the database connection. + + + The fully qualified file name associated with . + + + Non-zero if the newly created object instance will need to dispose + of when it is no longer needed. + + + + + This method attempts to dispose of all the derived + object instances currently associated with the native database connection. + + + + + Attempts to interrupt the query currently executing on the associated + native database connection. + + + + + This function binds a user-defined function to the connection. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + + + + Attempts to free as much heap memory as possible for the database connection. + + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Attempts to free N bytes of heap memory by deallocating non-essential memory + allocations held by the database library. Memory used to cache database pages + to improve performance is an example of non-essential memory. This is a no-op + returning zero if the SQLite core library was not compiled with the compile-time + option SQLITE_ENABLE_MEMORY_MANAGEMENT. Optionally, attempts to reset and/or + compact the Win32 native heap, if applicable. + + + The requested number of bytes to free. + + + Non-zero to attempt a heap reset. + + + Non-zero to attempt heap compaction. + + + The number of bytes actually freed. This value may be zero. + + + This value will be non-zero if the heap reset was successful. + + + The size of the largest committed free block in the heap, in bytes. + This value will be zero unless heap compaction is enabled. + + + A standard SQLite return code (i.e. zero for success and non-zero + for failure). + + + + + Shutdown the SQLite engine so that it can be restarted with different + configuration options. We depend on auto initialization to recover. + + Returns a standard SQLite result code. + + + + Shutdown the SQLite engine so that it can be restarted with different + configuration options. We depend on auto initialization to recover. + + + Non-zero to reset the database and temporary directories to their + default values, which should be null for both. This parameter has no + effect on non-Windows operating systems. + + Returns a standard SQLite result code. + + + + Determines if the associated native connection handle is open. + + + Non-zero if the associated native connection handle is open. + + + + + Calls the native SQLite core library in order to create a disposable + module containing the implementation of a virtual table. + + + The module object to be used when creating the native disposable module. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to cleanup the resources + associated with a module containing the implementation of a virtual table. + + + The module object previously passed to the + method. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to declare a virtual table + in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + being declared. + + + The string containing the SQL statement describing the virtual table to + be declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Calls the native SQLite core library in order to declare a virtual table + function in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + function being declared. + + + The number of arguments to the function being declared. + + + The name of the function being declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Enables or disabled extension loading by SQLite. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + Enables or disabled extended result codes returned by SQLite + + + Gets the last SQLite error code + + + Gets the last SQLite extended error code + + + Add a log message via the SQLite sqlite3_log interface. + + + Add a log message via the SQLite sqlite3_log interface. + + + + Allows the setting of a logging callback invoked by SQLite when a + log event occurs. Only one callback may be set. If NULL is passed, + the logging callback is unregistered. + + The callback function to invoke. + Returns a result code + + + + Creates a new SQLite backup object based on the provided destination + database connection. The source database connection is the one + associated with this object. The source and destination database + connections cannot be the same. + + The destination database connection. + The destination database name. + The source database name. + The newly created backup object. + + + + Copies up to N pages from the source database to the destination + database associated with the specified backup object. + + The backup object to use. + + The number of pages to copy, negative to copy all remaining pages. + + + Set to true if the operation needs to be retried due to database + locking issues; otherwise, set to false. + + + True if there are more pages to be copied, false otherwise. + + + + + Returns the number of pages remaining to be copied from the source + database to the destination database associated with the specified + backup object. + + The backup object to check. + The number of pages remaining to be copied. + + + + Returns the total number of pages in the source database associated + with the specified backup object. + + The backup object to check. + The total number of pages in the source database. + + + + Destroys the backup object, rolling back any backup that may be in + progess. + + The backup object to destroy. + + + + Determines if the SQLite core library has been initialized for the + current process. + + + A boolean indicating whether or not the SQLite core library has been + initialized for the current process. + + + + + Determines if the SQLite core library has been initialized for the + current process. + + + A boolean indicating whether or not the SQLite core library has been + initialized for the current process. + + + + + Helper function to retrieve a column of data from an active statement. + + The statement being step()'d through + The flags associated with the connection. + The column index to retrieve + The type of data contained in the column. If Uninitialized, this function will retrieve the datatype information. + Returns the data in the column + + + + Returns non-zero if the underlying native connection handle is owned + by this instance. + + + + + Alternate SQLite3 object, overriding many text behaviors to support UTF-16 (Unicode) + + + + + Constructs the object used to interact with the SQLite core library + using the UTF-8 text encoding. + + + The DateTime format to be used when converting string values to a + DateTime and binding DateTime parameters. + + + The to be used when creating DateTime + values. + + + The format string to be used when parsing and formatting DateTime + values. + + + The native handle to be associated with the database connection. + + + The fully qualified file name associated with . + + + Non-zero if the newly created object instance will need to dispose + of when it is no longer needed. + + + + + Overrides SQLiteConvert.ToString() to marshal UTF-16 strings instead of UTF-8 + + A pointer to a UTF-16 string + The length (IN BYTES) of the string + A .NET string + + + + Represents a single SQL backup in SQLite. + + + + + The underlying SQLite object this backup is bound to. + + + + + The actual backup handle. + + + + + The destination database for the backup. + + + + + The destination database name for the backup. + + + + + The source database for the backup. + + + + + The source database name for the backup. + + + + + The last result from the StepBackup method of the SQLite3 class. + This is used to determine if the call to the FinishBackup method of + the SQLite3 class should throw an exception when it receives a non-Ok + return code from the core SQLite library. + + + + + Initializes the backup. + + The base SQLite object. + The backup handle. + The destination database for the backup. + The destination database name for the backup. + The source database for the backup. + The source database name for the backup. + + + + Disposes and finalizes the backup. + + + + + The extra behavioral flags that can be applied to a connection. + + + + + No extra flags. + + + + + Enable logging of all SQL statements to be prepared. + + + + + Enable logging of all bound parameter types and raw values. + + + + + Enable logging of all bound parameter strongly typed values. + + + + + Enable logging of all exceptions caught from user-provided + managed code called from native code via delegates. + + + + + Enable logging of backup API errors. + + + + + Skip adding the extension functions provided by the native + interop assembly. + + + + + When binding parameter values with the + type, use the interop method that accepts an + value. + + + + + When binding parameter values, always bind them as though they were + plain text (i.e. no numeric, date/time, or other conversions should + be attempted). + + + + + When returning column values, always return them as though they were + plain text (i.e. no numeric, date/time, or other conversions should + be attempted). + + + + + Prevent this object instance from + loading extensions. + + + + + Prevent this object instance from + creating virtual table modules. + + + + + Skip binding any functions provided by other managed assemblies when + opening the connection. + + + + + Skip setting the logging related properties of the + object instance that was passed to + the method. + + + + + Enable logging of all virtual table module errors seen by the + method. + + + + + Enable logging of certain virtual table module exceptions that cannot + be easily discovered via other means. + + + + + Enable tracing of potentially important [non-fatal] error conditions + that cannot be easily reported through other means. + + + + + When binding and returning column values, always treat them as though + they were plain text (i.e. no numeric, date/time, or other conversions + should be attempted). + + + + + Enable all logging. + + + + + The default extra flags for new connections. + + + + + SQLite implementation of DbCommand. + + + + + The default connection string to be used when creating a temporary + connection to execute a command via the static + or + + methods. + + + + + The command text this command is based on + + + + + The connection the command is associated with + + + + + The version of the connection the command is associated with + + + + + Indicates whether or not a DataReader is active on the command. + + + + + The timeout for the command, kludged because SQLite doesn't support per-command timeout values + + + + + Designer support + + + + + Used by DbDataAdapter to determine updating behavior + + + + + The collection of parameters for the command + + + + + The SQL command text, broken into individual SQL statements as they are executed + + + + + Unprocessed SQL text that has not been executed + + + + + Transaction associated with this command + + + + + Constructs a new SQLiteCommand + + + Default constructor + + + + + Initializes the command with the given command text + + The SQL command text + + + + Initializes the command with the given SQL command text and attach the command to the specified + connection. + + The SQL command text + The connection to associate with the command + + + + Initializes the command and associates it with the specified connection. + + The connection to associate with the command + + + + Initializes a command with the given SQL, connection and transaction + + The SQL command text + The connection to associate with the command + The transaction the command should be associated with + + + + Disposes of the command and clears all member variables + + Whether or not the class is being explicitly or implicitly disposed + + + + This method attempts to query the flags associated with the database + connection in use. If the database connection is disposed, the default + flags will be returned. + + + The command containing the databse connection to query the flags from. + + + The connection flags value. + + + + + Clears and destroys all statements currently prepared + + + + + Builds an array of prepared statements for each complete SQL statement in the command text + + + + + Not implemented + + + + + Forwards to the local CreateParameter() function + + + + + + Create a new parameter + + + + + + This function ensures there are no active readers, that we have a valid connection, + that the connection is open, that all statements are prepared and all parameters are assigned + in preparation for allocating a data reader. + + + + + Creates a new SQLiteDataReader to execute/iterate the array of SQLite prepared statements + + The behavior the data reader should adopt + Returns a SQLiteDataReader object + + + + This method creates a new connection, executes the query using the given + execution type, closes the connection, and returns the results. If the + connection string is null, a temporary in-memory database connection will + be used. + + + The text of the command to be executed. + + + The execution type for the command. This is used to determine which method + of the command object to call, which then determines the type of results + returned, if any. + + + The connection string to the database to be opened, used, and closed. If + this parameter is null, a temporary in-memory databse will be used. + + + The SQL parameter values to be used when building the command object to be + executed, if any. + + + The results of the query -OR- null if no results were produced from the + given execution type. + + + + + This method creates a new connection, executes the query using the given + execution type and command behavior, closes the connection, and returns + the results. If the connection string is null, a temporary in-memory + database connection will be used. + + + The text of the command to be executed. + + + The execution type for the command. This is used to determine which method + of the command object to call, which then determines the type of results + returned, if any. + + + The command behavior flags for the command. + + + The connection string to the database to be opened, used, and closed. If + this parameter is null, a temporary in-memory databse will be used. + + + The SQL parameter values to be used when building the command object to be + executed, if any. + + + The results of the query -OR- null if no results were produced from the + given execution type. + + + + + Overrides the default behavior to return a SQLiteDataReader specialization class + + The flags to be associated with the reader. + A SQLiteDataReader + + + + Overrides the default behavior of DbDataReader to return a specialized SQLiteDataReader class + + A SQLiteDataReader + + + + Called by the SQLiteDataReader when the data reader is closed. + + + + + Execute the command and return the number of rows inserted/updated affected by it. + + The number of rows inserted/updated affected by it. + + + + Execute the command and return the number of rows inserted/updated affected by it. + + The flags to be associated with the reader. + The number of rows inserted/updated affected by it. + + + + Execute the command and return the first column of the first row of the resultset + (if present), or null if no resultset was returned. + + The first column of the first row of the first resultset from the query. + + + + Execute the command and return the first column of the first row of the resultset + (if present), or null if no resultset was returned. + + The flags to be associated with the reader. + The first column of the first row of the first resultset from the query. + + + + Does nothing. Commands are prepared as they are executed the first time, and kept in prepared state afterwards. + + + + + Clones a command, including all its parameters + + A new SQLiteCommand with the same commandtext, connection and parameters + + + + The SQL command text associated with the command + + + + + The amount of time to wait for the connection to become available before erroring out + + + + + The type of the command. SQLite only supports CommandType.Text + + + + + The connection associated with this command + + + + + Forwards to the local Connection property + + + + + Returns the SQLiteParameterCollection for the given command + + + + + Forwards to the local Parameters property + + + + + The transaction associated with this command. SQLite only supports one transaction per connection, so this property forwards to the + command's underlying connection. + + + + + Forwards to the local Transaction property + + + + + Sets the method the SQLiteCommandBuilder uses to determine how to update inserted or updated rows in a DataTable. + + + + + Determines if the command is visible at design time. Defaults to True. + + + + + SQLite implementation of DbCommandBuilder. + + + + + Default constructor + + + + + Initializes the command builder and associates it with the specified data adapter. + + + + + + Minimal amount of parameter processing. Primarily sets the DbType for the parameter equal to the provider type in the schema + + The parameter to use in applying custom behaviors to a row + The row to apply the parameter to + The type of statement + Whether the application of the parameter is part of a WHERE clause + + + + Returns a valid named parameter + + The name of the parameter + Error + + + + Returns a named parameter for the given ordinal + + The i of the parameter + Error + + + + Returns a placeholder character for the specified parameter i. + + The index of the parameter to provide a placeholder for + Returns a named parameter + + + + Sets the handler for receiving row updating events. Used by the DbCommandBuilder to autogenerate SQL + statements that may not have previously been generated. + + A data adapter to receive events on. + + + + Returns the automatically-generated SQLite command to delete rows from the database + + + + + + Returns the automatically-generated SQLite command to delete rows from the database + + + + + + + Returns the automatically-generated SQLite command to update rows in the database + + + + + + Returns the automatically-generated SQLite command to update rows in the database + + + + + + + Returns the automatically-generated SQLite command to insert rows into the database + + + + + + Returns the automatically-generated SQLite command to insert rows into the database + + + + + + + Places brackets around an identifier + + The identifier to quote + The bracketed identifier + + + + Removes brackets around an identifier + + The quoted (bracketed) identifier + The undecorated identifier + + + + Override helper, which can help the base command builder choose the right keys for the given query + + + + + + + Gets/sets the DataAdapter for this CommandBuilder + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Event data for connection event handlers. + + + + + The type of event being raised. + + + + + The associated with this event, if any. + + + + + The transaction associated with this event, if any. + + + + + The command associated with this event, if any. + + + + + The data reader associated with this event, if any. + + + + + The critical handle associated with this event, if any. + + + + + Command or message text associated with this event, if any. + + + + + Extra data associated with this event, if any. + + + + + Constructs the object. + + The type of event being raised. + The base associated + with this event, if any. + The transaction associated with this event, if any. + The command associated with this event, if any. + The data reader associated with this event, if any. + The critical handle associated with this event, if any. + The command or message text, if any. + The extra data, if any. + + + + Raised when an event pertaining to a connection occurs. + + The connection involved. + Extra information about the event. + + + + SQLite implentation of DbConnection. + + + The property can contain the following parameter(s), delimited with a semi-colon: + + + Parameter + Values + Required + Default + + + Data Source + + This may be a file name, the string ":memory:", or any supported URI (starting with SQLite 3.7.7). + Starting with release 1.0.86.0, in order to use more than one consecutive backslash (e.g. for a + UNC path), each of the adjoining backslash characters must be doubled (e.g. "\\Network\Share\test.db" + would become "\\\\Network\Share\test.db"). + + Y + + + + Version + 3 + N + 3 + + + UseUTF16Encoding + True
False
+ N + False +
+ + DateTimeFormat + + Ticks - Use the value of DateTime.Ticks.
+ ISO8601 - Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC + DateTime values and "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values).
+ JulianDay - The interval of time in days and fractions of a day since January 1, 4713 BC.
+ UnixEpoch - The whole number of seconds since the Unix epoch (January 1, 1970).
+ InvariantCulture - Any culture-independent string value that the .NET Framework can interpret as a valid DateTime.
+ CurrentCulture - Any string value that the .NET Framework can interpret as a valid DateTime using the current culture.
+ N + ISO8601 +
+ + DateTimeKind + Unspecified - Not specified as either UTC or local time.
Utc - The time represented is UTC.
Local - The time represented is local time.
+ N + Unspecified +
+ + DateTimeFormatString + The exact DateTime format string to use for all formatting and parsing of all DateTime + values for this connection. + N + null + + + BaseSchemaName + Some base data classes in the framework (e.g. those that build SQL queries dynamically) + assume that an ADO.NET provider cannot support an alternate catalog (i.e. database) without supporting + alternate schemas as well; however, SQLite does not fit into this model. Therefore, this value is used + as a placeholder and removed prior to preparing any SQL statements that may contain it. + N + sqlite_default_schema + + + BinaryGUID + True - Store GUID columns in binary form
False - Store GUID columns as text
+ N + True +
+ + Cache Size + {size in bytes} + N + 2000 + + + Synchronous + Normal - Normal file flushing behavior
Full - Full flushing after all writes
Off - Underlying OS flushes I/O's
+ N + Full +
+ + Page Size + {size in bytes} + N + 1024 + + + Password + {password} - Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + HexPassword + {hexPassword} - Must contain a sequence of zero or more hexadecimal encoded byte values without a leading "0x" prefix. Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + Enlist + Y - Automatically enlist in distributed transactions
N - No automatic enlistment
+ N + Y +
+ + Pooling + + True - Use connection pooling.
+ False - Do not use connection pooling.

+ WARNING: When using the default connection pool implementation, + setting this property to True should be avoided by applications that make + use of COM (either directly or indirectly) due to possible deadlocks that + can occur during the finalization of some COM objects. +
+ N + False +
+ + FailIfMissing + True - Don't create the database if it does not exist, throw an error instead
False - Automatically create the database if it does not exist
+ N + False +
+ + Max Page Count + {size in pages} - Limits the maximum number of pages (limits the size) of the database + N + 0 + + + Legacy Format + True - Use the more compatible legacy 3.x database format
False - Use the newer 3.3x database format which compresses numbers more effectively
+ N + False +
+ + Default Timeout + {time in seconds}
The default command timeout
+ N + 30 +
+ + Journal Mode + Delete - Delete the journal file after a commit
Persist - Zero out and leave the journal file on disk after a commit
Off - Disable the rollback journal entirely
+ N + Delete +
+ + Read Only + True - Open the database for read only access
False - Open the database for normal read/write access
+ N + False +
+ + Max Pool Size + The maximum number of connections for the given connection string that can be in the connection pool + N + 100 + + + Default IsolationLevel + The default transaciton isolation level + N + Serializable + + + Foreign Keys + Enable foreign key constraints + N + False + + + Flags + Extra behavioral flags for the connection. See the enumeration for possible values. + N + Default + + + SetDefaults + + True - Apply the default connection settings to the opened database.
+ False - Skip applying the default connection settings to the opened database. +
+ N + True +
+ + ToFullPath + + True - Attempt to expand the data source file name to a fully qualified path before opening.
+ False - Skip attempting to expand the data source file name to a fully qualified path before opening. +
+ N + True +
+
+
+
+ + + The default "stub" (i.e. placeholder) base schema name to use when + returning column schema information. Used as the initial value of + the BaseSchemaName property. This should start with "sqlite_*" + because those names are reserved for use by SQLite (i.e. they cannot + be confused with the names of user objects). + + + + + The managed assembly containing this type. + + + + + Object used to synchronize access to the static instance data + for this class. + + + + + State of the current connection + + + + + The connection string + + + + + Nesting level of the transactions open on the connection + + + + + If set, then the connection is currently being disposed. + + + + + The default isolation level for new transactions + + + + + Whether or not the connection is enlisted in a distrubuted transaction + + + + + The base SQLite object to interop with + + + + + The database filename minus path and extension + + + + + Temporary password storage, emptied after the database has been opened + + + + + The "stub" (i.e. placeholder) base schema name to use when returning + column schema information. + + + + + The extra behavioral flags for this connection, if any. See the + enumeration for a list of + possible values. + + + + + Default command timeout + + + + + Non-zero if the built-in (i.e. framework provided) connection string + parser should be used when opening the connection. + + + + + Constructs a new SQLiteConnection object + + + Default constructor + + + + + Initializes the connection with the specified connection string. + + The connection string to use. + + + + Initializes the connection with a pre-existing native connection handle. + This constructor overload is intended to be used only by the private + method. + + + The native connection handle to use. + + + The file name corresponding to the native connection handle. + + + Non-zero if this instance owns the native connection handle and + should dispose of it when it is no longer needed. + + + + + Initializes the connection with the specified connection string. + + + The connection string to use. + + + Non-zero to parse the connection string using the built-in (i.e. + framework provided) parser when opening the connection. + + + + + Clones the settings and connection string from an existing connection. If the existing connection is already open, this + function will open its own connection, enumerate any attached databases of the original connection, and automatically + attach to them. + + The connection to copy the settings from. + + + + Raises the event. + + + The connection associated with this event. If this parameter is not + null and the specified connection cannot raise events, then the + registered event handlers will not be invoked. + + + A that contains the event data. + + + + + Creates and returns a new managed database connection handle. This + method is intended to be used by implementations of the + interface only. In theory, it + could be used by other classes; however, that usage is not supported. + + + This must be a native database connection handle returned by the + SQLite core library and it must remain valid and open during the + entire duration of the calling method. + + + The new managed database connection handle or null if it cannot be + created. + + + + + Backs up the database, using the specified database connection as the + destination. + + The destination database connection. + The destination database name. + The source database name. + + The number of pages to copy or negative to copy all remaining pages. + + + The method to invoke between each step of the backup process. This + parameter may be null (i.e. no callbacks will be performed). + + + The number of milliseconds to sleep after encountering a locking error + during the backup process. A value less than zero means that no sleep + should be performed. + + + + + Attempts to bind the specified object + instance to this connection. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + + + Creates a clone of the connection. All attached databases and user-defined functions are cloned. If the existing connection is open, the cloned connection + will also be opened. + + + + + + Creates a database file. This just creates a zero-byte file which SQLite + will turn into a database when the file is opened properly. + + The file to create + + + + Raises the state change event when the state of the connection changes + + The new connection state. If this is different + from the previous state, the event is + raised. + The event data created for the raised event, if + it was actually raised. + + + + Determines and returns the fallback default isolation level when one cannot be + obtained from an existing connection instance. + + + The fallback default isolation level for this connection instance -OR- + if it cannot be determined. + + + + + Determines and returns the default isolation level for this connection instance. + + + The default isolation level for this connection instance -OR- + if it cannot be determined. + + + + + OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. + + This parameter is ignored. + When TRUE, SQLite defers obtaining a write lock until a write operation is requested. + When FALSE, a writelock is obtained immediately. The default is TRUE, but in a multi-threaded multi-writer + environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. + Returns a SQLiteTransaction object. + + + + OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. + + When TRUE, SQLite defers obtaining a write lock until a write operation is requested. + When FALSE, a writelock is obtained immediately. The default is false, but in a multi-threaded multi-writer + environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. + Returns a SQLiteTransaction object. + + + + Creates a new if one isn't already active on the connection. + + Supported isolation levels are Serializable, ReadCommitted and Unspecified. + + Unspecified will use the default isolation level specified in the connection string. If no isolation level is specified in the + connection string, Serializable is used. + Serializable transactions are the default. In this mode, the engine gets an immediate lock on the database, and no other threads + may begin a transaction. Other threads may read from the database, but not write. + With a ReadCommitted isolation level, locks are deferred and elevated as needed. It is possible for multiple threads to start + a transaction in ReadCommitted mode, but if a thread attempts to commit a transaction while another thread + has a ReadCommitted lock, it may timeout or cause a deadlock on both threads until both threads' CommandTimeout's are reached. + + Returns a SQLiteTransaction object. + + + + Creates a new if one isn't already + active on the connection. + + Returns the new transaction object. + + + + Forwards to the local function + + Supported isolation levels are Unspecified, Serializable, and ReadCommitted + + + + + This method is not implemented; however, the + event will still be raised. + + + + + + When the database connection is closed, all commands linked to this connection are automatically reset. + + + + + Clears the connection pool associated with the connection. Any other active connections using the same database file + will be discarded instead of returned to the pool when they are closed. + + + + + + Clears all connection pools. Any active connections will be discarded instead of sent to the pool when they are closed. + + + + + Create a new and associate it with this connection. + + Returns a new command object already assigned to this connection. + + + + Forwards to the local function. + + + + + + Parses the connection string into component parts using the custom + connection string parser. + + The connection string to parse + An array of key-value pairs representing each parameter of the connection string + + + + Parses a connection string using the built-in (i.e. framework provided) + connection string parser class and returns the key/value pairs. An + exception may be thrown if the connection string is invalid or cannot be + parsed. When compiled for the .NET Compact Framework, the custom + connection string parser is always used instead because the framework + provided one is unavailable there. + + + The connection string to parse. + + + Non-zero to throw an exception if any connection string values are not of + the type. + + The list of key/value pairs. + + + + Manual distributed transaction enlistment support + + The distributed transaction to enlist in + + + + Looks for a key in the array of key/values of the parameter string. If not found, return the specified default value + + The list to look in + The key to find + The default value to return if the key is not found + The value corresponding to the specified key, or the default value if not found. + + + + Attempts to convert the string value to an enumerated value of the specified type. + + The enumerated type to convert the string value to. + The string value to be converted. + Non-zero to make the conversion case-insensitive. + The enumerated value upon success or null upon error. + + + + Attempts to convert an input string into a byte value. + + + The string value to be converted. + + + The number styles to use for the conversion. + + + Upon sucess, this will contain the parsed byte value. + Upon failure, the value of this parameter is undefined. + + + Non-zero upon success; zero on failure. + + + + + Enables or disabled extension loading. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named dynamic link library file. + + + The name of the dynamic link library file containing the extension. + + + + + Loads a SQLite extension library from the named dynamic link library file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + + Creates a disposable module containing the implementation of a virtual + table. + + + The module object to be used when creating the disposable module. + + + + + Parses a string containing a sequence of zero or more hexadecimal + encoded byte values and returns the resulting byte array. The + "0x" prefix is not allowed on the input string. + + + The input string containing zero or more hexadecimal encoded byte + values. + + + A byte array containing the parsed byte values or null if an error + was encountered. + + + + + Creates and returns a string containing the hexadecimal encoded byte + values from the input array. + + + The input array of bytes. + + + The resulting string or null upon failure. + + + + + Parses a string containing a sequence of zero or more hexadecimal + encoded byte values and returns the resulting byte array. The + "0x" prefix is not allowed on the input string. + + + The input string containing zero or more hexadecimal encoded byte + values. + + + Upon failure, this will contain an appropriate error message. + + + A byte array containing the parsed byte values or null if an error + was encountered. + + + + + Opens the connection using the parameters found in the . + + + + + Opens the connection using the parameters found in the and then returns it. + + The current connection object. + + + + This method causes any pending database operation to abort and return at + its earliest opportunity. This routine is typically called in response + to a user action such as pressing "Cancel" or Ctrl-C where the user wants + a long query operation to halt immediately. It is safe to call this + routine from any thread. However, it is not safe to call this routine + with a database connection that is closed or might close before this method + returns. + + + + + Returns various global memory statistics for the SQLite core library via + a dictionary of key/value pairs. Currently, only the "MemoryUsed" and + "MemoryHighwater" keys are returned and they have values that correspond + to the values that could be obtained via the + and connection properties. + + + This dictionary will be populated with the global memory statistics. It + will be created if necessary. + + + + + Attempts to free as much heap memory as possible for this database connection. + + + + + Attempts to free N bytes of heap memory by deallocating non-essential memory + allocations held by the database library. Memory used to cache database pages + to improve performance is an example of non-essential memory. This is a no-op + returning zero if the SQLite core library was not compiled with the compile-time + option SQLITE_ENABLE_MEMORY_MANAGEMENT. Optionally, attempts to reset and/or + compact the Win32 native heap, if applicable. + + + The requested number of bytes to free. + + + Non-zero to attempt a heap reset. + + + Non-zero to attempt heap compaction. + + + The number of bytes actually freed. This value may be zero. + + + This value will be non-zero if the heap reset was successful. + + + The size of the largest committed free block in the heap, in bytes. + This value will be zero unless heap compaction is enabled. + + + A standard SQLite return code (i.e. zero for success and non-zero + for failure). + + + + + Sets the status of the memory usage tracking subsystem in the SQLite core library. By default, this is enabled. + If this is disabled, memory usage tracking will not be performed. This is not really a per-connection value, it is + global to the process. + + Non-zero to enable memory usage tracking, zero otherwise. + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Passes a shutdown request to the SQLite core library. Does not throw + an exception if the shutdown request fails. + + + A standard SQLite return code (i.e. zero for success and non-zero for + failure). + + + + + Passes a shutdown request to the SQLite core library. Throws an + exception if the shutdown request fails and the no-throw parameter + is non-zero. + + + Non-zero to reset the database and temporary directories to their + default values, which should be null for both. + + + When non-zero, throw an exception if the shutdown request fails. + + + + Enables or disabled extended result codes returned by SQLite + + + Enables or disabled extended result codes returned by SQLite + + + Enables or disabled extended result codes returned by SQLite + + + Add a log message via the SQLite sqlite3_log interface. + + + Add a log message via the SQLite sqlite3_log interface. + + + + Change the password (or assign a password) to an open database. + + + No readers or writers may be active for this process. The database must already be open + and if it already was password protected, the existing password must already have been supplied. + + The new password to assign to the database + + + + Change the password (or assign a password) to an open database. + + + No readers or writers may be active for this process. The database must already be open + and if it already was password protected, the existing password must already have been supplied. + + The new password to assign to the database + + + + Sets the password for a password-protected database. A password-protected database is + unusable for any operation until the password has been set. + + The password for the database + + + + Sets the password for a password-protected database. A password-protected database is + unusable for any operation until the password has been set. + + The password for the database + + + + Queries or modifies the number of retries or the retry interval (in milliseconds) for + certain I/O operations that may fail due to anti-virus software. + + The number of times to retry the I/O operation. A negative value + will cause the current count to be queried and replace that negative value. + The number of milliseconds to wait before retrying the I/O + operation. This number is multiplied by the number of retry attempts so far to come + up with the final number of milliseconds to wait. A negative value will cause the + current interval to be queried and replace that negative value. + Zero for success, non-zero for error. + + + + Removes one set of surrounding single -OR- double quotes from the string + value and returns the resulting string value. If the string is null, empty, + or contains quotes that are not balanced, nothing is done and the original + string value will be returned. + + The string value to process. + + The string value, modified to remove one set of surrounding single -OR- + double quotes, if applicable. + + + + + Expand the filename of the data source, resolving the |DataDirectory| + macro as appropriate. + + The database filename to expand + + Non-zero if the returned file name should be converted to a full path + (except when using the .NET Compact Framework). + + The expanded path and filename of the filename + + + + The following commands are used to extract schema information out of the database. Valid schema types are: + + + MetaDataCollections + + + DataSourceInformation + + + Catalogs + + + Columns + + + ForeignKeys + + + Indexes + + + IndexColumns + + + Tables + + + Views + + + ViewColumns + + + + + Returns the MetaDataCollections schema + + A DataTable of the MetaDataCollections schema + + + + Returns schema information of the specified collection + + The schema collection to retrieve + A DataTable of the specified collection + + + + Retrieves schema information using the specified constraint(s) for the specified collection + + The collection to retrieve + The restrictions to impose + A DataTable of the specified collection + + + + Builds a MetaDataCollections schema datatable + + DataTable + + + + Builds a DataSourceInformation datatable + + DataTable + + + + Build a Columns schema + + The catalog (attached database) to query, can be null + The table to retrieve schema information for, must not be null + The column to retrieve schema information for, can be null + DataTable + + + + Returns index information for the given database and catalog + + The catalog (attached database) to query, can be null + The name of the index to retrieve information for, can be null + The table to retrieve index information for, can be null + DataTable + + + + Retrieves table schema information for the database and catalog + + The catalog (attached database) to retrieve tables on + The table to retrieve, can be null + The table type, can be null + DataTable + + + + Retrieves view schema information for the database + + The catalog (attached database) to retrieve views on + The view name, can be null + DataTable + + + + Retrieves catalog (attached databases) schema information for the database + + The catalog to retrieve, can be null + DataTable + + + + Returns the base column information for indexes in a database + + The catalog to retrieve indexes for (can be null) + The table to restrict index information by (can be null) + The index to restrict index information by (can be null) + The source column to restrict index information by (can be null) + A DataTable containing the results + + + + Returns detailed column information for a specified view + + The catalog to retrieve columns for (can be null) + The view to restrict column information by (can be null) + The source column to restrict column information by (can be null) + A DataTable containing the results + + + + Retrieves foreign key information from the specified set of filters + + An optional catalog to restrict results on + An optional table to restrict results on + An optional foreign key name to restrict results on + A DataTable with the results of the query + + + + Static variable to store the connection event handlers to call. + + + + + This event is raised whenever the database is opened or closed. + + + + + This event is raised when events related to the lifecycle of a + SQLiteConnection object occur. + + + + + This property is used to obtain or set the custom connection pool + implementation to use, if any. Setting this property to null will + cause the default connection pool implementation to be used. + + + + + Returns the number of pool entries for the file name associated with this connection. + + + + + The connection string containing the parameters for the connection + + + + + Parameter + Values + Required + Default + + + Data Source + + This may be a file name, the string ":memory:", or any supported URI (starting with SQLite 3.7.7). + Starting with release 1.0.86.0, in order to use more than one consecutive backslash (e.g. for a + UNC path), each of the adjoining backslash characters must be doubled (e.g. "\\Network\Share\test.db" + would become "\\\\Network\Share\test.db"). + + Y + + + + Version + 3 + N + 3 + + + UseUTF16Encoding + True
False
+ N + False +
+ + DateTimeFormat + + Ticks - Use the value of DateTime.Ticks.
+ ISO8601 - Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC + DateTime values and "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values).
+ JulianDay - The interval of time in days and fractions of a day since January 1, 4713 BC.
+ UnixEpoch - The whole number of seconds since the Unix epoch (January 1, 1970).
+ InvariantCulture - Any culture-independent string value that the .NET Framework can interpret as a valid DateTime.
+ CurrentCulture - Any string value that the .NET Framework can interpret as a valid DateTime using the current culture.
+ N + ISO8601 +
+ + DateTimeKind + Unspecified - Not specified as either UTC or local time.
Utc - The time represented is UTC.
Local - The time represented is local time.
+ N + Unspecified +
+ + DateTimeFormatString + The exact DateTime format string to use for all formatting and parsing of all DateTime + values for this connection. + N + null + + + BaseSchemaName + Some base data classes in the framework (e.g. those that build SQL queries dynamically) + assume that an ADO.NET provider cannot support an alternate catalog (i.e. database) without supporting + alternate schemas as well; however, SQLite does not fit into this model. Therefore, this value is used + as a placeholder and removed prior to preparing any SQL statements that may contain it. + N + sqlite_default_schema + + + BinaryGUID + True - Store GUID columns in binary form
False - Store GUID columns as text
+ N + True +
+ + Cache Size + {size in bytes} + N + 2000 + + + Synchronous + Normal - Normal file flushing behavior
Full - Full flushing after all writes
Off - Underlying OS flushes I/O's
+ N + Full +
+ + Page Size + {size in bytes} + N + 1024 + + + Password + {password} - Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + HexPassword + {hexPassword} - Must contain a sequence of zero or more hexadecimal encoded byte values without a leading "0x" prefix. Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + Enlist + Y - Automatically enlist in distributed transactions
N - No automatic enlistment
+ N + Y +
+ + Pooling + + True - Use connection pooling.
+ False - Do not use connection pooling.

+ WARNING: When using the default connection pool implementation, + setting this property to True should be avoided by applications that + make use of COM (either directly or indirectly) due to possible + deadlocks that can occur during the finalization of some COM objects. +
+ N + False +
+ + FailIfMissing + True - Don't create the database if it does not exist, throw an error instead
False - Automatically create the database if it does not exist
+ N + False +
+ + Max Page Count + {size in pages} - Limits the maximum number of pages (limits the size) of the database + N + 0 + + + Legacy Format + True - Use the more compatible legacy 3.x database format
False - Use the newer 3.3x database format which compresses numbers more effectively
+ N + False +
+ + Default Timeout + {time in seconds}
The default command timeout
+ N + 30 +
+ + Journal Mode + Delete - Delete the journal file after a commit
Persist - Zero out and leave the journal file on disk after a commit
Off - Disable the rollback journal entirely
+ N + Delete +
+ + Read Only + True - Open the database for read only access
False - Open the database for normal read/write access
+ N + False +
+ + Max Pool Size + The maximum number of connections for the given connection string that can be in the connection pool + N + 100 + + + Default IsolationLevel + The default transaciton isolation level + N + Serializable + + + Foreign Keys + Enable foreign key constraints + N + False + + + Flags + Extra behavioral flags for the connection. See the enumeration for possible values. + N + Default + + + SetDefaults + + True - Apply the default connection settings to the opened database.
+ False - Skip applying the default connection settings to the opened database. +
+ N + True +
+ + ToFullPath + + True - Attempt to expand the data source file name to a fully qualified path before opening.
+ False - Skip attempting to expand the data source file name to a fully qualified path before opening. +
+ N + True +
+
+
+
+ + + Returns the data source file name without extension or path. + + + + + Returns the string "main". + + + + + Gets/sets the default command timeout for newly-created commands. This is especially useful for + commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. + This can also be set in the ConnectionString with "Default Timeout" + + + + + Non-zero if the built-in (i.e. framework provided) connection string + parser should be used when opening the connection. + + + + + Gets/sets the extra behavioral flags for this connection. See the + enumeration for a list of + possible values. + + + + + Returns non-zero if the underlying native connection handle is + owned by this instance. + + + + + Returns the version of the underlying SQLite database engine + + + + + Returns the rowid of the most recent successful INSERT into the database from this connection. + + + + + Returns the number of rows changed by the last INSERT, UPDATE, or DELETE statement executed on + this connection. + + + + + Returns non-zero if the given database connection is in autocommit mode. + Autocommit mode is on by default. Autocommit mode is disabled by a BEGIN + statement. Autocommit mode is re-enabled by a COMMIT or ROLLBACK. + + + + + Returns the amount of memory (in bytes) currently in use by the SQLite core library. + + + + + Returns the maximum amount of memory (in bytes) used by the SQLite core library since the high-water mark was last reset. + + + + + Returns a string containing the define constants (i.e. compile-time + options) used to compile the core managed assembly, delimited with + spaces. + + + + + Returns the version of the underlying SQLite core library. + + + + + This method returns the string whose value is the same as the + SQLITE_SOURCE_ID C preprocessor macro used when compiling the + SQLite core library. + + + + + This method returns the version of the interop SQLite assembly + used. If the SQLite interop assembly is not in use or the + necessary information cannot be obtained for any reason, a null + value may be returned. + + + + + This method returns the string whose value contains the unique + identifier for the source checkout used to build the interop + assembly. If the SQLite interop assembly is not in use or the + necessary information cannot be obtained for any reason, a null + value may be returned. + + + + + This method returns the version of the managed components used + to interact with the SQLite core library. If the necessary + information cannot be obtained for any reason, a null value may + be returned. + + + + + This method returns the string whose value contains the unique + identifier for the source checkout used to build the managed + components currently executing. If the necessary information + cannot be obtained for any reason, a null value may be returned. + + + + + Returns the state of the connection. + + + + + This event is raised whenever SQLite encounters an action covered by the + authorizer during query preparation. Changing the value of the + property will determine if + the specific action will be allowed, ignored, or denied. For the entire + duration of the event, the associated connection and statement objects + must not be modified, either directly or indirectly, by the called code. + + + + + This event is raised whenever SQLite makes an update/delete/insert into the database on + this connection. It only applies to the given connection. + + + + + This event is raised whenever SQLite is committing a transaction. + Return non-zero to trigger a rollback. + + + + + This event is raised whenever SQLite statement first begins executing on + this connection. It only applies to the given connection. + + + + + This event is raised whenever SQLite is rolling back a transaction. + + + + + Returns the instance. + + + + + The I/O file cache flushing behavior for the connection + + + + + Normal file flushing at critical sections of the code + + + + + Full file flushing after every write operation + + + + + Use the default operating system's file flushing, SQLite does not explicitly flush the file buffers after writing + + + + + Raised when authorization is required to perform an action contained + within a SQL query. + + The connection performing the action. + A that contains the + event data. + + + + Raised when a transaction is about to be committed. To roll back a transaction, set the + rollbackTrans boolean value to true. + + The connection committing the transaction + Event arguments on the transaction + + + + Raised when data is inserted, updated and deleted on a given connection + + The connection committing the transaction + The event parameters which triggered the event + + + + Raised when a statement first begins executing on a given connection + + The connection executing the statement + Event arguments of the trace + + + + Raised between each backup step. + + + The source database connection. + + + The source database name. + + + The destination database connection. + + + The destination database name. + + + The number of pages copied with each step. + + + The number of pages remaining to be copied. + + + The total number of pages in the source database. + + + Set to true if the operation needs to be retried due to database + locking issues; otherwise, set to false. + + + True to continue with the backup process or false to halt the backup + process, rolling back any changes that have been made so far. + + + + + The data associated with a call into the authorizer. + + + + + The user-defined native data associated with this event. Currently, + this will always contain the value of . + + + + + The action code responsible for the current call into the authorizer. + + + + + The first string argument for the current call into the authorizer. + The exact value will vary based on the action code, see the + enumeration for possible + values. + + + + + The second string argument for the current call into the authorizer. + The exact value will vary based on the action code, see the + enumeration for possible + values. + + + + + The database name for the current call into the authorizer, if + applicable. + + + + + The name of the inner-most trigger or view that is responsible for + the access attempt or a null value if this access attempt is directly + from top-level SQL code. + + + + + The return code for the current call into the authorizer. + + + + + Constructs an instance of this class with default property values. + + + + + Constructs an instance of this class with specific property values. + + + The user-defined native data associated with this event. + + + The authorizer action code. + + + The first authorizer argument. + + + The second authorizer argument. + + + The database name, if applicable. + + + The name of the inner-most trigger or view that is responsible for + the access attempt or a null value if this access attempt is directly + from top-level SQL code. + + + The authorizer return code. + + + + + Whenever an update event is triggered on a connection, this enum will indicate + exactly what type of operation is being performed. + + + + + A row is being deleted from the given database and table + + + + + A row is being inserted into the table. + + + + + A row is being updated in the table. + + + + + Passed during an Update callback, these event arguments detail the type of update operation being performed + on the given connection. + + + + + The name of the database being updated (usually "main" but can be any attached or temporary database) + + + + + The name of the table being updated + + + + + The type of update being performed (insert/update/delete) + + + + + The RowId affected by this update. + + + + + Event arguments raised when a transaction is being committed + + + + + Set to true to abort the transaction and trigger a rollback + + + + + Passed during an Trace callback, these event arguments contain the UTF-8 rendering of the SQL statement text + + + + + SQL statement text as the statement first begins executing + + + + + This interface represents a custom connection pool implementation + usable by System.Data.SQLite. + + + + + Counts the number of pool entries matching the specified file name. + + + The file name to match or null to match all files. + + + The pool entry counts for each matching file. + + + The total number of connections successfully opened from any pool. + + + The total number of connections successfully closed from any pool. + + + The total number of pool entries for all matching files. + + + + + Disposes of all pooled connections associated with the specified + database file name. + + + The database file name. + + + + + Disposes of all pooled connections. + + + + + Adds a connection to the pool of those associated with the + specified database file name. + + + The database file name. + + + The database connection handle. + + + The connection pool version at the point the database connection + handle was received from the connection pool. This is also the + connection pool version that the database connection handle was + created under. + + + + + Removes a connection from the pool of those associated with the + specified database file name with the intent of using it to + interact with the database. + + + The database file name. + + + The new maximum size of the connection pool for the specified + database file name. + + + The connection pool version associated with the returned database + connection handle, if any. + + + The database connection handle associated with the specified + database file name or null if it cannot be obtained. + + + + + This default method implementations in this class should not be used by + applications that make use of COM (either directly or indirectly) due + to possible deadlocks that can occur during finalization of some COM + objects. + + + + + This field is used to synchronize access to the private static data + in this class. + + + + + When this field is non-null, it will be used to provide the + implementation of all the connection pool methods; otherwise, + the default method implementations will be used. + + + + + The dictionary of connection pools, based on the normalized file + name of the SQLite database. + + + + + The default version number new pools will get. + + + + + The number of connections successfully opened from any pool. + This value is incremented by the Remove method. + + + + + The number of connections successfully closed from any pool. + This value is incremented by the Add method. + + + + + Counts the number of pool entries matching the specified file name. + + + The file name to match or null to match all files. + + + The pool entry counts for each matching file. + + + The total number of connections successfully opened from any pool. + + + The total number of connections successfully closed from any pool. + + + The total number of pool entries for all matching files. + + + + + Disposes of all pooled connections associated with the specified + database file name. + + + The database file name. + + + + + Disposes of all pooled connections. + + + + + Adds a connection to the pool of those associated with the + specified database file name. + + + The database file name. + + + The database connection handle. + + + The connection pool version at the point the database connection + handle was received from the connection pool. This is also the + connection pool version that the database connection handle was + created under. + + + + + Removes a connection from the pool of those associated with the + specified database file name with the intent of using it to + interact with the database. + + + The database file name. + + + The new maximum size of the connection pool for the specified + database file name. + + + The connection pool version associated with the returned database + connection handle, if any. + + + The database connection handle associated with the specified + database file name or null if it cannot be obtained. + + + + + This method is used to obtain a reference to the custom connection + pool implementation currently in use, if any. + + + The custom connection pool implementation or null if the default + connection pool implementation should be used. + + + + + This method is used to set the reference to the custom connection + pool implementation to use, if any. + + + The custom connection pool implementation to use or null if the + default connection pool implementation should be used. + + + + + We do not have to thread-lock anything in this function, because it + is only called by other functions above which already take the lock. + + + The pool queue to resize. + + + If a function intends to add to the pool, this is true, which + forces the resize to take one more than it needs from the pool. + + + + + Keeps track of connections made on a specified file. The PoolVersion + dictates whether old objects get returned to the pool or discarded + when no longer in use. + + + + + The queue of weak references to the actual database connection + handles. + + + + + This pool version associated with the database connection + handles in this pool queue. + + + + + The maximum size of this pool queue. + + + + + Constructs a connection pool queue using the specified version + and maximum size. Normally, all the database connection + handles in this pool are associated with a single database file + name. + + + The initial pool version for this connection pool queue. + + + The initial maximum size for this connection pool queue. + + + + + SQLite implementation of DbConnectionStringBuilder. + + + + + Properties of this class + + + + + Constructs a new instance of the class + + + Default constructor + + + + + Constructs a new instance of the class using the specified connection string. + + The connection string to parse + + + + Private initializer, which assigns the connection string and resets the builder + + The connection string to assign + + + + Helper function for retrieving values from the connectionstring + + The keyword to retrieve settings for + The resulting parameter value + Returns true if the value was found and returned + + + + Fallback method for MONO, which doesn't implement DbConnectionStringBuilder.GetProperties() + + The hashtable to fill with property descriptors + + + + Gets/Sets the default version of the SQLite engine to instantiate. Currently the only valid value is 3, indicating version 3 of the sqlite library. + + + + + Gets/Sets the synchronization mode (file flushing) of the connection string. Default is "Normal". + + + + + Gets/Sets the encoding for the connection string. The default is "False" which indicates UTF-8 encoding. + + + + + Gets/Sets whether or not to use connection pooling. The default is "False" + + + + + Gets/Sets whethor not to store GUID's in binary format. The default is True + which saves space in the database. + + + + + Gets/Sets the filename to open on the connection string. + + + + + An alternate to the data source property + + + + + An alternate to the data source property that uses the SQLite URI syntax. + + + + + Gets/sets the default command timeout for newly-created commands. This is especially useful for + commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. + + + + + Determines whether or not the connection will automatically participate + in the current distributed transaction (if one exists) + + + + + If set to true, will throw an exception if the database specified in the connection + string does not exist. If false, the database will be created automatically. + + + + + If enabled, uses the legacy 3.xx format for maximum compatibility, but results in larger + database sizes. + + + + + When enabled, the database will be opened for read-only access and writing will be disabled. + + + + + Gets/sets the database encryption password + + + + + Gets/sets the database encryption hexadecimal password + + + + + Gets/Sets the page size for the connection. + + + + + Gets/Sets the maximum number of pages the database may hold + + + + + Gets/Sets the cache size for the connection. + + + + + Gets/Sets the DateTime format for the connection. + + + + + Gets/Sets the DateTime kind for the connection. + + + + + Gets/sets the DateTime format string used for formatting + and parsing purposes. + + + + + Gets/Sets the placeholder base schema name used for + .NET Framework compatibility purposes. + + + + + Determines how SQLite handles the transaction journal file. + + + + + Sets the default isolation level for transactions on the connection. + + + + + If enabled, use foreign key constraints + + + + + Gets/Sets the extra behavioral flags. + + + + + If enabled, apply the default connection settings to opened databases. + + + + + If enabled, attempt to resolve the provided data source file name to a + full path before opening. + + + + + SQLite has very limited types, and is inherently text-based. The first 5 types below represent the sum of all types SQLite + understands. The DateTime extension to the spec is for internal use only. + + + + + Not used + + + + + All integers in SQLite default to Int64 + + + + + All floating point numbers in SQLite default to double + + + + + The default data type of SQLite is text + + + + + Typically blob types are only seen when returned from a function + + + + + Null types can be returned from functions + + + + + Used internally by this provider + + + + + Used internally by this provider + + + + + These are the event types associated with the + + delegate (and its corresponding event) and the + class. + + + + + Not used. + + + + + Not used. + + + + + The connection is being opened. + + + + + The connection string has been parsed. + + + + + The connection was opened. + + + + + The method was called on the + connection. + + + + + A transaction was created using the connection. + + + + + The connection was enlisted into a transaction. + + + + + A command was created using the connection. + + + + + A data reader was created using the connection. + + + + + An instance of a derived class has + been created to wrap a native resource. + + + + + The connection is being closed. + + + + + The connection was closed. + + + + + This implementation of SQLite for ADO.NET can process date/time fields in + databases in one of six formats. + + + ISO8601 format is more compatible, readable, fully-processable, but less + accurate as it does not provide time down to fractions of a second. + JulianDay is the numeric format the SQLite uses internally and is arguably + the most compatible with 3rd party tools. It is not readable as text + without post-processing. Ticks less compatible with 3rd party tools that + query the database, and renders the DateTime field unreadable as text + without post-processing. UnixEpoch is more compatible with Unix systems. + InvariantCulture allows the configured format for the invariant culture + format to be used and is human readable. CurrentCulture allows the + configured format for the current culture to be used and is also human + readable. + + The preferred order of choosing a DateTime format is JulianDay, ISO8601, + and then Ticks. Ticks is mainly present for legacy code support. + + + + + Use the value of DateTime.Ticks. This value is not recommended and is not well supported with LINQ. + + + + + Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC DateTime values and + "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values). + + + + + The interval of time in days and fractions of a day since January 1, 4713 BC. + + + + + The whole number of seconds since the Unix epoch (January 1, 1970). + + + + + Any culture-independent string value that the .NET Framework can interpret as a valid DateTime. + + + + + Any string value that the .NET Framework can interpret as a valid DateTime using the current culture. + + + + + The default format for this provider. + + + + + This enum determines how SQLite treats its journal file. + + + By default SQLite will create and delete the journal file when needed during a transaction. + However, for some computers running certain filesystem monitoring tools, the rapid + creation and deletion of the journal file can cause those programs to fail, or to interfere with SQLite. + + If a program or virus scanner is interfering with SQLite's journal file, you may receive errors like "unable to open database file" + when starting a transaction. If this is happening, you may want to change the default journal mode to Persist. + + + + + The default mode, this causes SQLite to use the existing journaling mode for the database. + + + + + SQLite will create and destroy the journal file as-needed. + + + + + When this is set, SQLite will keep the journal file even after a transaction has completed. It's contents will be erased, + and the journal re-used as often as needed. If it is deleted, it will be recreated the next time it is needed. + + + + + This option disables the rollback journal entirely. Interrupted transactions or a program crash can cause database + corruption in this mode! + + + + + SQLite will truncate the journal file to zero-length instead of deleting it. + + + + + SQLite will store the journal in volatile RAM. This saves disk I/O but at the expense of database safety and integrity. + If the application using SQLite crashes in the middle of a transaction when the MEMORY journaling mode is set, then the + database file will very likely go corrupt. + + + + + SQLite uses a write-ahead log instead of a rollback journal to implement transactions. The WAL journaling mode is persistent; + after being set it stays in effect across multiple database connections and after closing and reopening the database. A database + in WAL journaling mode can only be accessed by SQLite version 3.7.0 or later. + + + + + Possible values for the "synchronous" database setting. This setting determines + how often the database engine calls the xSync method of the VFS. + + + + + Use the default "synchronous" database setting. Currently, this should be + the same as using the FULL mode. + + + + + The database engine continues without syncing as soon as it has handed + data off to the operating system. If the application running SQLite + crashes, the data will be safe, but the database might become corrupted + if the operating system crashes or the computer loses power before that + data has been written to the disk surface. + + + + + The database engine will still sync at the most critical moments, but + less often than in FULL mode. There is a very small (though non-zero) + chance that a power failure at just the wrong time could corrupt the + database in NORMAL mode. + + + + + The database engine will use the xSync method of the VFS to ensure that + all content is safely written to the disk surface prior to continuing. + This ensures that an operating system crash or power failure will not + corrupt the database. FULL synchronous is very safe, but it is also + slower. + + + + + The requested command execution type. This controls which method of the + object will be called. + + + + + Do nothing. No method will be called. + + + + + The command is not expected to return a result -OR- the result is not + needed. The or + method + will be called. + + + + + The command is expected to return a scalar result -OR- the result should + be limited to a scalar result. The + or method will + be called. + + + + + The command is expected to return result. + The or + method will + be called. + + + + + Use the default command execution type. Using this value is the same + as using the value. + + + + + The action code responsible for the current call into the authorizer. + + + + + No action is being performed. This value should not be used from + external code. + + + + + No longer used. + + + + + An index will be created. The action-specific arguments are the + index name and the table name. + + + + + + A table will be created. The action-specific arguments are the + table name and a null value. + + + + + A temporary index will be created. The action-specific arguments + are the index name and the table name. + + + + + A temporary table will be created. The action-specific arguments + are the table name and a null value. + + + + + A temporary trigger will be created. The action-specific arguments + are the trigger name and the table name. + + + + + A temporary view will be created. The action-specific arguments are + the view name and a null value. + + + + + A trigger will be created. The action-specific arguments are the + trigger name and the table name. + + + + + A view will be created. The action-specific arguments are the view + name and a null value. + + + + + A DELETE statement will be executed. The action-specific arguments + are the table name and a null value. + + + + + An index will be dropped. The action-specific arguments are the + index name and the table name. + + + + + A table will be dropped. The action-specific arguments are the tables + name and a null value. + + + + + A temporary index will be dropped. The action-specific arguments are + the index name and the table name. + + + + + A temporary table will be dropped. The action-specific arguments are + the table name and a null value. + + + + + A temporary trigger will be dropped. The action-specific arguments + are the trigger name and the table name. + + + + + A temporary view will be dropped. The action-specific arguments are + the view name and a null value. + + + + + A trigger will be dropped. The action-specific arguments are the + trigger name and the table name. + + + + + A view will be dropped. The action-specific arguments are the view + name and a null value. + + + + + An INSERT statement will be executed. The action-specific arguments + are the table name and a null value. + + + + + A PRAGMA statement will be executed. The action-specific arguments + are the name of the PRAGMA and the new value or a null value. + + + + + A table column will be read. The action-specific arguments are the + table name and the column name. + + + + + A SELECT statement will be executed. The action-specific arguments + are both null values. + + + + + A transaction will be started, committed, or rolled back. The + action-specific arguments are the name of the operation (BEGIN, + COMMIT, or ROLLBACK) and a null value. + + + + + An UPDATE statement will be executed. The action-specific arguments + are the table name and the column name. + + + + + A database will be attached to the connection. The action-specific + arguments are the database file name and a null value. + + + + + A database will be detached from the connection. The action-specific + arguments are the database name and a null value. + + + + + The schema of a table will be altered. The action-specific arguments + are the database name and the table name. + + + + + An index will be deleted and then recreated. The action-specific + arguments are the index name and a null value. + + + + + A table will be analyzed to gathers statistics about it. The + action-specific arguments are the table name and a null value. + + + + + A virtual table will be created. The action-specific arguments are + the table name and the module name. + + + + + A virtual table will be dropped. The action-specific arguments are + the table name and the module name. + + + + + A SQL function will be called. The action-specific arguments are a + null value and the function name. + + + + + A savepoint will be created, released, or rolled back. The + action-specific arguments are the name of the operation (BEGIN, + RELEASE, or ROLLBACK) and the savepoint name. + + + + + The return code for the current call into the authorizer. + + + + + The action will be allowed. + + + + + The overall action will be disallowed and an error message will be + returned from the query preparation method. + + + + + The specific action will be disallowed; however, the overall action + will continue. The exact effects of this return code vary depending + on the specific action, please refer to the SQLite core library + documentation for futher details. + + + + + Class used internally to determine the datatype of a column in a resultset + + + + + The DbType of the column, or DbType.Object if it cannot be determined + + + + + The affinity of a column, used for expressions or when Type is DbType.Object + + + + + SQLite implementation of DbDataAdapter. + + + + + This class is just a shell around the DbDataAdapter. Nothing from + DbDataAdapter is overridden here, just a few constructors are defined. + + + Default constructor. + + + + + Constructs a data adapter using the specified select command. + + + The select command to associate with the adapter. + + + + + Constructs a data adapter with the supplied select command text and + associated with the specified connection. + + + The select command text to associate with the data adapter. + + + The connection to associate with the select command. + + + + + Constructs a data adapter with the specified select command text, + and using the specified database connection string. + + + The select command text to use to construct a select command. + + + A connection string suitable for passing to a new SQLiteConnection, + which is associated with the select command. + + + + + Constructs a data adapter with the specified select command text, + and using the specified database connection string. + + + The select command text to use to construct a select command. + + + A connection string suitable for passing to a new SQLiteConnection, + which is associated with the select command. + + + Non-zero to parse the connection string using the built-in (i.e. + framework provided) parser when opening the connection. + + + + + Raised by the underlying DbDataAdapter when a row is being updated + + The event's specifics + + + + Raised by DbDataAdapter after a row is updated + + The event's specifics + + + + Row updating event handler + + + + + Row updated event handler + + + + + Gets/sets the select command for this DataAdapter + + + + + Gets/sets the insert command for this DataAdapter + + + + + Gets/sets the update command for this DataAdapter + + + + + Gets/sets the delete command for this DataAdapter + + + + + SQLite implementation of DbDataReader. + + + + + Underlying command this reader is attached to + + + + + Index of the current statement in the command being processed + + + + + Current statement being Read() + + + + + State of the current statement being processed. + -1 = First Step() executed, so the first Read() will be ignored + 0 = Actively reading + 1 = Finished reading + 2 = Non-row-returning statement, no records + + + + + Number of records affected by the insert/update statements executed on the command + + + + + Count of fields (columns) in the row-returning statement currently being processed + + + + + Maps the field (column) names to their corresponding indexes within the results. + + + + + Datatypes of active fields (columns) in the current statement, used for type-restricting data + + + + + The behavior of the datareader + + + + + If set, then dispose of the command object when the reader is finished + + + + + If set, then raise an exception when the object is accessed after being disposed. + + + + + An array of rowid's for the active statement if CommandBehavior.KeyInfo is specified + + + + + Matches the version of the connection. + + + + + The "stub" (i.e. placeholder) base schema name to use when returning + column schema information. Matches the base schema name used by the + associated connection. + + + + + Internal constructor, initializes the datareader and sets up to begin executing statements + + The SQLiteCommand this data reader is for + The expected behavior of the data reader + + + + Dispose of all resources used by this datareader. + + + + + + Closes the datareader, potentially closing the connection as well if CommandBehavior.CloseConnection was specified. + + + + + Throw an error if the datareader is closed + + + + + Throw an error if a row is not loaded + + + + + Enumerator support + + Returns a DbEnumerator object. + + + + SQLite is inherently un-typed. All datatypes in SQLite are natively strings. The definition of the columns of a table + and the affinity of returned types are all we have to go on to type-restrict data in the reader. + + This function attempts to verify that the type of data being requested of a column matches the datatype of the column. In + the case of columns that are not backed into a table definition, we attempt to match up the affinity of a column (int, double, string or blob) + to a set of known types that closely match that affinity. It's not an exact science, but its the best we can do. + + + This function throws an InvalidTypeCast() exception if the requested type doesn't match the column's definition or affinity. + + The index of the column to type-check + The type we want to get out of the column + + + + Retrieves the column as a boolean value + + The index of the column to retrieve + bool + + + + Retrieves the column as a single byte value + + The index of the column to retrieve + byte + + + + Retrieves a column as an array of bytes (blob) + + The index of the column to retrieve + The zero-based index of where to begin reading the data + The buffer to write the bytes into + The zero-based index of where to begin writing into the array + The number of bytes to retrieve + The actual number of bytes written into the array + + To determine the number of bytes in the column, pass a null value for the buffer. The total length will be returned. + + + + + Returns the column as a single character + + The index of the column to retrieve + char + + + + Retrieves a column as an array of chars (blob) + + The index of the column to retrieve + The zero-based index of where to begin reading the data + The buffer to write the characters into + The zero-based index of where to begin writing into the array + The number of bytes to retrieve + The actual number of characters written into the array + + To determine the number of characters in the column, pass a null value for the buffer. The total length will be returned. + + + + + Retrieves the name of the back-end datatype of the column + + The index of the column to retrieve + string + + + + Retrieve the column as a date/time value + + The index of the column to retrieve + DateTime + + + + Retrieve the column as a decimal value + + The index of the column to retrieve + decimal + + + + Returns the column as a double + + The index of the column to retrieve + double + + + + Returns the .NET type of a given column + + The index of the column to retrieve + Type + + + + Returns a column as a float value + + The index of the column to retrieve + float + + + + Returns the column as a Guid + + The index of the column to retrieve + Guid + + + + Returns the column as a short + + The index of the column to retrieve + Int16 + + + + Retrieves the column as an int + + The index of the column to retrieve + Int32 + + + + Retrieves the column as a long + + The index of the column to retrieve + Int64 + + + + Retrieves the name of the column + + The index of the column to retrieve + string + + + + Retrieves the i of a column, given its name + + The name of the column to retrieve + The int i of the column + + + + Schema information in SQLite is difficult to map into .NET conventions, so a lot of work must be done + to gather the necessary information so it can be represented in an ADO.NET manner. + + Returns a DataTable containing the schema information for the active SELECT statement being processed. + + + + Retrieves the column as a string + + The index of the column to retrieve + string + + + + Retrieves the column as an object corresponding to the underlying datatype of the column + + The index of the column to retrieve + object + + + + Retreives the values of multiple columns, up to the size of the supplied array + + The array to fill with values from the columns in the current resultset + The number of columns retrieved + + + + Returns a collection containing all the column names and values for the + current row of data in the current resultset, if any. If there is no + current row or no current resultset, an exception may be thrown. + + + The collection containing the column name and value information for the + current row of data in the current resultset or null if this information + cannot be obtained. + + + + + Returns True if the specified column is null + + The index of the column to retrieve + True or False + + + + Moves to the next resultset in multiple row-returning SQL command. + + True if the command was successful and a new resultset is available, False otherwise. + + + + This method attempts to query the flags associated with the database + connection in use. If the database connection is disposed, the default + flags will be returned. + + + The data reader containing the databse connection to query the flags from. + + + The connection flags value. + + + + + Retrieves the SQLiteType for a given column, and caches it to avoid repetetive interop calls. + + The index of the column to retrieve + A SQLiteType structure + + + + Reads the next row from the resultset + + True if a new row was successfully loaded and is ready for processing + + + + Not implemented. Returns 0 + + + + + Returns the number of columns in the current resultset + + + + + Returns the number of visible fields in the current resultset + + + + + Returns True if the resultset has rows that can be fetched + + + + + Returns True if the data reader is closed + + + + + Retrieve the count of records affected by an update/insert command. Only valid once the data reader is closed! + + + + + Indexer to retrieve data from a column given its name + + The name of the column to retrieve data for + The value contained in the column + + + + Indexer to retrieve data from a column given its i + + The index of the column to retrieve + The value contained in the column + + + + SQLite exception class. + + + + + Private constructor for use with serialization. + + + Holds the serialized object data about the exception being thrown. + + + Contains contextual information about the source or destination. + + + + + Public constructor for generating a SQLite exception given the error + code and message. + + + The SQLite return code to report. + + + Message text to go along with the return code message text. + + + + + Public constructor that uses the base class constructor for the error + message. + + Error message text. + + + + Public constructor that uses the default base class constructor. + + + + + Public constructor that uses the base class constructor for the error + message and inner exception. + + Error message text. + The original (inner) exception. + + + + Adds extra information to the serialized object data specific to this + class type. This is only used for serialization. + + + Holds the serialized object data about the exception being thrown. + + + Contains contextual information about the source or destination. + + + + + Returns the error message for the specified SQLite return code. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns the composite error message based on the SQLite return code + and the optional detailed error message. + + The SQLite return code. + Optional detailed error message. + Error message text for the return code. + + + + Gets the associated SQLite result code for this exception as a + . This property returns the same + underlying value as the property. + + + + + Gets the associated SQLite return code for this exception as an + . For desktop versions of the .NET Framework, + this property overrides the property of the same name within the + + class. This property returns the same underlying value as the + property. + + + + + SQLite error codes. Actually, this enumeration represents a return code, + which may also indicate success in one of several ways (e.g. SQLITE_OK, + SQLITE_ROW, and SQLITE_DONE). Therefore, the name of this enumeration is + something of a misnomer. + + + + + The error code is unknown. This error code + is only used by the managed wrapper itself. + + + + + Successful result + + + + + SQL error or missing database + + + + + Internal logic error in SQLite + + + + + Access permission denied + + + + + Callback routine requested an abort + + + + + The database file is locked + + + + + A table in the database is locked + + + + + A malloc() failed + + + + + Attempt to write a readonly database + + + + + Operation terminated by sqlite3_interrupt() + + + + + Some kind of disk I/O error occurred + + + + + The database disk image is malformed + + + + + Unknown opcode in sqlite3_file_control() + + + + + Insertion failed because database is full + + + + + Unable to open the database file + + + + + Database lock protocol error + + + + + Database is empty + + + + + The database schema changed + + + + + String or BLOB exceeds size limit + + + + + Abort due to constraint violation + + + + + Data type mismatch + + + + + Library used incorrectly + + + + + Uses OS features not supported on host + + + + + Authorization denied + + + + + Auxiliary database format error + + + + + 2nd parameter to sqlite3_bind out of range + + + + + File opened that is not a database file + + + + + Notifications from sqlite3_log() + + + + + Warnings from sqlite3_log() + + + + + sqlite3_step() has another row ready + + + + + sqlite3_step() has finished executing + + + + + Used to mask off extended result codes + + + + + SQLite implementation of . + + + SQLite implementation of . + + + + + Constructs a new instance. + + + + + Static instance member which returns an instanced class. + + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Will provide a object in .NET 3.5. + + The class or interface type to query for. + + + + + This event is raised whenever SQLite raises a logging event. + Note that this should be set as one of the first things in the + application. This event is provided for backward compatibility only. + New code should use the class instead. + + + + + This abstract class is designed to handle user-defined functions easily. An instance of the derived class is made for each + connection to the database. + + + Although there is one instance of a class derived from SQLiteFunction per database connection, the derived class has no access + to the underlying connection. This is necessary to deter implementers from thinking it would be a good idea to make database + calls during processing. + + It is important to distinguish between a per-connection instance, and a per-SQL statement context. One instance of this class + services all SQL statements being stepped through on that connection, and there can be many. One should never store per-statement + information in member variables of user-defined function classes. + + For aggregate functions, always create and store your per-statement data in the contextData object on the 1st step. This data will + be automatically freed for you (and Dispose() called if the item supports IDisposable) when the statement completes. + + + + + The base connection this function is attached to + + + + + Internal array used to keep track of aggregate function context data + + + + + The connection flags associated with this object (this should be the + same value as the flags associated with the parent connection object). + + + + + Holds a reference to the callback function for user functions + + + + + Holds a reference to the callbakc function for stepping in an aggregate function + + + + + Holds a reference to the callback function for finalizing an aggregate function + + + + + Holds a reference to the callback function for collation sequences + + + + + Current context of the current callback. Only valid during a callback + + + + + This static list contains all the user-defined functions declared using the proper attributes. + + + + + Internal constructor, initializes the function's internal variables. + + + + + Constructs an instance of this class using the specified data-type + conversion parameters. + + + The DateTime format to be used when converting string values to a + DateTime and binding DateTime parameters. + + + The to be used when creating DateTime + values. + + + The format string to be used when parsing and formatting DateTime + values. + + + Non-zero to create a UTF-16 data-type conversion context; otherwise, + a UTF-8 data-type conversion context will be created. + + + + + Disposes of any active contextData variables that were not automatically cleaned up. Sometimes this can happen if + someone closes the connection while a DataReader is open. + + + + + Placeholder for a user-defined disposal routine + + True if the object is being disposed explicitly + + + + Scalar functions override this method to do their magic. + + + Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available + to force them into a certain type. Therefore the only types you will ever see as parameters are + DBNull.Value, Int64, Double, String or byte[] array. + + The arguments for the command to process + You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or + you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, + just return it! + + + + Aggregate functions override this method to do their magic. + + + Typically you'll be updating whatever you've placed in the contextData field and returning as quickly as possible. + + The arguments for the command to process + The 1-based step number. This is incrememted each time the step method is called. + A placeholder for implementers to store contextual data pertaining to the current context. + + + + Aggregate functions override this method to finish their aggregate processing. + + + If you implemented your aggregate function properly, + you've been recording and keeping track of your data in the contextData object provided, and now at this stage you should have + all the information you need in there to figure out what to return. + NOTE: It is possible to arrive here without receiving a previous call to Step(), in which case the contextData will + be null. This can happen when no rows were returned. You can either return null, or 0 or some other custom return value + if that is the case. + + Your own assigned contextData, provided for you so you can return your final results. + You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or + you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, + just return it! + + + + + User-defined collation sequences override this method to provide a custom string sorting algorithm. + + The first string to compare + The second strnig to compare + 1 if param1 is greater than param2, 0 if they are equal, or -1 if param1 is less than param2 + + + + Converts an IntPtr array of context arguments to an object array containing the resolved parameters the pointers point to. + + + Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available + to force them into a certain type. Therefore the only types you will ever see as parameters are + DBNull.Value, Int64, Double, String or byte[] array. + + The number of arguments + A pointer to the array of arguments + An object array of the arguments once they've been converted to .NET values + + + + Takes the return value from Invoke() and Final() and figures out how to return it to SQLite's context. + + The context the return value applies to + The parameter to return to SQLite + + + + Internal scalar callback function, which wraps the raw context pointer and calls the virtual Invoke() method. + WARNING: Must not throw exceptions. + + A raw context pointer + Number of arguments passed in + A pointer to the array of arguments + + + + Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function. + WARNING: Must not throw exceptions. + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. Returns 0 if an exception is caught. + + + + Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function. + WARNING: Must not throw exceptions. + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. Returns 0 if an exception is caught. + + + + The internal aggregate Step function callback, which wraps the raw context pointer and calls the virtual Step() method. + WARNING: Must not throw exceptions. + + + This function takes care of doing the lookups and getting the important information put together to call the Step() function. + That includes pulling out the user's contextData and updating it after the call is made. We use a sorted list for this so + binary searches can be done to find the data. + + A raw context pointer + Number of arguments passed in + A pointer to the array of arguments + + + + An internal aggregate Final function callback, which wraps the context pointer and calls the virtual Final() method. + WARNING: Must not throw exceptions. + + A raw context pointer + + + + Using reflection, enumerate all assemblies in the current appdomain looking for classes that + have a SQLiteFunctionAttribute attribute, and registering them accordingly. + + + + + Manual method of registering a function. The type must still have the SQLiteFunctionAttributes in order to work + properly, but this is a workaround for the Compact Framework where enumerating assemblies is not currently supported. + + The type of the function to register + + + + Called by SQLiteBase derived classes, this function binds all user-defined functions to a connection. + It is done this way so that all user-defined functions will access the database using the same encoding scheme + as the connection (UTF-8 or UTF-16). + + + The wrapper functions that interop with SQLite will create a unique cookie value, which internally is a pointer to + all the wrapped callback functions. The interop function uses it to map CDecl callbacks to StdCall callbacks. + + The base object on which the functions are to bind + The flags associated with the parent connection object + Returns a logical list of functions which the connection should retain until it is closed. + + + + This function binds a user-defined functions to a connection. + + + The object instance associated with the + that the function should be bound to. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + + + + Returns a reference to the underlying connection's SQLiteConvert class, which can be used to convert + strings and DateTime's into the current connection's encoding schema. + + + + + Extends SQLiteFunction and allows an inherited class to obtain the collating sequence associated with a function call. + + + User-defined functions can call the GetCollationSequence() method in this class and use it to compare strings and char arrays. + + + + + Obtains the collating sequence in effect for the given function. + + + + + + The type of user-defined function to declare + + + + + Scalar functions are designed to be called and return a result immediately. Examples include ABS(), Upper(), Lower(), etc. + + + + + Aggregate functions are designed to accumulate data until the end of a call and then return a result gleaned from the accumulated data. + Examples include SUM(), COUNT(), AVG(), etc. + + + + + Collation sequences are used to sort textual data in a custom manner, and appear in an ORDER BY clause. Typically text in an ORDER BY is + sorted using a straight case-insensitive comparison function. Custom collating sequences can be used to alter the behavior of text sorting + in a user-defined manner. + + + + + An internal callback delegate declaration. + + Raw native context pointer for the user function. + Total number of arguments to the user function. + Raw native pointer to the array of raw native argument pointers. + + + + An internal final callback delegate declaration. + + Raw context pointer for the user function + + + + Internal callback delegate for implementing collation sequences + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. + + + + The type of collating sequence + + + + + The built-in BINARY collating sequence + + + + + The built-in NOCASE collating sequence + + + + + The built-in REVERSE collating sequence + + + + + A custom user-defined collating sequence + + + + + The encoding type the collation sequence uses + + + + + The collation sequence is UTF8 + + + + + The collation sequence is UTF16 little-endian + + + + + The collation sequence is UTF16 big-endian + + + + + A struct describing the collating sequence a function is executing in + + + + + The name of the collating sequence + + + + + The type of collating sequence + + + + + The text encoding of the collation sequence + + + + + Context of the function that requested the collating sequence + + + + + Calls the base collating sequence to compare two strings + + The first string to compare + The second string to compare + -1 if s1 is less than s2, 0 if s1 is equal to s2, and 1 if s1 is greater than s2 + + + + Calls the base collating sequence to compare two character arrays + + The first array to compare + The second array to compare + -1 if c1 is less than c2, 0 if c1 is equal to c2, and 1 if c1 is greater than c2 + + + + A simple custom attribute to enable us to easily find user-defined functions in + the loaded assemblies and initialize them in SQLite as connections are made. + + + + + Default constructor, initializes the internal variables for the function. + + + + + Constructs an instance of this class. + + + The name of the function, as seen by the SQLite core library. + + + The number of arguments that the function will accept. + + + The type of function being declared. This will either be Scalar, + Aggregate, or Collation. + + + + + The function's name as it will be used in SQLite command text. + + + + + The number of arguments this function expects. -1 if the number of arguments is variable. + + + + + The type of function this implementation will be. + + + + + The object instance that describes the class + containing the implementation for the associated function. + + + + + This class provides key info for a given SQLite statement. + + Providing key information for a given statement is non-trivial :( + + + + + + This function does all the nasty work at determining what keys need to be returned for + a given statement. + + + + + + + + Make sure all the subqueries are open and ready and sync'd with the current rowid + of the table they're supporting + + + + + Release any readers on any subqueries + + + + + Append all the columns we've added to the original query to the schema + + + + + + How many additional columns of keyinfo we're holding + + + + + Used to support CommandBehavior.KeyInfo + + + + + A single sub-query for a given table/database. + + + + + Event data for logging event handlers. + + + + + The error code. The type of this object value should be + or . + + + + + SQL statement text as the statement first begins executing + + + + + Extra data associated with this event, if any. + + + + + Constructs the object. + + Should be null. + + The error code. The type of this object value should be + or . + + The error message, if any. + The extra data, if any. + + + + Raised when a log event occurs. + + The current connection + Event arguments of the trace + + + + Manages the SQLite custom logging functionality and the associated + callback for the whole process. + + + + + Object used to synchronize access to the static instance data + for this class. + + + + + Member variable to store the AppDomain.DomainUnload event handler. + + + + + The default log event handler. + + + + + The log callback passed to native SQLite engine. This must live + as long as the SQLite library has a pointer to it. + + + + + The base SQLite object to interop with. + + + + + This will be non-zero if logging is currently enabled. + + + + + Initializes the SQLite logging facilities. + + + + + Handles the AppDomain being unloaded. + + Should be null. + The data associated with this event. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The SQLite error code. + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The integer error code. + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + + The error code. The type of this object value should be + System.Int32 or SQLiteErrorCode. + + The message to be logged. + + + + Creates and initializes the default log event handler. + + + + + Adds the default log event handler to the list of handlers. + + + + + Removes the default log event handler from the list of handlers. + + + + + Internal proxy function that calls any registered application log + event handlers. + + WARNING: This method is used more-or-less directly by native code, + do not modify its type signature. + + + The extra data associated with this message, if any. + + + The error code associated with this message. + + + The message string to be logged. + + + + + Default logger. Currently, uses the Trace class (i.e. sends events + to the current trace listeners, if any). + + Should be null. + The data associated with this event. + + + + Member variable to store the application log handler to call. + + + + + This event is raised whenever SQLite raises a logging event. + Note that this should be set as one of the first things in the + application. + + + + + If this property is true, logging is enabled; otherwise, logging is + disabled. When logging is disabled, no logging events will fire. + + + + + MetaDataCollections specific to SQLite + + + + + Returns a list of databases attached to the connection + + + + + Returns column information for the specified table + + + + + Returns index information for the optionally-specified table + + + + + Returns base columns for the given index + + + + + Returns the tables in the given catalog + + + + + Returns user-defined views in the given catalog + + + + + Returns underlying column information on the given view + + + + + Returns foreign key information for the given catalog + + + + + Returns the triggers on the database + + + + + SQLite implementation of DbParameter. + + + + + The data type of the parameter + + + + + The version information for mapping the parameter + + + + + The value of the data in the parameter + + + + + The source column for the parameter + + + + + The column name + + + + + The data size, unused by SQLite + + + + + Default constructor + + + + + Constructs a named parameter given the specified parameter name + + The parameter name + + + + Constructs a named parameter given the specified parameter name and initial value + + The parameter name + The initial value of the parameter + + + + Constructs a named parameter of the specified type + + The parameter name + The datatype of the parameter + + + + Constructs a named parameter of the specified type and source column reference + + The parameter name + The data type + The source column + + + + Constructs a named parameter of the specified type, source column and row version + + The parameter name + The data type + The source column + The row version information + + + + Constructs an unnamed parameter of the specified data type + + The datatype of the parameter + + + + Constructs an unnamed parameter of the specified data type and sets the initial value + + The datatype of the parameter + The initial value of the parameter + + + + Constructs an unnamed parameter of the specified data type and source column + + The datatype of the parameter + The source column + + + + Constructs an unnamed parameter of the specified data type, source column and row version + + The data type + The source column + The row version information + + + + Constructs a named parameter of the specified type and size + + The parameter name + The data type + The size of the parameter + + + + Constructs a named parameter of the specified type, size and source column + + The name of the parameter + The data type + The size of the parameter + The source column + + + + Constructs a named parameter of the specified type, size, source column and row version + + The name of the parameter + The data type + The size of the parameter + The source column + The row version information + + + + Constructs a named parameter of the specified type, size, source column and row version + + The name of the parameter + The data type + The size of the parameter + Only input parameters are supported in SQLite + Ignored + Ignored + Ignored + The source column + The row version information + The initial value to assign the parameter + + + + Constructs a named parameter, yet another flavor + + The name of the parameter + The data type + The size of the parameter + Only input parameters are supported in SQLite + Ignored + Ignored + The source column + The row version information + Whether or not this parameter is for comparing NULL's + The intial value to assign the parameter + + + + Constructs an unnamed parameter of the specified type and size + + The data type + The size of the parameter + + + + Constructs an unnamed parameter of the specified type, size, and source column + + The data type + The size of the parameter + The source column + + + + Constructs an unnamed parameter of the specified type, size, source column and row version + + The data type + The size of the parameter + The source column + The row version information + + + + Resets the DbType of the parameter so it can be inferred from the value + + + + + Clones a parameter + + A new, unassociated SQLiteParameter + + + + Whether or not the parameter can contain a null value + + + + + Returns the datatype of the parameter + + + + + Supports only input parameters + + + + + Returns the parameter name + + + + + Returns the size of the parameter + + + + + Gets/sets the source column + + + + + Used by DbCommandBuilder to determine the mapping for nullable fields + + + + + Gets and sets the row version + + + + + Gets and sets the parameter value. If no datatype was specified, the datatype will assume the type from the value given. + + + + + SQLite implementation of DbParameterCollection. + + + + + The underlying command to which this collection belongs + + + + + The internal array of parameters in this collection + + + + + Determines whether or not all parameters have been bound to their statement(s) + + + + + Initializes the collection + + The command to which the collection belongs + + + + Retrieves an enumerator for the collection + + An enumerator for the underlying array + + + + Adds a parameter to the collection + + The parameter name + The data type + The size of the value + The source column + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter name + The data type + The size of the value + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter name + The data type + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter to add + A zero-based index of where the parameter is located in the array + + + + Adds a parameter to the collection + + The parameter to add + A zero-based index of where the parameter is located in the array + + + + Adds a named/unnamed parameter and its value to the parameter collection. + + Name of the parameter, or null to indicate an unnamed parameter + The initial value of the parameter + Returns the SQLiteParameter object created during the call. + + + + Adds an array of parameters to the collection + + The array of parameters to add + + + + Adds an array of parameters to the collection + + The array of parameters to add + + + + Clears the array and resets the collection + + + + + Determines if the named parameter exists in the collection + + The name of the parameter to check + True if the parameter is in the collection + + + + Determines if the parameter exists in the collection + + The SQLiteParameter to check + True if the parameter is in the collection + + + + Not implemented + + + + + + + Retrieve a parameter by name from the collection + + The name of the parameter to fetch + A DbParameter object + + + + Retrieves a parameter by its index in the collection + + The index of the parameter to retrieve + A DbParameter object + + + + Returns the index of a parameter given its name + + The name of the parameter to find + -1 if not found, otherwise a zero-based index of the parameter + + + + Returns the index of a parameter + + The parameter to find + -1 if not found, otherwise a zero-based index of the parameter + + + + Inserts a parameter into the array at the specified location + + The zero-based index to insert the parameter at + The parameter to insert + + + + Removes a parameter from the collection + + The parameter to remove + + + + Removes a parameter from the collection given its name + + The name of the parameter to remove + + + + Removes a parameter from the collection given its index + + The zero-based parameter index to remove + + + + Re-assign the named parameter to a new parameter object + + The name of the parameter to replace + The new parameter + + + + Re-assign a parameter at the specified index + + The zero-based index of the parameter to replace + The new parameter + + + + Un-binds all parameters from their statements + + + + + This function attempts to map all parameters in the collection to all statements in a Command. + Since named parameters may span multiple statements, this function makes sure all statements are bound + to the same named parameter. Unnamed parameters are bound in sequence. + + + + + Returns false + + + + + Returns false + + + + + Returns false + + + + + Returns null + + + + + Returns a count of parameters in the collection + + + + + Overloaded to specialize the return value of the default indexer + + Name of the parameter to get/set + The specified named SQLite parameter + + + + Overloaded to specialize the return value of the default indexer + + The index of the parameter to get/set + The specified SQLite parameter + + + + Represents a single SQL statement in SQLite. + + + + + The underlying SQLite object this statement is bound to + + + + + The command text of this SQL statement + + + + + The actual statement pointer + + + + + An index from which unnamed parameters begin + + + + + Names of the parameters as SQLite understands them to be + + + + + Parameters for this statement + + + + + Command this statement belongs to (if any) + + + + + The flags associated with the parent connection object. + + + + + Initializes the statement and attempts to get all information about parameters in the statement + + The base SQLite object + The flags associated with the parent connection object + The statement + The command text for this statement + The previous command in a multi-statement command + + + + Disposes and finalizes the statement + + + + + If the underlying database connection is open, fetches the number of changed rows + resulting from the most recent query; otherwise, does nothing. + + + The number of changes when true is returned. + Undefined if false is returned. + + Non-zero if the number of changed rows was fetched. + + + + Called by SQLiteParameterCollection, this function determines if the specified parameter name belongs to + this statement, and if so, keeps a reference to the parameter so it can be bound later. + + The parameter name to map + The parameter to assign it + + + + Bind all parameters, making sure the caller didn't miss any + + + + + Attempts to convert an arbitrary object to the Boolean data type. + Null object values are converted to false. Throws a SQLiteException + upon failure. + + The object value to convert. + The format provider to use. + The converted boolean value. + + + + Perform the bind operation for an individual parameter + + The index of the parameter to bind + The parameter we're binding + + + + SQLite implementation of DbTransaction. + + + + + The connection to which this transaction is bound + + + + + Constructs the transaction object, binding it to the supplied connection + + The connection to open a transaction on + TRUE to defer the writelock, or FALSE to lock immediately + + + + Disposes the transaction. If it is currently active, any changes are rolled back. + + + + + Commits the current transaction. + + + + + Rolls back the active transaction. + + + + + Returns the underlying connection to which this transaction applies. + + + + + Forwards to the local Connection property + + + + + Gets the isolation level of the transaction. SQLite only supports Serializable transactions. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to <?xml version="1.0" standalone="yes"?> + <DocumentElement> + <DataTypes> + <TypeName>smallint</TypeName> + <ProviderDbType>10</ProviderDbType> + <ColumnSize>5</ColumnSize> + <DataType>System.Int16</DataType> + <CreateFormat>smallint</CreateFormat> + <IsAutoIncrementable>false</IsAutoIncrementable> + <IsCaseSensitive>false</IsCaseSensitive> + <IsFixedLength>true</IsFixedLength> + <IsFixedPrecisionScale>true</IsFixedPrecisionScale> + <IsLong>false</IsLong> + <IsNullable>true</ [rest of string was truncated]";. + + + + + Looks up a localized string similar to ALL,ALTER,AND,AS,AUTOINCREMENT,BETWEEN,BY,CASE,CHECK,COLLATE,COMMIT,CONSTRAINT,CREATE,CROSS,DEFAULT,DEFERRABLE,DELETE,DISTINCT,DROP,ELSE,ESCAPE,EXCEPT,FOREIGN,FROM,FULL,GROUP,HAVING,IN,INDEX,INNER,INSERT,INTERSECT,INTO,IS,ISNULL,JOIN,LEFT,LIMIT,NATURAL,NOT,NOTNULL,NULL,ON,OR,ORDER,OUTER,PRIMARY,REFERENCES,RIGHT,ROLLBACK,SELECT,SET,TABLE,THEN,TO,TRANSACTION,UNION,UNIQUE,UPDATE,USING,VALUES,WHEN,WHERE. + + + + + Looks up a localized string similar to <?xml version="1.0" encoding="utf-8" ?> + <DocumentElement> + <MetaDataCollections> + <CollectionName>MetaDataCollections</CollectionName> + <NumberOfRestrictions>0</NumberOfRestrictions> + <NumberOfIdentifierParts>0</NumberOfIdentifierParts> + </MetaDataCollections> + <MetaDataCollections> + <CollectionName>DataSourceInformation</CollectionName> + <NumberOfRestrictions>0</NumberOfRestrictions> + <NumberOfIdentifierParts>0</NumberOfIdentifierParts> + </MetaDataCollections> + <MetaDataC [rest of string was truncated]";. + + + + + The name of the environment variable containing the processor + architecture of the current process. + + + + + This is the P/Invoke method that wraps the native Win32 LoadLibrary + function. See the MSDN documentation for full details on what it + does. + + + The name of the executable library. + + + The native module handle upon success -OR- IntPtr.Zero on failure. + + + + + This lock is used to protect the static _SQLiteModule and + processorArchitecturePlatforms fields, below. + + + + + Stores the mappings between processor architecture names and platform + names. + + + + + The native module handle for the native SQLite library or the value + IntPtr.Zero. + + + + + For now, this method simply calls the Initialize method. + + + + + Attempts to initialize this class by pre-loading the native SQLite + library for the processor architecture of the current process. + + + + + Queries and returns the base directory of the current application + domain. + + + The base directory for the current application domain -OR- null if it + cannot be determined. + + + + + Determines if the dynamic link library file name requires a suffix + and adds it if necessary. + + + The original dynamic link library file name to inspect. + + + The dynamic link library file name, possibly modified to include an + extension. + + + + + Queries and returns the processor architecture of the current + process. + + + The processor architecture of the current process -OR- null if it + cannot be determined. + + + + + Given the processor architecture, returns the name of the platform. + + + The processor architecture to be translated to a platform name. + + + The platform name for the specified processor architecture -OR- null + if it cannot be determined. + + + + + Attempts to load the native SQLite library based on the specified + directory and processor architecture. + + + The base directory to use, null for default (the base directory of + the current application domain). This directory should contain the + processor architecture specific sub-directories. + + + The requested processor architecture, null for default (the + processor architecture of the current process). This caller should + almost always specify null for this parameter. + + + The native module handle as returned by LoadLibrary -OR- IntPtr.Zero + if the loading fails for any reason. + + + + + This class represents a context from the SQLite core library that can + be passed to the sqlite3_result_*() and associated functions. + + + + + This interface represents a native handle provided by the SQLite core + library. + + + + + The native handle value. + + + + + The native context handle. + + + + + Constructs an instance of this class using the specified native + context handle. + + + The native context handle to use. + + + + + Sets the context result to NULL. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to the specified + value. + + + The value to use. This value will be + converted to the UTF-8 encoding prior to being used. + + + + + Sets the context result to the specified + value containing an error message. + + + The value containing the error message text. + This value will be converted to the UTF-8 encoding prior to being + used. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to contain the error code SQLITE_TOOBIG. + + + + + Sets the context result to contain the error code SQLITE_NOMEM. + + + + + Sets the context result to the specified array + value. + + + The array value to use. + + + + + Sets the context result to a BLOB of zeros of the specified size. + + + The number of zero bytes to use for the BLOB context result. + + + + + Sets the context result to the specified . + + + The to use. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + This class represents a value from the SQLite core library that can be + passed to the sqlite3_value_*() and associated functions. + + + + + The native value handle. + + + + + Constructs an instance of this class using the specified native + value handle. + + + The native value handle to use. + + + + + Invalidates the native value handle, thereby preventing further + access to it from this object instance. + + + + + Converts a logical array of native pointers to native sqlite3_value + structures into a managed array of + object instances. + + + The number of elements in the logical array of native sqlite3_value + structures. + + + The native pointer to the logical array of native sqlite3_value + structures to convert. + + + The managed array of object instances or + null upon failure. + + + + + Gets and returns the type affinity associated with this value. + + + The type affinity associated with this value. + + + + + Gets and returns the number of bytes associated with this value, if + it refers to a UTF-8 encoded string. + + + The number of bytes associated with this value. The returned value + may be zero. + + + + + Gets and returns the associated with this + value. + + + The associated with this value. + + + + + Gets and returns the associated with + this value. + + + The associated with this value. + + + + + Gets and returns the associated with this + value. + + + The associated with this value. + + + + + Gets and returns the associated with this + value. + + + The associated with this value. The value is + converted from the UTF-8 encoding prior to being returned. + + + + + Gets and returns the array associated with this + value. + + + The array associated with this value. + + + + + Uses the native value handle to obtain and store the managed value + for this object instance, thus saving it for later use. The type + of the managed value is determined by the type affinity of the + native value. If the type affinity is not recognized by this + method, no work is done and false is returned. + + + Non-zero if the native value was persisted successfully. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + Returns non-zero if the native SQLite value has been successfully + persisted as a managed value within this object instance (i.e. the + property may then be read successfully). + + + + + If the managed value for this object instance is available (i.e. it + has been previously persisted via the ) method, + that value is returned; otherwise, an exception is thrown. The + returned value may be null. + + + + + These are the allowed values for the operators that are part of a + constraint term in the WHERE clause of a query that uses a virtual + table. + + + + + This value represents the equality operator. + + + + + This value represents the greater than operator. + + + + + This value represents the less than or equal to operator. + + + + + This value represents the less than operator. + + + + + This value represents the greater than or equal to operator. + + + + + This value represents the MATCH operator. + + + + + This class represents the native sqlite3_index_constraint structure + from the SQLite core library. + + + + + Constructs an instance of this class using the specified native + sqlite3_index_constraint structure. + + + The native sqlite3_index_constraint structure to use. + + + + + Constructs an instance of this class using the specified field + values. + + + Column on left-hand side of constraint. + + + Constraint operator (). + + + True if this constraint is usable. + + + Used internally - + should ignore. + + + + + Column on left-hand side of constraint. + + + + + Constraint operator (). + + + + + True if this constraint is usable. + + + + + Used internally - + should ignore. + + + + + This class represents the native sqlite3_index_orderby structure from + the SQLite core library. + + + + + Constructs an instance of this class using the specified native + sqlite3_index_orderby structure. + + + The native sqlite3_index_orderby structure to use. + + + + + Constructs an instance of this class using the specified field + values. + + + Column number. + + + True for DESC. False for ASC. + + + + + Column number. + + + + + True for DESC. False for ASC. + + + + + This class represents the native sqlite3_index_constraint_usage + structure from the SQLite core library. + + + + + Constructs an instance of this class using the specified native + sqlite3_index_constraint_usage structure. + + + The native sqlite3_index_constraint_usage structure to use. + + + + + Constructs an instance of this class using the specified field + values. + + + If greater than 0, constraint is part of argv to xFilter. + + + Do not code a test for this constraint. + + + + + If greater than 0, constraint is part of argv to xFilter. + + + + + Do not code a test for this constraint. + + + + + This class represents the various inputs provided by the SQLite core + library to the method. + + + + + Constructs an instance of this class. + + + The number of instances to + pre-allocate space for. + + + The number of instances to + pre-allocate space for. + + + + + An array of object instances, + each containing information supplied by the SQLite core library. + + + + + An array of object instances, + each containing information supplied by the SQLite core library. + + + + + This class represents the various outputs provided to the SQLite core + library by the method. + + + + + Constructs an instance of this class. + + + The number of instances + to pre-allocate space for. + + + + + Determines if the native estimatedRows field can be used, based on + the available version of the SQLite core library. + + + Non-zero if the property is supported + by the SQLite core library. + + + + + An array of object + instances, each containing information to be supplied to the SQLite + core library. + + + + + Number used to help identify the selected index. This value will + later be provided to the + method. + + + + + String used to help identify the selected index. This value will + later be provided to the + method. + + + + + Non-zero if the index string must be freed by the SQLite core + library. + + + + + True if output is already ordered. + + + + + Estimated cost of using this index. Using a null value here + indicates that a default estimated cost value should be used. + + + + + Estimated number of rows returned. Using a null value here + indicates that a default estimated rows value should be used. + + + + + This class represents the various inputs and outputs used with the + method. + + + + + Constructs an instance of this class. + + + The number of (and + ) instances to + pre-allocate space for. + + + The number of instances to + pre-allocate space for. + + + + + Converts a native pointer to a native sqlite3_index_info structure + into a new object instance. + + + The native pointer to the native sqlite3_index_info structure to + convert. + + + Upon success, this parameter will be modified to contain the newly + created object instance. + + + + + Populates the outputs of a pre-allocated native sqlite3_index_info + structure using an existing object + instance. + + + The existing object instance containing + the output data to use. + + + The native pointer to the pre-allocated native sqlite3_index_info + structure. + + + + + The object instance containing + the inputs to the + method. + + + + + The object instance containing + the outputs from the + method. + + + + + This class represents a managed virtual table implementation. It is + not sealed and should be used as the base class for any user-defined + virtual table classes implemented in managed code. + + + + + The index within the array of strings provided to the + and + methods containing the + name of the module implementing this virtual table. + + + + + The index within the array of strings provided to the + and + methods containing the + name of the database containing this virtual table. + + + + + The index within the array of strings provided to the + and + methods containing the + name of the virtual table. + + + + + Constructs an instance of this class. + + + The original array of strings provided to the + and + methods. + + + + + This method should normally be used by the + method in order to + perform index selection based on the constraints provided by the + SQLite core library. + + + The object instance containing all the + data for the inputs and outputs relating to index selection. + + + Non-zero upon success. + + + + + Attempts to record the renaming of the virtual table associated + with this object instance. + + + The new name for the virtual table. + + + Non-zero upon success. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being called + from the finalizer. + + + + + Finalizes this object instance. + + + + + The original array of strings provided to the + and + methods. + + + + + The name of the module implementing this virtual table. + + + + + The name of the database containing this virtual table. + + + + + The name of the virtual table. + + + + + The object instance containing all the + data for the inputs and outputs relating to the most recent index + selection. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + This class represents a managed virtual table cursor implementation. + It is not sealed and should be used as the base class for any + user-defined virtual table cursor classes implemented in managed code. + + + + + This value represents an invalid integer row sequence number. + + + + + The field holds the integer row sequence number for the current row + pointed to by this cursor object instance. + + + + + Constructs an instance of this class. + + + The object instance associated + with this object instance. + + + + + Constructs an instance of this class. + + + + + Attempts to persist the specified object + instances in order to make them available after the + method returns. + + + The array of object instances to be + persisted. + + + The number of object instances that were + successfully persisted. + + + + + This method should normally be used by the + method in order to + perform filtering of the result rows and/or to record the filtering + criteria provided by the SQLite core library. + + + Number used to help identify the selected index. + + + String used to help identify the selected index. + + + The values corresponding to each column in the selected index. + + + + + Determines the integer row sequence number for the current row. + + + The integer row sequence number for the current row -OR- zero if + it cannot be determined. + + + + + Adjusts the integer row sequence number so that it refers to the + next row. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being called + from the finalizer. + + + + + Finalizes this object instance. + + + + + The object instance associated + with this object instance. + + + + + Number used to help identify the selected index. This value will + be set via the method. + + + + + String used to help identify the selected index. This value will + be set via the method. + + + + + The values used to filter the rows returned via this cursor object + instance. This value will be set via the + method. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + This interface represents a virtual table implementation written in + native code. + + + + + + This method is called to create a new instance of a virtual table + in response to a CREATE VIRTUAL TABLE statement. The db parameter + is a pointer to the SQLite database connection that is executing + the CREATE VIRTUAL TABLE statement. The pAux argument is the copy + of the client data pointer that was the fourth argument to the + sqlite3_create_module() or sqlite3_create_module_v2() call that + registered the virtual table module. The argv parameter is an + array of argc pointers to null terminated strings. The first + string, argv[0], is the name of the module being invoked. The + module name is the name provided as the second argument to + sqlite3_create_module() and as the argument to the USING clause of + the CREATE VIRTUAL TABLE statement that is running. The second, + argv[1], is the name of the database in which the new virtual table + is being created. The database name is "main" for the primary + database, or "temp" for TEMP database, or the name given at the + end of the ATTACH statement for attached databases. The third + element of the array, argv[2], is the name of the new virtual + table, as specified following the TABLE keyword in the CREATE + VIRTUAL TABLE statement. If present, the fourth and subsequent + strings in the argv[] array report the arguments to the module name + in the CREATE VIRTUAL TABLE statement. + + + The job of this method is to construct the new virtual table object + (an sqlite3_vtab object) and return a pointer to it in *ppVTab. + + + As part of the task of creating a new sqlite3_vtab structure, this + method must invoke sqlite3_declare_vtab() to tell the SQLite core + about the columns and datatypes in the virtual table. The + sqlite3_declare_vtab() API has the following prototype: + + + + int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable) + + + + The first argument to sqlite3_declare_vtab() must be the same + database connection pointer as the first parameter to this method. + The second argument to sqlite3_declare_vtab() must a + zero-terminated UTF-8 string that contains a well-formed CREATE + TABLE statement that defines the columns in the virtual table and + their data types. The name of the table in this CREATE TABLE + statement is ignored, as are all constraints. Only the column names + and datatypes matter. The CREATE TABLE statement string need not to + be held in persistent memory. The string can be deallocated and/or + reused as soon as the sqlite3_declare_vtab() routine returns. + + + + The native database connection handle. + + + The original native pointer value that was provided to the + sqlite3_create_module(), sqlite3_create_module_v2() or + sqlite3_create_disposable_module() functions. + + + The number of arguments from the CREATE VIRTUAL TABLE statement. + + + The array of string arguments from the CREATE VIRTUAL TABLE + statement. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab derived structure. + + + Upon failure, this parameter must be modified to point to the error + message, with the underlying memory having been obtained from the + sqlite3_malloc() function. + + + A standard SQLite return code. + + + + + + The xConnect method is very similar to xCreate. It has the same + parameters and constructs a new sqlite3_vtab structure just like + xCreate. And it must also call sqlite3_declare_vtab() like xCreate. + + + The difference is that xConnect is called to establish a new + connection to an existing virtual table whereas xCreate is called + to create a new virtual table from scratch. + + + The xCreate and xConnect methods are only different when the + virtual table has some kind of backing store that must be + initialized the first time the virtual table is created. The + xCreate method creates and initializes the backing store. The + xConnect method just connects to an existing backing store. + + + As an example, consider a virtual table implementation that + provides read-only access to existing comma-separated-value (CSV) + files on disk. There is no backing store that needs to be created + or initialized for such a virtual table (since the CSV files + already exist on disk) so the xCreate and xConnect methods will be + identical for that module. + + + Another example is a virtual table that implements a full-text + index. The xCreate method must create and initialize data + structures to hold the dictionary and posting lists for that index. + The xConnect method, on the other hand, only has to locate and use + an existing dictionary and posting lists that were created by a + prior xCreate call. + + + The xConnect method must return SQLITE_OK if it is successful in + creating the new virtual table, or SQLITE_ERROR if it is not + successful. If not successful, the sqlite3_vtab structure must not + be allocated. An error message may optionally be returned in *pzErr + if unsuccessful. Space to hold the error message string must be + allocated using an SQLite memory allocation function like + sqlite3_malloc() or sqlite3_mprintf() as the SQLite core will + attempt to free the space using sqlite3_free() after the error has + been reported up to the application. + + + The xConnect method is required for every virtual table + implementation, though the xCreate and xConnect pointers of the + sqlite3_module object may point to the same function the virtual + table does not need to initialize backing store. + + + + The native database connection handle. + + + The original native pointer value that was provided to the + sqlite3_create_module(), sqlite3_create_module_v2() or + sqlite3_create_disposable_module() functions. + + + The number of arguments from the CREATE VIRTUAL TABLE statement. + + + The array of string arguments from the CREATE VIRTUAL TABLE + statement. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab derived structure. + + + Upon failure, this parameter must be modified to point to the error + message, with the underlying memory having been obtained from the + sqlite3_malloc() function. + + + A standard SQLite return code. + + + + + + SQLite uses the xBestIndex method of a virtual table module to + determine the best way to access the virtual table. The xBestIndex + method has a prototype like this: + + + int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*); + + + The SQLite core communicates with the xBestIndex method by filling + in certain fields of the sqlite3_index_info structure and passing a + pointer to that structure into xBestIndex as the second parameter. + The xBestIndex method fills out other fields of this structure + which forms the reply. The sqlite3_index_info structure looks like + this: + + + struct sqlite3_index_info { + /* Inputs */ + const int nConstraint; /* Number of entries in aConstraint */ + const struct sqlite3_index_constraint { + int iColumn; /* Column on left-hand side of + * constraint */ + unsigned char op; /* Constraint operator */ + unsigned char usable; /* True if this constraint is usable */ + int iTermOffset; /* Used internally - xBestIndex should + * ignore */ + } *const aConstraint; /* Table of WHERE clause constraints */ + const int nOrderBy; /* Number of terms in the ORDER BY + * clause */ + const struct sqlite3_index_orderby { + int iColumn; /* Column number */ + unsigned char desc; /* True for DESC. False for ASC. */ + } *const aOrderBy; /* The ORDER BY clause */ + /* Outputs */ + struct sqlite3_index_constraint_usage { + int argvIndex; /* if greater than zero, constraint is + * part of argv to xFilter */ + unsigned char omit; /* Do not code a test for this + * constraint */ + } *const aConstraintUsage; + int idxNum; /* Number used to identify the index */ + char *idxStr; /* String, possibly obtained from + * sqlite3_malloc() */ + int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if + * true */ + int orderByConsumed; /* True if output is already ordered */ + double estimatedCost; /* Estimated cost of using this index */ + }; + + + In addition, there are some defined constants: + + + #define SQLITE_INDEX_CONSTRAINT_EQ 2 + #define SQLITE_INDEX_CONSTRAINT_GT 4 + #define SQLITE_INDEX_CONSTRAINT_LE 8 + #define SQLITE_INDEX_CONSTRAINT_LT 16 + #define SQLITE_INDEX_CONSTRAINT_GE 32 + #define SQLITE_INDEX_CONSTRAINT_MATCH 64 + + + The SQLite core calls the xBestIndex method when it is compiling a + query that involves a virtual table. In other words, SQLite calls + this method when it is running sqlite3_prepare() or the equivalent. + By calling this method, the SQLite core is saying to the virtual + table that it needs to access some subset of the rows in the + virtual table and it wants to know the most efficient way to do + that access. The xBestIndex method replies with information that + the SQLite core can then use to conduct an efficient search of the + virtual table. + + + While compiling a single SQL query, the SQLite core might call + xBestIndex multiple times with different settings in + sqlite3_index_info. The SQLite core will then select the + combination that appears to give the best performance. + + + Before calling this method, the SQLite core initializes an instance + of the sqlite3_index_info structure with information about the + query that it is currently trying to process. This information + derives mainly from the WHERE clause and ORDER BY or GROUP BY + clauses of the query, but also from any ON or USING clauses if the + query is a join. The information that the SQLite core provides to + the xBestIndex method is held in the part of the structure that is + marked as "Inputs". The "Outputs" section is initialized to zero. + + + The information in the sqlite3_index_info structure is ephemeral + and may be overwritten or deallocated as soon as the xBestIndex + method returns. If the xBestIndex method needs to remember any part + of the sqlite3_index_info structure, it should make a copy. Care + must be take to store the copy in a place where it will be + deallocated, such as in the idxStr field with needToFreeIdxStr set + to 1. + + + Note that xBestIndex will always be called before xFilter, since + the idxNum and idxStr outputs from xBestIndex are required inputs + to xFilter. However, there is no guarantee that xFilter will be + called following a successful xBestIndex. + + + The xBestIndex method is required for every virtual table + implementation. + + + 2.3.1 Inputs + + + The main thing that the SQLite core is trying to communicate to the + virtual table is the constraints that are available to limit the + number of rows that need to be searched. The aConstraint[] array + contains one entry for each constraint. There will be exactly + nConstraint entries in that array. + + + Each constraint will correspond to a term in the WHERE clause or in + a USING or ON clause that is of the form + + + column OP EXPR + + + Where "column" is a column in the virtual table, OP is an operator + like "=" or "<", and EXPR is an arbitrary expression. So, for + example, if the WHERE clause contained a term like this: + + + a = 5 + + + Then one of the constraints would be on the "a" column with + operator "=" and an expression of "5". Constraints need not have a + literal representation of the WHERE clause. The query optimizer + might make transformations to the WHERE clause in order to extract + as many constraints as it can. So, for example, if the WHERE clause + contained something like this: + + + x BETWEEN 10 AND 100 AND 999>y + + + The query optimizer might translate this into three separate + constraints: + + + x >= 10 + x <= 100 + y < 999 + + + For each constraint, the aConstraint[].iColumn field indicates + which column appears on the left-hand side of the constraint. The + first column of the virtual table is column 0. The rowid of the + virtual table is column -1. The aConstraint[].op field indicates + which operator is used. The SQLITE_INDEX_CONSTRAINT_* constants map + integer constants into operator values. Columns occur in the order + they were defined by the call to sqlite3_declare_vtab() in the + xCreate or xConnect method. Hidden columns are counted when + determining the column index. + + + The aConstraint[] array contains information about all constraints + that apply to the virtual table. But some of the constraints might + not be usable because of the way tables are ordered in a join. The + xBestIndex method must therefore only consider constraints that + have an aConstraint[].usable flag which is true. + + + In addition to WHERE clause constraints, the SQLite core also tells + the xBestIndex method about the ORDER BY clause. (In an aggregate + query, the SQLite core might put in GROUP BY clause information in + place of the ORDER BY clause information, but this fact should not + make any difference to the xBestIndex method.) If all terms of the + ORDER BY clause are columns in the virtual table, then nOrderBy + will be the number of terms in the ORDER BY clause and the + aOrderBy[] array will identify the column for each term in the + order by clause and whether or not that column is ASC or DESC. + + + 2.3.2 Outputs + + + Given all of the information above, the job of the xBestIndex + method it to figure out the best way to search the virtual table. + + + The xBestIndex method fills the idxNum and idxStr fields with + information that communicates an indexing strategy to the xFilter + method. The information in idxNum and idxStr is arbitrary as far as + the SQLite core is concerned. The SQLite core just copies the + information through to the xFilter method. Any desired meaning can + be assigned to idxNum and idxStr as long as xBestIndex and xFilter + agree on what that meaning is. + + + The idxStr value may be a string obtained from an SQLite memory + allocation function such as sqlite3_mprintf(). If this is the case, + then the needToFreeIdxStr flag must be set to true so that the + SQLite core will know to call sqlite3_free() on that string when it + has finished with it, and thus avoid a memory leak. + + + If the virtual table will output rows in the order specified by the + ORDER BY clause, then the orderByConsumed flag may be set to true. + If the output is not automatically in the correct order then + orderByConsumed must be left in its default false setting. This + will indicate to the SQLite core that it will need to do a separate + sorting pass over the data after it comes out of the virtual table. + + + The estimatedCost field should be set to the estimated number of + disk access operations required to execute this query against the + virtual table. The SQLite core will often call xBestIndex multiple + times with different constraints, obtain multiple cost estimates, + then choose the query plan that gives the lowest estimate. + + + The aConstraintUsage[] array contains one element for each of the + nConstraint constraints in the inputs section of the + sqlite3_index_info structure. The aConstraintUsage[] array is used + by xBestIndex to tell the core how it is using the constraints. + + + The xBestIndex method may set aConstraintUsage[].argvIndex entries + to values greater than one. Exactly one entry should be set to 1, + another to 2, another to 3, and so forth up to as many or as few as + the xBestIndex method wants. The EXPR of the corresponding + constraints will then be passed in as the argv[] parameters to + xFilter. + + + For example, if the aConstraint[3].argvIndex is set to 1, then when + xFilter is called, the argv[0] passed to xFilter will have the EXPR + value of the aConstraint[3] constraint. + + + By default, the SQLite core double checks all constraints on each + row of the virtual table that it receives. If such a check is + redundant, the xBestFilter method can suppress that double-check by + setting aConstraintUsage[].omit. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The native pointer to the sqlite3_index_info structure. + + + A standard SQLite return code. + + + + + + This method releases a connection to a virtual table. Only the + sqlite3_vtab object is destroyed. The virtual table is not + destroyed and any backing store associated with the virtual table + persists. This method undoes the work of xConnect. + + + This method is a destructor for a connection to the virtual table. + Contrast this method with xDestroy. The xDestroy is a destructor + for the entire virtual table. + + + The xDisconnect method is required for every virtual table + implementation, though it is acceptable for the xDisconnect and + xDestroy methods to be the same function if that makes sense for + the particular virtual table. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method releases a connection to a virtual table, just like the + xDisconnect method, and it also destroys the underlying table + implementation. This method undoes the work of xCreate. + + + The xDisconnect method is called whenever a database connection + that uses a virtual table is closed. The xDestroy method is only + called when a DROP TABLE statement is executed against the virtual + table. + + + The xDestroy method is required for every virtual table + implementation, though it is acceptable for the xDisconnect and + xDestroy methods to be the same function if that makes sense for + the particular virtual table. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + The xOpen method creates a new cursor used for accessing (read + and/or writing) a virtual table. A successful invocation of this + method will allocate the memory for the sqlite3_vtab_cursor (or a + subclass), initialize the new object, and make *ppCursor point to + the new object. The successful call then returns SQLITE_OK. + + + For every successful call to this method, the SQLite core will + later invoke the xClose method to destroy the allocated cursor. + + + The xOpen method need not initialize the pVtab field of the + sqlite3_vtab_cursor structure. The SQLite core will take care of + that chore automatically. + + + A virtual table implementation must be able to support an arbitrary + number of simultaneously open cursors. + + + When initially opened, the cursor is in an undefined state. The + SQLite core will invoke the xFilter method on the cursor prior to + any attempt to position or read from the cursor. + + + The xOpen method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab derived structure. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab_cursor derived structure. + + + A standard SQLite return code. + + + + + + The xClose method closes a cursor previously opened by xOpen. The + SQLite core will always call xClose once for each cursor opened + using xOpen. + + + This method must release all resources allocated by the + corresponding xOpen call. The routine will not be called again even + if it returns an error. The SQLite core will not use the + sqlite3_vtab_cursor again after it has been closed. + + + The xClose method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + A standard SQLite return code. + + + + + + This method begins a search of a virtual table. The first argument + is a cursor opened by xOpen. The next two argument define a + particular search index previously chosen by xBestIndex. The + specific meanings of idxNum and idxStr are unimportant as long as + xFilter and xBestIndex agree on what that meaning is. + + + The xBestIndex function may have requested the values of certain + expressions using the aConstraintUsage[].argvIndex values of the + sqlite3_index_info structure. Those values are passed to xFilter + using the argc and argv parameters. + + + If the virtual table contains one or more rows that match the + search criteria, then the cursor must be left point at the first + row. Subsequent calls to xEof must return false (zero). If there + are no rows match, then the cursor must be left in a state that + will cause the xEof to return true (non-zero). The SQLite engine + will use the xColumn and xRowid methods to access that row content. + The xNext method will be used to advance to the next row. + + + This method must return SQLITE_OK if successful, or an sqlite error + code if an error occurs. + + + The xFilter method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + Number used to help identify the selected index. + + + The native pointer to the UTF-8 encoded string containing the + string used to help identify the selected index. + + + The number of native pointers to sqlite3_value structures specified + in . + + + An array of native pointers to sqlite3_value structures containing + filtering criteria for the selected index. + + + A standard SQLite return code. + + + + + + The xNext method advances a virtual table cursor to the next row of + a result set initiated by xFilter. If the cursor is already + pointing at the last row when this routine is called, then the + cursor no longer points to valid data and a subsequent call to the + xEof method must return true (non-zero). If the cursor is + successfully advanced to another row of content, then subsequent + calls to xEof must return false (zero). + + + This method must return SQLITE_OK if successful, or an sqlite error + code if an error occurs. + + + The xNext method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + A standard SQLite return code. + + + + + + The xEof method must return false (zero) if the specified cursor + currently points to a valid row of data, or true (non-zero) + otherwise. This method is called by the SQL engine immediately + after each xFilter and xNext invocation. + + + The xEof method is required for every virtual table implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + Non-zero if no more rows are available; zero otherwise. + + + + + + The SQLite core invokes this method in order to find the value for + the N-th column of the current row. N is zero-based so the first + column is numbered 0. The xColumn method may return its result back + to SQLite using one of the following interface: + + + sqlite3_result_blob() + sqlite3_result_double() + sqlite3_result_int() + sqlite3_result_int64() + sqlite3_result_null() + sqlite3_result_text() + sqlite3_result_text16() + sqlite3_result_text16le() + sqlite3_result_text16be() + sqlite3_result_zeroblob() + + + If the xColumn method implementation calls none of the functions + above, then the value of the column defaults to an SQL NULL. + + + To raise an error, the xColumn method should use one of the + result_text() methods to set the error message text, then return an + appropriate error code. The xColumn method must return SQLITE_OK on + success. + + + The xColumn method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + The native pointer to the sqlite3_context structure to be used + for returning the specified column value to the SQLite core + library. + + + The zero-based index corresponding to the column containing the + value to be returned. + + + A standard SQLite return code. + + + + + + A successful invocation of this method will cause *pRowid to be + filled with the rowid of row that the virtual table cursor pCur is + currently pointing at. This method returns SQLITE_OK on success. It + returns an appropriate error code on failure. + + + The xRowid method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the current row for the specified cursor. + + + A standard SQLite return code. + + + + + + All changes to a virtual table are made using the xUpdate method. + This one method can be used to insert, delete, or update. + + + The argc parameter specifies the number of entries in the argv + array. The value of argc will be 1 for a pure delete operation or + N+2 for an insert or replace or update where N is the number of + columns in the table. In the previous sentence, N includes any + hidden columns. + + + Every argv entry will have a non-NULL value in C but may contain + the SQL value NULL. In other words, it is always true that + argv[i]!=0 for i between 0 and argc-1. However, it might be the + case that sqlite3_value_type(argv[i])==SQLITE_NULL. + + + The argv[0] parameter is the rowid of a row in the virtual table + to be deleted. If argv[0] is an SQL NULL, then no deletion occurs. + + + The argv[1] parameter is the rowid of a new row to be inserted into + the virtual table. If argv[1] is an SQL NULL, then the + implementation must choose a rowid for the newly inserted row. + Subsequent argv[] entries contain values of the columns of the + virtual table, in the order that the columns were declared. The + number of columns will match the table declaration that the + xConnect or xCreate method made using the sqlite3_declare_vtab() + call. All hidden columns are included. + + + When doing an insert without a rowid (argc>1, argv[1] is an SQL + NULL), the implementation must set *pRowid to the rowid of the + newly inserted row; this will become the value returned by the + sqlite3_last_insert_rowid() function. Setting this value in all the + other cases is a harmless no-op; the SQLite engine ignores the + *pRowid return value if argc==1 or argv[1] is not an SQL NULL. + + + Each call to xUpdate will fall into one of cases shown below. Note + that references to argv[i] mean the SQL value held within the + argv[i] object, not the argv[i] object itself. + + + argc = 1 + + + The single row with rowid equal to argv[0] is deleted. No + insert occurs. + + + argc > 1 + argv[0] = NULL + + + A new row is inserted with a rowid argv[1] and column + values in argv[2] and following. If argv[1] is an SQL NULL, + the a new unique rowid is generated automatically. + + + argc > 1 + argv[0] ? NULL + argv[0] = argv[1] + + + The row with rowid argv[0] is updated with new values in + argv[2] and following parameters. + + + argc > 1 + argv[0] ? NULL + argv[0] ? argv[1] + + + The row with rowid argv[0] is updated with rowid argv[1] + and new values in argv[2] and following parameters. This + will occur when an SQL statement updates a rowid, as in + the statement: + + + UPDATE table SET rowid=rowid+1 WHERE ...; + + + The xUpdate method must return SQLITE_OK if and only if it is + successful. If a failure occurs, the xUpdate must return an + appropriate error code. On a failure, the pVTab->zErrMsg element + may optionally be replaced with error message text stored in memory + allocated from SQLite using functions such as sqlite3_mprintf() or + sqlite3_malloc(). + + + If the xUpdate method violates some constraint of the virtual table + (including, but not limited to, attempting to store a value of the + wrong datatype, attempting to store a value that is too large or + too small, or attempting to change a read-only value) then the + xUpdate must fail with an appropriate error code. + + + There might be one or more sqlite3_vtab_cursor objects open and in + use on the virtual table instance and perhaps even on the row of + the virtual table when the xUpdate method is invoked. The + implementation of xUpdate must be prepared for attempts to delete + or modify rows of the table out from other existing cursors. If the + virtual table cannot accommodate such changes, the xUpdate method + must return an error code. + + + The xUpdate method is optional. If the xUpdate pointer in the + sqlite3_module for a virtual table is a NULL pointer, then the + virtual table is read-only. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The number of new or modified column values contained in + . + + + The array of native pointers to sqlite3_value structures containing + the new or modified column values, if any. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the row that was inserted, if any. + + + A standard SQLite return code. + + + + + + This method begins a transaction on a virtual table. This is method + is optional. The xBegin pointer of sqlite3_module may be NULL. + + + This method is always followed by one call to either the xCommit or + xRollback method. Virtual table transactions do not nest, so the + xBegin method will not be invoked more than once on a single + virtual table without an intervening call to either xCommit or + xRollback. Multiple calls to other methods can and likely will + occur in between the xBegin and the corresponding xCommit or + xRollback. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method signals the start of a two-phase commit on a virtual + table. This is method is optional. The xSync pointer of + sqlite3_module may be NULL. + + + This method is only invoked after call to the xBegin method and + prior to an xCommit or xRollback. In order to implement two-phase + commit, the xSync method on all virtual tables is invoked prior to + invoking the xCommit method on any virtual table. If any of the + xSync methods fail, the entire transaction is rolled back. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method causes a virtual table transaction to commit. This is + method is optional. The xCommit pointer of sqlite3_module may be + NULL. + + + A call to this method always follows a prior call to xBegin and + xSync. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method causes a virtual table transaction to rollback. This is + method is optional. The xRollback pointer of sqlite3_module may be + NULL. + + + A call to this method always follows a prior call to xBegin. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method provides notification that the virtual table + implementation that the virtual table will be given a new name. If + this method returns SQLITE_OK then SQLite renames the table. If + this method returns an error code then the renaming is prevented. + + + The xRename method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The number of arguments to the function being sought. + + + The name of the function being sought. + + + Upon success, this parameter must be modified to contain the + delegate responsible for implementing the specified function. + + + Upon success, this parameter must be modified to contain the + native user-data pointer associated with + . + + + Non-zero if the specified function was found; zero otherwise. + + + + + + This method provides notification that the virtual table + implementation that the virtual table will be given a new name. If + this method returns SQLITE_OK then SQLite renames the table. If + this method returns an error code then the renaming is prevented. + + + The xRename method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The native pointer to the UTF-8 encoded string containing the new + name for the virtual table. + + + A standard SQLite return code. + + + + + + These methods provide the virtual table implementation an + opportunity to implement nested transactions. They are always + optional and will only be called in SQLite version 3.7.7 and later. + + + When xSavepoint(X,N) is invoked, that is a signal to the virtual + table X that it should save its current state as savepoint N. A + subsequent call to xRollbackTo(X,R) means that the state of the + virtual table should return to what it was when xSavepoint(X,R) was + last called. The call to xRollbackTo(X,R) will invalidate all + savepoints with N>R; none of the invalided savepoints will be + rolled back or released without first being reinitialized by a call + to xSavepoint(). A call to xRelease(X,M) invalidates all savepoints + where N>=M. + + + None of the xSavepoint(), xRelease(), or xRollbackTo() methods will + ever be called except in between calls to xBegin() and either + xCommit() or xRollback(). + + + + The native pointer to the sqlite3_vtab derived structure. + + + This is an integer identifier under which the the current state of + the virtual table should be saved. + + + A standard SQLite return code. + + + + + + These methods provide the virtual table implementation an + opportunity to implement nested transactions. They are always + optional and will only be called in SQLite version 3.7.7 and later. + + + When xSavepoint(X,N) is invoked, that is a signal to the virtual + table X that it should save its current state as savepoint N. A + subsequent call to xRollbackTo(X,R) means that the state of the + virtual table should return to what it was when xSavepoint(X,R) was + last called. The call to xRollbackTo(X,R) will invalidate all + savepoints with N>R; none of the invalided savepoints will be + rolled back or released without first being reinitialized by a call + to xSavepoint(). A call to xRelease(X,M) invalidates all savepoints + where N>=M. + + + None of the xSavepoint(), xRelease(), or xRollbackTo() methods will + ever be called except in between calls to xBegin() and either + xCommit() or xRollback(). + + + + The native pointer to the sqlite3_vtab derived structure. + + + This is an integer used to indicate that any saved states with an + identifier greater than or equal to this should be deleted by the + virtual table. + + + A standard SQLite return code. + + + + + + These methods provide the virtual table implementation an + opportunity to implement nested transactions. They are always + optional and will only be called in SQLite version 3.7.7 and later. + + + When xSavepoint(X,N) is invoked, that is a signal to the virtual + table X that it should save its current state as savepoint N. A + subsequent call to xRollbackTo(X,R) means that the state of the + virtual table should return to what it was when xSavepoint(X,R) was + last called. The call to xRollbackTo(X,R) will invalidate all + savepoints with N>R; none of the invalided savepoints will be + rolled back or released without first being reinitialized by a call + to xSavepoint(). A call to xRelease(X,M) invalidates all savepoints + where N>=M. + + + None of the xSavepoint(), xRelease(), or xRollbackTo() methods will + ever be called except in between calls to xBegin() and either + xCommit() or xRollback(). + + + + The native pointer to the sqlite3_vtab derived structure. + + + This is an integer identifier used to specify a specific saved + state for the virtual table for it to restore itself back to, which + should also have the effect of deleting all saved states with an + integer identifier greater than this one. + + + A standard SQLite return code. + + + + + This interface represents a virtual table implementation written in + managed code. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The object instance containing all the + data for the inputs and outputs relating to index selection. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + Upon success, this parameter must be modified to contain the + object instance associated + with the newly opened virtual table cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Number used to help identify the selected index. + + + String used to help identify the selected index. + + + The values corresponding to each column in the selected index. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Non-zero if no more rows are available; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to be used for + returning the specified column value to the SQLite core library. + + + The zero-based index corresponding to the column containing the + value to be returned. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the current row for the specified cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The array of object instances containing + the new or modified column values, if any. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the row that was inserted, if any. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The number of arguments to the function being sought. + + + The name of the function being sought. + + + Upon success, this parameter must be modified to contain the + object instance responsible for + implementing the specified function. + + + Upon success, this parameter must be modified to contain the + native user-data pointer associated with + . + + + Non-zero if the specified function was found; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The new name for the virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier under which the the current state of + the virtual table should be saved. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer used to indicate that any saved states with an + identifier greater than or equal to this should be deleted by the + virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier used to specify a specific saved + state for the virtual table for it to restore itself back to, which + should also have the effect of deleting all saved states with an + integer identifier greater than this one. + + + A standard SQLite return code. + + + + + Returns non-zero if the schema for the virtual table has been + declared. + + + + + Returns the name of the module as it was registered with the SQLite + core library. + + + + + This class contains static methods that are used to allocate, + manipulate, and free native memory provided by the SQLite core library. + + + + + Allocates at least the specified number of bytes of native memory + via the SQLite core library sqlite3_malloc() function and returns + the resulting native pointer. + + + The number of bytes to allocate. + + + The native pointer that points to a block of memory of at least the + specified size -OR- if the memory could + not be allocated. + + + + + Gets and returns the actual size of the specified memory block that + was previously obtained from the method. + + + The native pointer to the memory block previously obtained from the + method. + + + The actual size, in bytes, of the memory block specified via the + native pointer. + + + + + Frees a memory block previously obtained from the + method. + + + The native pointer to the memory block previously obtained from the + method. + + + + + This class contains static methods that are used to deal with native + UTF-8 string pointers to be used with the SQLite core library. + + + + + This is the maximum possible length for the native UTF-8 encoded + strings used with the SQLite core library. + + + + + This is the object instance used to handle + conversions from/to UTF-8. + + + + + Converts the specified managed string into the UTF-8 encoding and + returns the array of bytes containing its representation in that + encoding. + + + The managed string to convert. + + + The array of bytes containing the representation of the managed + string in the UTF-8 encoding or null upon failure. + + + + + Converts the specified array of bytes representing a string in the + UTF-8 encoding and returns a managed string. + + + The array of bytes to convert. + + + The managed string or null upon failure. + + + + + Probes a native pointer to a string in the UTF-8 encoding for its + terminating NUL character, within the specified length limit. + + + The native NUL-terminated string pointer. + + + The maximum length of the native string, in bytes. + + + The length of the native string, in bytes -OR- zero if the length + could not be determined. + + + + + Converts the specified native NUL-terminated UTF-8 string pointer + into a managed string. + + + The native NUL-terminated UTF-8 string pointer. + + + The managed string or null upon failure. + + + + + Converts the specified native UTF-8 string pointer of the specified + length into a managed string. + + + The native UTF-8 string pointer. + + + The length of the native string, in bytes. + + + The managed string or null upon failure. + + + + + Converts the specified managed string into a native NUL-terminated + UTF-8 string pointer using memory obtained from the SQLite core + library. + + + The managed string to convert. + + + The native NUL-terminated UTF-8 string pointer or + upon failure. + + + + + Converts a logical array of native NUL-terminated UTF-8 string + pointers into an array of managed strings. + + + The number of elements in the logical array of native + NUL-terminated UTF-8 string pointers. + + + The native pointer to the logical array of native NUL-terminated + UTF-8 string pointers to convert. + + + The array of managed strings or null upon failure. + + + + + Converts an array of managed strings into an array of native + NUL-terminated UTF-8 string pointers. + + + The array of managed strings to convert. + + + The array of native NUL-terminated UTF-8 string pointers or null + upon failure. + + + + + This class contains static methods that are used to deal with native + pointers to memory blocks that logically contain arrays of bytes to be + used with the SQLite core library. + + + + + Converts a native pointer to a logical array of bytes of the + specified length into a managed byte array. + + + The native pointer to the logical array of bytes to convert. + + + The length, in bytes, of the logical array of bytes to convert. + + + The managed byte array or null upon failure. + + + + + Converts a managed byte array into a native pointer to a logical + array of bytes. + + + The managed byte array to convert. + + + The native pointer to a logical byte array or null upon failure. + + + + + This class contains static methods that are used to perform several + low-level data marshalling tasks between native and managed code. + + + + + Returns a new object instance based on the + specified object instance and an integer + offset. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location that the new + object instance should point to. + + + The new object instance. + + + + + Rounds up an integer size to the next multiple of the alignment. + + + The size, in bytes, to be rounded up. + + + The required alignment for the return value. + + + The size, in bytes, rounded up to the next multiple of the + alignment. This value may end up being the same as the original + size. + + + + + Determines the offset, in bytes, of the next structure member. + + + The offset, in bytes, of the current structure member. + + + The size, in bytes, of the current structure member. + + + The alignment, in bytes, of the next structure member. + + + The offset, in bytes, of the next structure member. + + + + + Reads a value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be read is located. + + + The value at the specified memory location. + + + + + Reads a value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + to be read is located. + + + The value at the specified memory location. + + + + + Reads an value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be read is located. + + + The value at the specified memory location. + + + + + Writes an value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Writes an value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Writes a value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Writes a value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + This class represents a managed virtual table module implementation. + It is not sealed and must be used as the base class for any + user-defined virtual table module classes implemented in managed code. + + + + + The default version of the native sqlite3_module structure in use. + + + + + This field is used to store the native sqlite3_module structure + associated with this object instance. + + + + + This field is used to store the destructor delegate to be passed to + the SQLite core library via the sqlite3_create_disposable_module() + function. + + + + + This field is used to store a pointer to the native sqlite3_module + structure returned by the sqlite3_create_disposable_module + function. + + + + + This field is used to store the virtual table instances associated + with this module. The native pointer to the sqlite3_vtab derived + structure is used to key into this collection. + + + + + This field is used to store the virtual table cursor instances + associated with this module. The native pointer to the + sqlite3_vtab_cursor derived structure is used to key into this + collection. + + + + + This field is used to store the virtual table function instances + associated with this module. The case-insensitive function name + and the number of arguments (with -1 meaning "any") are used to + construct the string that is used to key into this collection. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + + + Calls the native SQLite core library in order to create a new + disposable module containing the implementation of a virtual table. + + + The native database connection pointer to use. + + + Non-zero upon success. + + + + + This method is called by the SQLite core library when the native + module associated with this object instance is being destroyed due + to its parent connection being closed. It may also be called by + the "vtshim" module if/when the sqlite3_dispose_module() function + is called. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + + + Creates and returns the native sqlite_module structure using the + configured (or default) + interface implementation. + + + The native sqlite_module structure using the configured (or + default) interface + implementation. + + + + + Creates and returns the native sqlite_module structure using the + specified interface + implementation. + + + The interface implementation to + use. + + + The native sqlite_module structure using the specified + interface implementation. + + + + + Creates a copy of the specified + object instance, + using default implementations for the contained delegates when + necessary. + + + The object + instance to copy. + + + The new object + instance. + + + + + Calls one of the virtual table initialization methods. + + + Non-zero to call the + method; otherwise, the + method will be called. + + + The native database connection handle. + + + The original native pointer value that was provided to the + sqlite3_create_module(), sqlite3_create_module_v2() or + sqlite3_create_disposable_module() functions. + + + The number of arguments from the CREATE VIRTUAL TABLE statement. + + + The array of string arguments from the CREATE VIRTUAL TABLE + statement. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab derived structure. + + + Upon failure, this parameter must be modified to point to the error + message, with the underlying memory having been obtained from the + sqlite3_malloc() function. + + + A standard SQLite return code. + + + + + Calls one of the virtual table finalization methods. + + + Non-zero to call the + method; otherwise, the + method will be + called. + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The native pointer to the sqlite3_vtab derived structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The native pointer to the sqlite3_vtab_cursor derived structure + used to get the native pointer to the sqlite3_vtab derived + structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Gets and returns the interface + implementation to be used when creating the native sqlite3_module + structure. Derived classes may override this method to supply an + alternate implementation for the + interface. + + + The interface implementation to + be used when populating the native sqlite3_module structure. If + the returned value is null, the private methods provided by the + class and relating to the + interface will be used to + create the necessary delegates. + + + + + Creates and returns the + interface implementation corresponding to the current + object instance. + + + The interface implementation + corresponding to the current object + instance. + + + + + Allocates a native sqlite3_vtab derived structure and returns a + native pointer to it. + + + A native pointer to a native sqlite3_vtab derived structure. + + + + + Zeros out the fields of a native sqlite3_vtab derived structure. + + + The native pointer to the native sqlite3_vtab derived structure to + zero. + + + + + Frees a native sqlite3_vtab structure using the provided native + pointer to it. + + + A native pointer to a native sqlite3_vtab derived structure. + + + + + Allocates a native sqlite3_vtab_cursor derived structure and + returns a native pointer to it. + + + A native pointer to a native sqlite3_vtab_cursor derived structure. + + + + + Frees a native sqlite3_vtab_cursor structure using the provided + native pointer to it. + + + A native pointer to a native sqlite3_vtab_cursor derived structure. + + + + + Reads and returns the native pointer to the sqlite3_vtab derived + structure based on the native pointer to the sqlite3_vtab_cursor + derived structure. + + + The object instance to be used. + + + The native pointer to the sqlite3_vtab_cursor derived structure + from which to read the native pointer to the sqlite3_vtab derived + structure. + + + The native pointer to the sqlite3_vtab derived structure -OR- + if it cannot be determined. + + + + + Reads and returns the native pointer to the sqlite3_vtab derived + structure based on the native pointer to the sqlite3_vtab_cursor + derived structure. + + + The native pointer to the sqlite3_vtab_cursor derived structure + from which to read the native pointer to the sqlite3_vtab derived + structure. + + + The native pointer to the sqlite3_vtab derived structure -OR- + if it cannot be determined. + + + + + Looks up and returns the object + instance based on the native pointer to the sqlite3_vtab derived + structure. + + + The native pointer to the sqlite3_vtab derived structure. + + + The object instance or null if + the corresponding one cannot be found. + + + + + Allocates and returns a native pointer to a sqlite3_vtab derived + structure and creates an association between it and the specified + object instance. + + + The object instance to be used + when creating the association. + + + The native pointer to a sqlite3_vtab derived structure or + if the method fails for any reason. + + + + + Looks up and returns the + object instance based on the native pointer to the + sqlite3_vtab_cursor derived structure. + + + The native pointer to the sqlite3_vtab derived structure. + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + The object instance or null + if the corresponding one cannot be found. + + + + + Allocates and returns a native pointer to a sqlite3_vtab_cursor + derived structure and creates an association between it and the + specified object instance. + + + The object instance to be + used when creating the association. + + + The native pointer to a sqlite3_vtab_cursor derived structure or + if the method fails for any reason. + + + + + Deterimines the key that should be used to identify and store the + object instance for the virtual table + (i.e. to be returned via the + method). + + + The number of arguments to the virtual table function. + + + The name of the virtual table function. + + + The object instance associated with + this virtual table function. + + + The string that should be used to identify and store the virtual + table function instance. This method cannot return null. If null + is returned from this method, the behavior is undefined. + + + + + Attempts to declare the schema for the virtual table using the + specified database connection. + + + The object instance to use when + declaring the schema of the virtual table. This parameter may not + be null. + + + The string containing the CREATE TABLE statement that completely + describes the schema for the virtual table. This parameter may not + be null. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + Calls the native SQLite core library in order to declare a virtual + table function in response to a call into the + + or virtual table + methods. + + + The object instance to use when + declaring the schema of the virtual table. + + + The number of arguments to the function being declared. + + + The name of the function being declared. + + + Upon success, the contents of this parameter are undefined. Upon + failure, it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The native pointer to the sqlite3_vtab derived structure. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + The error message. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the specified estimated cost. + + + The object instance to modify. + + + The estimated cost value to use. Using a null value means that the + default value provided by the SQLite core library should be used. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the default estimated cost. + + + The object instance to modify. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the specified estimated rows. + + + The object instance to modify. + + + The estimated rows value to use. Using a null value means that the + default value provided by the SQLite core library should be used. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the default estimated rows. + + + The object instance to modify. + + + Non-zero upon success. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The object instance containing all the + data for the inputs and outputs relating to index selection. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + Upon success, this parameter must be modified to contain the + object instance associated + with the newly opened virtual table cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Number used to help identify the selected index. + + + String used to help identify the selected index. + + + The values corresponding to each column in the selected index. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Non-zero if no more rows are available; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to be used for + returning the specified column value to the SQLite core library. + + + The zero-based index corresponding to the column containing the + value to be returned. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the current row for the specified cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The array of object instances containing + the new or modified column values, if any. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the row that was inserted, if any. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The number of arguments to the function being sought. + + + The name of the function being sought. + + + Upon success, this parameter must be modified to contain the + object instance responsible for + implementing the specified function. + + + Upon success, this parameter must be modified to contain the + native user-data pointer associated with + . + + + Non-zero if the specified function was found; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The new name for the virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier under which the the current state of + the virtual table should be saved. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer used to indicate that any saved states with an + identifier greater than or equal to this should be deleted by the + virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier used to specify a specific saved + state for the virtual table for it to restore itself back to, which + should also have the effect of deleting all saved states with an + integer identifier greater than this one. + + + A standard SQLite return code. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being + called from the finalizer. + + + + + Finalizes this object instance. + + + + + Returns or sets a boolean value indicating whether virtual table + errors should be logged using the class. + + + + + Returns or sets a boolean value indicating whether exceptions + caught in the + method, + method, and the + method should be logged using the + class. + + + + + Returns or sets a boolean value indicating whether virtual table + errors should be logged using the class. + + + + + Returns or sets a boolean value indicating whether exceptions + caught in the + method, + method, and the + method should be logged using the + class. + + + + + Returns non-zero if the schema for the virtual table has been + declared. + + + + + Returns the name of the module as it was registered with the SQLite + core library. + + + + + This class implements the + interface by forwarding those method calls to the + object instance it contains. If the + contained object instance is null, all + the methods simply generate an + error. + + + + + This is the value that is always used for the "logErrors" + parameter to the various static error handling methods provided + by the class. + + + + + This is the error message text used when the contained + object instance is not available + for any reason. + + + + + The object instance used to provide + an implementation of the + interface. + + + + + Constructs an instance of this class. + + + The object instance used to provide + an implementation of the + interface. + + + + + Sets the table error message to one that indicates the native + module implementation is not available. + + + The native pointer to the sqlite3_vtab derived structure. + + + The value of . + + + + + Sets the table error message to one that indicates the native + module implementation is not available. + + + The native pointer to the sqlite3_vtab_cursor derived + structure. + + + The value of . + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being + called from the finalizer. + + + + + Finalizes this object instance. + + + + + This class represents a virtual table cursor to be used with the + class. It is not sealed and may + be used as the base class for any user-defined virtual table cursor + class that wraps an object instance. + + + + + The instance provided when this cursor + was created. + + + + + This value will be non-zero if false has been returned from the + method. + + + + + Constructs an instance of this class. + + + The object instance associated + with this object instance. + + + The instance to expose as a virtual + table cursor. + + + + + Advances to the next row of the virtual table cursor using the + method of the + object instance. + + + Non-zero if the current row is valid; zero otherwise. If zero is + returned, no further rows are available. + + + + + Resets the virtual table cursor position, also invalidating the + current row, using the method of + the object instance. + + + + + Closes the virtual table cursor. This method must not throw any + exceptions. + + + + + Throws an if the virtual + table cursor has been closed. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + Returns the value for the current row of the virtual table cursor + using the property of the + object instance. + + + + + Returns non-zero if the end of the virtual table cursor has been + seen (i.e. no more rows are available, including the current one). + + + + + Returns non-zero if the virtual table cursor is open. + + + + + This class implements a virtual table module that exposes an + object instance as a read-only virtual + table. It is not sealed and may be used as the base class for any + user-defined virtual table class that wraps an + object instance. The following short + example shows it being used to treat an array of strings as a table + data source: + + public static class Sample + { + public static void Main() + { + using (SQLiteConnection connection = new SQLiteConnection( + "Data Source=:memory:;")) + { + connection.Open(); + + connection.CreateModule(new SQLiteModuleEnumerable( + "sampleModule", new string[] { "one", "two", "three" })); + + using (SQLiteCommand command = connection.CreateCommand()) + { + command.CommandText = + "CREATE VIRTUAL TABLE t1 USING sampleModule;"; + + command.ExecuteNonQuery(); + } + + using (SQLiteCommand command = connection.CreateCommand()) + { + command.CommandText = "SELECT * FROM t1;"; + + using (SQLiteDataReader dataReader = command.ExecuteReader()) + { + while (dataReader.Read()) + Console.WriteLine(dataReader[0].ToString()); + } + } + + connection.Close(); + } + } + } + + + + + + This class implements a virtual table module that does nothing by + providing "empty" implementations for all of the + interface methods. The result + codes returned by these "empty" method implementations may be + controlled on a per-method basis by using and/or overriding the + , + , + , + , and + methods from within derived classes. + + + + + This field is used to store the + values to return, on a per-method basis, for all methods that are + part of the interface. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + + + Determines the default value to be + returned by methods of the + interface that lack an overridden implementation in all classes + derived from the class. + + + The value that should be returned + by all interface methods unless + a more specific result code has been set for that interface method. + + + + + Converts a value into a boolean + return value for use with the + method. + + + The value to convert. + + + The value. + + + + + Converts a value into a boolean + return value for use with the + method. + + + The value to convert. + + + The value. + + + + + Determines the value that should be + returned by the specified + interface method if it lack an overridden implementation. If no + specific value is available (or set) + for the specified method, the value + returned by the method will be + returned instead. + + + The name of the method. Currently, this method must be part of + the interface. + + + The value that should be returned + by the interface method. + + + + + Sets the value that should be + returned by the specified + interface method if it lack an overridden implementation. + + + The name of the method. Currently, this method must be part of + the interface. + + + The value that should be returned + by the interface method. + + + Non-zero upon success. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + The CREATE TABLE statement used to declare the schema for the + virtual table. + + + + + The instance containing the backing data + for the virtual table. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + The instance to expose as a virtual + table. This parameter cannot be null. + + + + + Determines the SQL statement used to declare the virtual table. + This method should be overridden in derived classes if they require + a custom virtual table schema. + + + The SQL statement used to declare the virtual table -OR- null if it + cannot be determined. + + + + + Sets the table error message to one that indicates the virtual + table cursor is of the wrong type. + + + The object instance. + + + The value of . + + + + + Sets the table error message to one that indicates the virtual + table cursor has no current row. + + + The object instance. + + + The value of . + + + + + Determines the string to return as the column value for the object + instance value. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to return a string representation for. + + + The string representation of the specified object instance or null + upon failure. + + + + + Constructs an unique row identifier from two + values. The first value + must contain the row sequence number for the current row and the + second value must contain the hash code of the enumerator value + for the current row. + + + The integer row sequence number for the current row. + + + The hash code of the enumerator value for the current row. + + + The unique row identifier or zero upon failure. + + + + + Determines the unique row identifier for the current row. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to return a unique row identifier for. + + + The unique row identifier or zero upon failure. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + This class represents a virtual table cursor to be used with the + class. It is not sealed and may + be used as the base class for any user-defined virtual table cursor + class that wraps an object instance. + + + + + The instance provided when this + cursor was created. + + + + + Constructs an instance of this class. + + + The object instance associated + with this object instance. + + + The instance to expose as a virtual + table cursor. + + + + + Closes the virtual table cursor. This method must not throw any + exceptions. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + Returns the value for the current row of the virtual table cursor + using the property of the + object instance. + + + + + This class implements a virtual table module that exposes an + object instance as a read-only virtual + table. It is not sealed and may be used as the base class for any + user-defined virtual table class that wraps an + object instance. + + + + + The instance containing the backing + data for the virtual table. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + The instance to expose as a virtual + table. This parameter cannot be null. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + +
+
diff --git a/packages/System.Data.SQLite.1.0.90.0/lib/net40/System.Data.SQLite.Linq.dll b/packages/System.Data.SQLite.1.0.90.0/lib/net40/System.Data.SQLite.Linq.dll new file mode 100644 index 000000000..d9e101d57 Binary files /dev/null and b/packages/System.Data.SQLite.1.0.90.0/lib/net40/System.Data.SQLite.Linq.dll differ diff --git a/packages/System.Data.SQLite.1.0.90.0/lib/net40/System.Data.SQLite.dll b/packages/System.Data.SQLite.1.0.90.0/lib/net40/System.Data.SQLite.dll new file mode 100644 index 000000000..833b8b283 Binary files /dev/null and b/packages/System.Data.SQLite.1.0.90.0/lib/net40/System.Data.SQLite.dll differ diff --git a/packages/System.Data.SQLite.1.0.90.0/lib/net40/System.Data.SQLite.xml b/packages/System.Data.SQLite.1.0.90.0/lib/net40/System.Data.SQLite.xml new file mode 100644 index 000000000..67db7df4c --- /dev/null +++ b/packages/System.Data.SQLite.1.0.90.0/lib/net40/System.Data.SQLite.xml @@ -0,0 +1,12758 @@ + + + + System.Data.SQLite + + + + + Defines a source code identifier custom attribute for an assembly + manifest. + + + + + Constructs an instance of this attribute class using the specified + source code identifier value. + + + The source code identifier value to use. + + + + + Gets the source code identifier value. + + + + + Defines a source code time-stamp custom attribute for an assembly + manifest. + + + + + Constructs an instance of this attribute class using the specified + source code time-stamp value. + + + The source code time-stamp value to use. + + + + + Gets the source code time-stamp value. + + + + + This is the method signature for the SQLite core library logging callback + function for use with sqlite3_log() and the SQLITE_CONFIG_LOG. + + WARNING: This delegate is used more-or-less directly by native code, do + not modify its type signature. + + + The extra data associated with this message, if any. + + + The error code associated with this message. + + + The message string to be logged. + + + + + This class implements SQLiteBase completely, and is the guts of the code that interop's SQLite with .NET + + + + + This internal class provides the foundation of SQLite support. It defines all the abstract members needed to implement + a SQLite data provider, and inherits from SQLiteConvert which allows for simple translations of string to and from SQLite. + + + + + This base class provides datatype conversion services for the SQLite provider. + + + + + The format string for DateTime values when using the InvariantCulture or CurrentCulture formats. + + + + + The value for the Unix epoch (e.g. January 1, 1970 at midnight, in UTC). + + + + + The value of the OLE Automation epoch represented as a Julian day. + + + + + An array of ISO-8601 DateTime formats that we support parsing. + + + + + The internal default format for UTC DateTime values when converting + to a string. + + + + + The internal default format for local DateTime values when converting + to a string. + + + + + An UTF-8 Encoding instance, so we can convert strings to and from UTF-8 + + + + + The default DateTime format for this instance. + + + + + The default DateTimeKind for this instance. + + + + + The default DateTime format string for this instance. + + + + + Initializes the conversion class + + The default date/time format to use for this instance + The DateTimeKind to use. + The DateTime format string to use. + + + + Converts a string to a UTF-8 encoded byte array sized to include a null-terminating character. + + The string to convert to UTF-8 + A byte array containing the converted string plus an extra 0 terminating byte at the end of the array. + + + + Convert a DateTime to a UTF-8 encoded, zero-terminated byte array. + + + This function is a convenience function, which first calls ToString() on the DateTime, and then calls ToUTF8() with the + string result. + + The DateTime to convert. + The UTF-8 encoded string, including a 0 terminating byte at the end of the array. + + + + Converts a UTF-8 encoded IntPtr of the specified length into a .NET string + + The pointer to the memory where the UTF-8 string is encoded + The number of bytes to decode + A string containing the translated character(s) + + + + Converts a UTF-8 encoded IntPtr of the specified length into a .NET string + + The pointer to the memory where the UTF-8 string is encoded + The number of bytes to decode + A string containing the translated character(s) + + + + Converts a string into a DateTime, using the DateTimeFormat, DateTimeKind, + and DateTimeFormatString specified for the connection when it was opened. + + + Acceptable ISO8601 DateTime formats are: + + THHmmssK + THHmmK + HH:mm:ss.FFFFFFFK + HH:mm:ssK + HH:mmK + yyyy-MM-dd HH:mm:ss.FFFFFFFK + yyyy-MM-dd HH:mm:ssK + yyyy-MM-dd HH:mmK + yyyy-MM-ddTHH:mm:ss.FFFFFFFK + yyyy-MM-ddTHH:mmK + yyyy-MM-ddTHH:mm:ssK + yyyyMMddHHmmssK + yyyyMMddHHmmK + yyyyMMddTHHmmssFFFFFFFK + THHmmss + THHmm + HH:mm:ss.FFFFFFF + HH:mm:ss + HH:mm + yyyy-MM-dd HH:mm:ss.FFFFFFF + yyyy-MM-dd HH:mm:ss + yyyy-MM-dd HH:mm + yyyy-MM-ddTHH:mm:ss.FFFFFFF + yyyy-MM-ddTHH:mm + yyyy-MM-ddTHH:mm:ss + yyyyMMddHHmmss + yyyyMMddHHmm + yyyyMMddTHHmmssFFFFFFF + yyyy-MM-dd + yyyyMMdd + yy-MM-dd + + If the string cannot be matched to one of the above formats -OR- + the DateTimeFormatString if one was provided, an exception will + be thrown. + + The string containing either a long integer number of 100-nanosecond units since + System.DateTime.MinValue, a Julian day double, an integer number of seconds since the Unix epoch, a + culture-independent formatted date and time string, a formatted date and time string in the current + culture, or an ISO8601-format string. + A DateTime value + + + + Converts a string into a DateTime, using the specified DateTimeFormat, + DateTimeKind and DateTimeFormatString. + + + Acceptable ISO8601 DateTime formats are: + + THHmmssK + THHmmK + HH:mm:ss.FFFFFFFK + HH:mm:ssK + HH:mmK + yyyy-MM-dd HH:mm:ss.FFFFFFFK + yyyy-MM-dd HH:mm:ssK + yyyy-MM-dd HH:mmK + yyyy-MM-ddTHH:mm:ss.FFFFFFFK + yyyy-MM-ddTHH:mmK + yyyy-MM-ddTHH:mm:ssK + yyyyMMddHHmmssK + yyyyMMddHHmmK + yyyyMMddTHHmmssFFFFFFFK + THHmmss + THHmm + HH:mm:ss.FFFFFFF + HH:mm:ss + HH:mm + yyyy-MM-dd HH:mm:ss.FFFFFFF + yyyy-MM-dd HH:mm:ss + yyyy-MM-dd HH:mm + yyyy-MM-ddTHH:mm:ss.FFFFFFF + yyyy-MM-ddTHH:mm + yyyy-MM-ddTHH:mm:ss + yyyyMMddHHmmss + yyyyMMddHHmm + yyyyMMddTHHmmssFFFFFFF + yyyy-MM-dd + yyyyMMdd + yy-MM-dd + + If the string cannot be matched to one of the above formats -OR- + the DateTimeFormatString if one was provided, an exception will + be thrown. + + The string containing either a long integer number of 100-nanosecond units since + System.DateTime.MinValue, a Julian day double, an integer number of seconds since the Unix epoch, a + culture-independent formatted date and time string, a formatted date and time string in the current + culture, or an ISO8601-format string. + The SQLiteDateFormats to use. + The DateTimeKind to use. + The DateTime format string to use. + A DateTime value + + + + Converts a julianday value into a DateTime + + The value to convert + A .NET DateTime + + + + Converts a julianday value into a DateTime + + The value to convert + The DateTimeKind to use. + A .NET DateTime + + + + Converts the specified number of seconds from the Unix epoch into a + value. + + + The number of whole seconds since the Unix epoch. + + + Either Utc or Local time. + + + The new value. + + + + + Converts the specified number of ticks since the epoch into a + value. + + + The number of whole ticks since the epoch. + + + Either Utc or Local time. + + + The new value. + + + + + Converts a DateTime struct to a JulianDay double + + The DateTime to convert + The JulianDay value the Datetime represents + + + + Converts a DateTime struct to the whole number of seconds since the + Unix epoch. + + The DateTime to convert + The whole number of seconds since the Unix epoch + + + + Returns the DateTime format string to use for the specified DateTimeKind. + If is not null, it will be returned verbatim. + + The DateTimeKind to use. + The DateTime format string to use. + + The DateTime format string to use for the specified DateTimeKind. + + + + + Converts a string into a DateTime, using the DateTimeFormat, DateTimeKind, + and DateTimeFormatString specified for the connection when it was opened. + + The DateTime value to convert + Either a string containing the long integer number of 100-nanosecond units since System.DateTime.MinValue, a + Julian day double, an integer number of seconds since the Unix epoch, a culture-independent formatted date and time + string, a formatted date and time string in the current culture, or an ISO8601-format date/time string. + + + + Internal function to convert a UTF-8 encoded IntPtr of the specified length to a DateTime. + + + This is a convenience function, which first calls ToString() on the IntPtr to convert it to a string, then calls + ToDateTime() on the string to return a DateTime. + + A pointer to the UTF-8 encoded string + The length in bytes of the string + The parsed DateTime value + + + + Smart method of splitting a string. Skips quoted elements, removes the quotes. + + + This split function works somewhat like the String.Split() function in that it breaks apart a string into + pieces and returns the pieces as an array. The primary differences are: + + Only one character can be provided as a separator character + Quoted text inside the string is skipped over when searching for the separator, and the quotes are removed. + + Thus, if splitting the following string looking for a comma:
+ One,Two, "Three, Four", Five
+
+ The resulting array would contain
+ [0] One
+ [1] Two
+ [2] Three, Four
+ [3] Five
+
+ Note that the leading and trailing spaces were removed from each item during the split. +
+ Source string to split apart + Separator character + A string array of the split up elements +
+ + + Splits the specified string into multiple strings based on a separator + and returns the result as an array of strings. + + + The string to split into pieces based on the separator character. If + this string is null, null will always be returned. If this string is + empty, an array of zero strings will always be returned. + + + The character used to divide the original string into sub-strings. + This character cannot be a backslash or a double-quote; otherwise, no + work will be performed and null will be returned. + + + If this parameter is non-zero, all double-quote characters will be + retained in the returned list of strings; otherwise, they will be + dropped. + + + Upon failure, this parameter will be modified to contain an appropriate + error message. + + + The new array of strings or null if the input string is null -OR- the + separator character is a backslash or a double-quote -OR- the string + contains an unbalanced backslash or double-quote character. + + + + + Convert a value to true or false. + + A string or number representing true or false + + + + + Convert a string to true or false. + + A string representing true or false + + + "yes", "no", "y", "n", "0", "1", "on", "off" as well as Boolean.FalseString and Boolean.TrueString will all be + converted to a proper boolean value. + + + + + Converts a SQLiteType to a .NET Type object + + The SQLiteType to convert + Returns a .NET Type object + + + + For a given intrinsic type, return a DbType + + The native type to convert + The corresponding (closest match) DbType + + + + Returns the ColumnSize for the given DbType + + The DbType to get the size of + + + + + Determines the type name for the given database value type. + + The database value type. + The flags associated with the parent connection object. + The type name or an empty string if it cannot be determined. + + + + Convert a DbType to a Type + + The DbType to convert from + The closest-match .NET type + + + + For a given type, return the closest-match SQLite TypeAffinity, which only understands a very limited subset of types. + + The type to evaluate + The SQLite type affinity for that type. + + + + Builds and returns a map containing the database column types + recognized by this provider. + + + A map containing the database column types recognized by this + provider. + + + + + For a given type name, return a closest-match .NET type + + The name of the type to match + The flags associated with the parent connection object. + The .NET DBType the text evaluates to. + + + + The error code used for logging exceptions caught in user-provided + code. + + + + + Sets the status of the memory usage tracking subsystem in the SQLite core library. By default, this is enabled. + If this is disabled, memory usage tracking will not be performed. This is not really a per-connection value, it is + global to the process. + + Non-zero to enable memory usage tracking, zero otherwise. + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Attempts to free as much heap memory as possible for the database connection. + + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Shutdown the SQLite engine so that it can be restarted with different config options. + We depend on auto initialization to recover. + + + + + Determines if the associated native connection handle is open. + + + Non-zero if a database connection is open. + + + + + Opens a database. + + + Implementers should call SQLiteFunction.BindFunctions() and save the array after opening a connection + to bind all attributed user-defined functions and collating sequences to the new connection. + + The filename of the database to open. SQLite automatically creates it if it doesn't exist. + The flags associated with the parent connection object + The open flags to use when creating the connection + The maximum size of the pool for the given filename + If true, the connection can be pulled from the connection pool + + + + Closes the currently-open database. + + + After the database has been closed implemeters should call SQLiteFunction.UnbindFunctions() to deallocate all interop allocated + memory associated with the user-defined functions and collating sequences tied to the closed connection. + + Non-zero if the operation is allowed to throw exceptions, zero otherwise. + + + + Sets the busy timeout on the connection. SQLiteCommand will call this before executing any command. + + The number of milliseconds to wait before returning SQLITE_BUSY + + + + Returns the text of the last error issued by SQLite + + + + + + Returns the text of the last error issued by SQLite -OR- the specified default error text if + none is available from the SQLite core library. + + + The error text to return in the event that one is not available from the SQLite core library. + + + The error text. + + + + + When pooling is enabled, force this connection to be disposed rather than returned to the pool + + + + + When pooling is enabled, returns the number of pool entries matching the current file name. + + The number of pool entries matching the current file name. + + + + Prepares a SQL statement for execution. + + The source connection preparing the command. Can be null for any caller except LINQ + The SQL command text to prepare + The previous statement in a multi-statement command, or null if no previous statement exists + The timeout to wait before aborting the prepare + The remainder of the statement that was not processed. Each call to prepare parses the + SQL up to to either the end of the text or to the first semi-colon delimiter. The remaining text is returned + here for a subsequent call to Prepare() until all the text has been processed. + Returns an initialized SQLiteStatement. + + + + Steps through a prepared statement. + + The SQLiteStatement to step through + True if a row was returned, False if not. + + + + Resets a prepared statement so it can be executed again. If the error returned is SQLITE_SCHEMA, + transparently attempt to rebuild the SQL statement and throw an error if that was not possible. + + The statement to reset + Returns -1 if the schema changed while resetting, 0 if the reset was sucessful or 6 (SQLITE_LOCKED) if the reset failed due to a lock + + + + Attempts to interrupt the query currently executing on the associated + native database connection. + + + + + This function binds a user-defined functions to the connection. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + + + + Calls the native SQLite core library in order to create a disposable + module containing the implementation of a virtual table. + + + The module object to be used when creating the native disposable module. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to cleanup the resources + associated with a module containing the implementation of a virtual table. + + + The module object previously passed to the + method. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to declare a virtual table + in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + being declared. + + + The string containing the SQL statement describing the virtual table to + be declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Calls the native SQLite core library in order to declare a virtual table + function in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + function being declared. + + + The number of arguments to the function being declared. + + + The name of the function being declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Enables or disabled extension loading by SQLite. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + + Enables or disabled extened result codes returned by SQLite + + true to enable extended result codes, false to disable. + + + + + Returns the numeric result code for the most recent failed SQLite API call + associated with the database connection. + + Result code + + + + Returns the extended numeric result code for the most recent failed SQLite API call + associated with the database connection. + + Extended result code + + + + Add a log message via the SQLite sqlite3_log interface. + + Error code to be logged with the message. + String to be logged. Unlike the SQLite sqlite3_log() + interface, this should be pre-formatted. Consider using the + String.Format() function. + + + + + Checks if the SQLite core library has been initialized in the current process. + + + Non-zero if the SQLite core library has been initialized in the current process, + zero otherwise. + + + + + Creates a new SQLite backup object based on the provided destination + database connection. The source database connection is the one + associated with this object. The source and destination database + connections cannot be the same. + + The destination database connection. + The destination database name. + The source database name. + The newly created backup object. + + + + Copies up to N pages from the source database to the destination + database associated with the specified backup object. + + The backup object to use. + + The number of pages to copy or negative to copy all remaining pages. + + + Set to true if the operation needs to be retried due to database + locking issues. + + + True if there are more pages to be copied, false otherwise. + + + + + Returns the number of pages remaining to be copied from the source + database to the destination database associated with the specified + backup object. + + The backup object to check. + The number of pages remaining to be copied. + + + + Returns the total number of pages in the source database associated + with the specified backup object. + + The backup object to check. + The total number of pages in the source database. + + + + Destroys the backup object, rolling back any backup that may be in + progess. + + The backup object to destroy. + + + + Returns the error message for the specified SQLite return code using + the internal static lookup table. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns the error message for the specified SQLite return code using + the sqlite3_errstr() function, falling back to the internal lookup + table if necessary. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns a string representing the active version of SQLite + + + + + Returns an integer representing the active version of SQLite + + + + + Returns the rowid of the most recent successful INSERT into the database from this connection. + + + + + Returns the number of changes the last executing insert/update caused. + + + + + Returns the amount of memory (in bytes) currently in use by the SQLite core library. This is not really a per-connection + value, it is global to the process. + + + + + Returns the maximum amount of memory (in bytes) used by the SQLite core library since the high-water mark was last reset. + This is not really a per-connection value, it is global to the process. + + + + + Returns non-zero if the underlying native connection handle is owned by this instance. + + + + + Returns non-zero if the given database connection is in autocommit mode. + Autocommit mode is on by default. Autocommit mode is disabled by a BEGIN + statement. Autocommit mode is re-enabled by a COMMIT or ROLLBACK. + + + + + The opaque pointer returned to us by the sqlite provider + + + + + The user-defined functions registered on this connection + + + + + The modules created using this connection. + + + + + Constructs the object used to interact with the SQLite core library + using the UTF-8 text encoding. + + + The DateTime format to be used when converting string values to a + DateTime and binding DateTime parameters. + + + The to be used when creating DateTime + values. + + + The format string to be used when parsing and formatting DateTime + values. + + + The native handle to be associated with the database connection. + + + The fully qualified file name associated with . + + + Non-zero if the newly created object instance will need to dispose + of when it is no longer needed. + + + + + This method attempts to dispose of all the derived + object instances currently associated with the native database connection. + + + + + Attempts to interrupt the query currently executing on the associated + native database connection. + + + + + This function binds a user-defined function to the connection. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + + + + Attempts to free as much heap memory as possible for the database connection. + + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Attempts to free N bytes of heap memory by deallocating non-essential memory + allocations held by the database library. Memory used to cache database pages + to improve performance is an example of non-essential memory. This is a no-op + returning zero if the SQLite core library was not compiled with the compile-time + option SQLITE_ENABLE_MEMORY_MANAGEMENT. Optionally, attempts to reset and/or + compact the Win32 native heap, if applicable. + + + The requested number of bytes to free. + + + Non-zero to attempt a heap reset. + + + Non-zero to attempt heap compaction. + + + The number of bytes actually freed. This value may be zero. + + + This value will be non-zero if the heap reset was successful. + + + The size of the largest committed free block in the heap, in bytes. + This value will be zero unless heap compaction is enabled. + + + A standard SQLite return code (i.e. zero for success and non-zero + for failure). + + + + + Shutdown the SQLite engine so that it can be restarted with different + configuration options. We depend on auto initialization to recover. + + Returns a standard SQLite result code. + + + + Shutdown the SQLite engine so that it can be restarted with different + configuration options. We depend on auto initialization to recover. + + + Non-zero to reset the database and temporary directories to their + default values, which should be null for both. This parameter has no + effect on non-Windows operating systems. + + Returns a standard SQLite result code. + + + + Determines if the associated native connection handle is open. + + + Non-zero if the associated native connection handle is open. + + + + + Calls the native SQLite core library in order to create a disposable + module containing the implementation of a virtual table. + + + The module object to be used when creating the native disposable module. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to cleanup the resources + associated with a module containing the implementation of a virtual table. + + + The module object previously passed to the + method. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to declare a virtual table + in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + being declared. + + + The string containing the SQL statement describing the virtual table to + be declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Calls the native SQLite core library in order to declare a virtual table + function in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + function being declared. + + + The number of arguments to the function being declared. + + + The name of the function being declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Enables or disabled extension loading by SQLite. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + Enables or disabled extended result codes returned by SQLite + + + Gets the last SQLite error code + + + Gets the last SQLite extended error code + + + Add a log message via the SQLite sqlite3_log interface. + + + Add a log message via the SQLite sqlite3_log interface. + + + + Allows the setting of a logging callback invoked by SQLite when a + log event occurs. Only one callback may be set. If NULL is passed, + the logging callback is unregistered. + + The callback function to invoke. + Returns a result code + + + + Creates a new SQLite backup object based on the provided destination + database connection. The source database connection is the one + associated with this object. The source and destination database + connections cannot be the same. + + The destination database connection. + The destination database name. + The source database name. + The newly created backup object. + + + + Copies up to N pages from the source database to the destination + database associated with the specified backup object. + + The backup object to use. + + The number of pages to copy, negative to copy all remaining pages. + + + Set to true if the operation needs to be retried due to database + locking issues; otherwise, set to false. + + + True if there are more pages to be copied, false otherwise. + + + + + Returns the number of pages remaining to be copied from the source + database to the destination database associated with the specified + backup object. + + The backup object to check. + The number of pages remaining to be copied. + + + + Returns the total number of pages in the source database associated + with the specified backup object. + + The backup object to check. + The total number of pages in the source database. + + + + Destroys the backup object, rolling back any backup that may be in + progess. + + The backup object to destroy. + + + + Determines if the SQLite core library has been initialized for the + current process. + + + A boolean indicating whether or not the SQLite core library has been + initialized for the current process. + + + + + Determines if the SQLite core library has been initialized for the + current process. + + + A boolean indicating whether or not the SQLite core library has been + initialized for the current process. + + + + + Helper function to retrieve a column of data from an active statement. + + The statement being step()'d through + The flags associated with the connection. + The column index to retrieve + The type of data contained in the column. If Uninitialized, this function will retrieve the datatype information. + Returns the data in the column + + + + Returns non-zero if the underlying native connection handle is owned + by this instance. + + + + + Alternate SQLite3 object, overriding many text behaviors to support UTF-16 (Unicode) + + + + + Constructs the object used to interact with the SQLite core library + using the UTF-8 text encoding. + + + The DateTime format to be used when converting string values to a + DateTime and binding DateTime parameters. + + + The to be used when creating DateTime + values. + + + The format string to be used when parsing and formatting DateTime + values. + + + The native handle to be associated with the database connection. + + + The fully qualified file name associated with . + + + Non-zero if the newly created object instance will need to dispose + of when it is no longer needed. + + + + + Overrides SQLiteConvert.ToString() to marshal UTF-16 strings instead of UTF-8 + + A pointer to a UTF-16 string + The length (IN BYTES) of the string + A .NET string + + + + Represents a single SQL backup in SQLite. + + + + + The underlying SQLite object this backup is bound to. + + + + + The actual backup handle. + + + + + The destination database for the backup. + + + + + The destination database name for the backup. + + + + + The source database for the backup. + + + + + The source database name for the backup. + + + + + The last result from the StepBackup method of the SQLite3 class. + This is used to determine if the call to the FinishBackup method of + the SQLite3 class should throw an exception when it receives a non-Ok + return code from the core SQLite library. + + + + + Initializes the backup. + + The base SQLite object. + The backup handle. + The destination database for the backup. + The destination database name for the backup. + The source database for the backup. + The source database name for the backup. + + + + Disposes and finalizes the backup. + + + + + The extra behavioral flags that can be applied to a connection. + + + + + No extra flags. + + + + + Enable logging of all SQL statements to be prepared. + + + + + Enable logging of all bound parameter types and raw values. + + + + + Enable logging of all bound parameter strongly typed values. + + + + + Enable logging of all exceptions caught from user-provided + managed code called from native code via delegates. + + + + + Enable logging of backup API errors. + + + + + Skip adding the extension functions provided by the native + interop assembly. + + + + + When binding parameter values with the + type, use the interop method that accepts an + value. + + + + + When binding parameter values, always bind them as though they were + plain text (i.e. no numeric, date/time, or other conversions should + be attempted). + + + + + When returning column values, always return them as though they were + plain text (i.e. no numeric, date/time, or other conversions should + be attempted). + + + + + Prevent this object instance from + loading extensions. + + + + + Prevent this object instance from + creating virtual table modules. + + + + + Skip binding any functions provided by other managed assemblies when + opening the connection. + + + + + Skip setting the logging related properties of the + object instance that was passed to + the method. + + + + + Enable logging of all virtual table module errors seen by the + method. + + + + + Enable logging of certain virtual table module exceptions that cannot + be easily discovered via other means. + + + + + Enable tracing of potentially important [non-fatal] error conditions + that cannot be easily reported through other means. + + + + + When binding and returning column values, always treat them as though + they were plain text (i.e. no numeric, date/time, or other conversions + should be attempted). + + + + + Enable all logging. + + + + + The default extra flags for new connections. + + + + + SQLite implementation of DbCommand. + + + + + The default connection string to be used when creating a temporary + connection to execute a command via the static + or + + methods. + + + + + The command text this command is based on + + + + + The connection the command is associated with + + + + + The version of the connection the command is associated with + + + + + Indicates whether or not a DataReader is active on the command. + + + + + The timeout for the command, kludged because SQLite doesn't support per-command timeout values + + + + + Designer support + + + + + Used by DbDataAdapter to determine updating behavior + + + + + The collection of parameters for the command + + + + + The SQL command text, broken into individual SQL statements as they are executed + + + + + Unprocessed SQL text that has not been executed + + + + + Transaction associated with this command + + + + + Constructs a new SQLiteCommand + + + Default constructor + + + + + Initializes the command with the given command text + + The SQL command text + + + + Initializes the command with the given SQL command text and attach the command to the specified + connection. + + The SQL command text + The connection to associate with the command + + + + Initializes the command and associates it with the specified connection. + + The connection to associate with the command + + + + Initializes a command with the given SQL, connection and transaction + + The SQL command text + The connection to associate with the command + The transaction the command should be associated with + + + + Disposes of the command and clears all member variables + + Whether or not the class is being explicitly or implicitly disposed + + + + This method attempts to query the flags associated with the database + connection in use. If the database connection is disposed, the default + flags will be returned. + + + The command containing the databse connection to query the flags from. + + + The connection flags value. + + + + + Clears and destroys all statements currently prepared + + + + + Builds an array of prepared statements for each complete SQL statement in the command text + + + + + Not implemented + + + + + Forwards to the local CreateParameter() function + + + + + + Create a new parameter + + + + + + This function ensures there are no active readers, that we have a valid connection, + that the connection is open, that all statements are prepared and all parameters are assigned + in preparation for allocating a data reader. + + + + + Creates a new SQLiteDataReader to execute/iterate the array of SQLite prepared statements + + The behavior the data reader should adopt + Returns a SQLiteDataReader object + + + + This method creates a new connection, executes the query using the given + execution type, closes the connection, and returns the results. If the + connection string is null, a temporary in-memory database connection will + be used. + + + The text of the command to be executed. + + + The execution type for the command. This is used to determine which method + of the command object to call, which then determines the type of results + returned, if any. + + + The connection string to the database to be opened, used, and closed. If + this parameter is null, a temporary in-memory databse will be used. + + + The SQL parameter values to be used when building the command object to be + executed, if any. + + + The results of the query -OR- null if no results were produced from the + given execution type. + + + + + This method creates a new connection, executes the query using the given + execution type and command behavior, closes the connection, and returns + the results. If the connection string is null, a temporary in-memory + database connection will be used. + + + The text of the command to be executed. + + + The execution type for the command. This is used to determine which method + of the command object to call, which then determines the type of results + returned, if any. + + + The command behavior flags for the command. + + + The connection string to the database to be opened, used, and closed. If + this parameter is null, a temporary in-memory databse will be used. + + + The SQL parameter values to be used when building the command object to be + executed, if any. + + + The results of the query -OR- null if no results were produced from the + given execution type. + + + + + Overrides the default behavior to return a SQLiteDataReader specialization class + + The flags to be associated with the reader. + A SQLiteDataReader + + + + Overrides the default behavior of DbDataReader to return a specialized SQLiteDataReader class + + A SQLiteDataReader + + + + Called by the SQLiteDataReader when the data reader is closed. + + + + + Execute the command and return the number of rows inserted/updated affected by it. + + The number of rows inserted/updated affected by it. + + + + Execute the command and return the number of rows inserted/updated affected by it. + + The flags to be associated with the reader. + The number of rows inserted/updated affected by it. + + + + Execute the command and return the first column of the first row of the resultset + (if present), or null if no resultset was returned. + + The first column of the first row of the first resultset from the query. + + + + Execute the command and return the first column of the first row of the resultset + (if present), or null if no resultset was returned. + + The flags to be associated with the reader. + The first column of the first row of the first resultset from the query. + + + + Does nothing. Commands are prepared as they are executed the first time, and kept in prepared state afterwards. + + + + + Clones a command, including all its parameters + + A new SQLiteCommand with the same commandtext, connection and parameters + + + + The SQL command text associated with the command + + + + + The amount of time to wait for the connection to become available before erroring out + + + + + The type of the command. SQLite only supports CommandType.Text + + + + + The connection associated with this command + + + + + Forwards to the local Connection property + + + + + Returns the SQLiteParameterCollection for the given command + + + + + Forwards to the local Parameters property + + + + + The transaction associated with this command. SQLite only supports one transaction per connection, so this property forwards to the + command's underlying connection. + + + + + Forwards to the local Transaction property + + + + + Sets the method the SQLiteCommandBuilder uses to determine how to update inserted or updated rows in a DataTable. + + + + + Determines if the command is visible at design time. Defaults to True. + + + + + SQLite implementation of DbCommandBuilder. + + + + + Default constructor + + + + + Initializes the command builder and associates it with the specified data adapter. + + + + + + Minimal amount of parameter processing. Primarily sets the DbType for the parameter equal to the provider type in the schema + + The parameter to use in applying custom behaviors to a row + The row to apply the parameter to + The type of statement + Whether the application of the parameter is part of a WHERE clause + + + + Returns a valid named parameter + + The name of the parameter + Error + + + + Returns a named parameter for the given ordinal + + The i of the parameter + Error + + + + Returns a placeholder character for the specified parameter i. + + The index of the parameter to provide a placeholder for + Returns a named parameter + + + + Sets the handler for receiving row updating events. Used by the DbCommandBuilder to autogenerate SQL + statements that may not have previously been generated. + + A data adapter to receive events on. + + + + Returns the automatically-generated SQLite command to delete rows from the database + + + + + + Returns the automatically-generated SQLite command to delete rows from the database + + + + + + + Returns the automatically-generated SQLite command to update rows in the database + + + + + + Returns the automatically-generated SQLite command to update rows in the database + + + + + + + Returns the automatically-generated SQLite command to insert rows into the database + + + + + + Returns the automatically-generated SQLite command to insert rows into the database + + + + + + + Places brackets around an identifier + + The identifier to quote + The bracketed identifier + + + + Removes brackets around an identifier + + The quoted (bracketed) identifier + The undecorated identifier + + + + Override helper, which can help the base command builder choose the right keys for the given query + + + + + + + Gets/sets the DataAdapter for this CommandBuilder + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Event data for connection event handlers. + + + + + The type of event being raised. + + + + + The associated with this event, if any. + + + + + The transaction associated with this event, if any. + + + + + The command associated with this event, if any. + + + + + The data reader associated with this event, if any. + + + + + The critical handle associated with this event, if any. + + + + + Command or message text associated with this event, if any. + + + + + Extra data associated with this event, if any. + + + + + Constructs the object. + + The type of event being raised. + The base associated + with this event, if any. + The transaction associated with this event, if any. + The command associated with this event, if any. + The data reader associated with this event, if any. + The critical handle associated with this event, if any. + The command or message text, if any. + The extra data, if any. + + + + Raised when an event pertaining to a connection occurs. + + The connection involved. + Extra information about the event. + + + + SQLite implentation of DbConnection. + + + The property can contain the following parameter(s), delimited with a semi-colon: + + + Parameter + Values + Required + Default + + + Data Source + + This may be a file name, the string ":memory:", or any supported URI (starting with SQLite 3.7.7). + Starting with release 1.0.86.0, in order to use more than one consecutive backslash (e.g. for a + UNC path), each of the adjoining backslash characters must be doubled (e.g. "\\Network\Share\test.db" + would become "\\\\Network\Share\test.db"). + + Y + + + + Version + 3 + N + 3 + + + UseUTF16Encoding + True
False
+ N + False +
+ + DateTimeFormat + + Ticks - Use the value of DateTime.Ticks.
+ ISO8601 - Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC + DateTime values and "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values).
+ JulianDay - The interval of time in days and fractions of a day since January 1, 4713 BC.
+ UnixEpoch - The whole number of seconds since the Unix epoch (January 1, 1970).
+ InvariantCulture - Any culture-independent string value that the .NET Framework can interpret as a valid DateTime.
+ CurrentCulture - Any string value that the .NET Framework can interpret as a valid DateTime using the current culture.
+ N + ISO8601 +
+ + DateTimeKind + Unspecified - Not specified as either UTC or local time.
Utc - The time represented is UTC.
Local - The time represented is local time.
+ N + Unspecified +
+ + DateTimeFormatString + The exact DateTime format string to use for all formatting and parsing of all DateTime + values for this connection. + N + null + + + BaseSchemaName + Some base data classes in the framework (e.g. those that build SQL queries dynamically) + assume that an ADO.NET provider cannot support an alternate catalog (i.e. database) without supporting + alternate schemas as well; however, SQLite does not fit into this model. Therefore, this value is used + as a placeholder and removed prior to preparing any SQL statements that may contain it. + N + sqlite_default_schema + + + BinaryGUID + True - Store GUID columns in binary form
False - Store GUID columns as text
+ N + True +
+ + Cache Size + {size in bytes} + N + 2000 + + + Synchronous + Normal - Normal file flushing behavior
Full - Full flushing after all writes
Off - Underlying OS flushes I/O's
+ N + Full +
+ + Page Size + {size in bytes} + N + 1024 + + + Password + {password} - Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + HexPassword + {hexPassword} - Must contain a sequence of zero or more hexadecimal encoded byte values without a leading "0x" prefix. Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + Enlist + Y - Automatically enlist in distributed transactions
N - No automatic enlistment
+ N + Y +
+ + Pooling + + True - Use connection pooling.
+ False - Do not use connection pooling.

+ WARNING: When using the default connection pool implementation, + setting this property to True should be avoided by applications that make + use of COM (either directly or indirectly) due to possible deadlocks that + can occur during the finalization of some COM objects. +
+ N + False +
+ + FailIfMissing + True - Don't create the database if it does not exist, throw an error instead
False - Automatically create the database if it does not exist
+ N + False +
+ + Max Page Count + {size in pages} - Limits the maximum number of pages (limits the size) of the database + N + 0 + + + Legacy Format + True - Use the more compatible legacy 3.x database format
False - Use the newer 3.3x database format which compresses numbers more effectively
+ N + False +
+ + Default Timeout + {time in seconds}
The default command timeout
+ N + 30 +
+ + Journal Mode + Delete - Delete the journal file after a commit
Persist - Zero out and leave the journal file on disk after a commit
Off - Disable the rollback journal entirely
+ N + Delete +
+ + Read Only + True - Open the database for read only access
False - Open the database for normal read/write access
+ N + False +
+ + Max Pool Size + The maximum number of connections for the given connection string that can be in the connection pool + N + 100 + + + Default IsolationLevel + The default transaciton isolation level + N + Serializable + + + Foreign Keys + Enable foreign key constraints + N + False + + + Flags + Extra behavioral flags for the connection. See the enumeration for possible values. + N + Default + + + SetDefaults + + True - Apply the default connection settings to the opened database.
+ False - Skip applying the default connection settings to the opened database. +
+ N + True +
+ + ToFullPath + + True - Attempt to expand the data source file name to a fully qualified path before opening.
+ False - Skip attempting to expand the data source file name to a fully qualified path before opening. +
+ N + True +
+
+
+
+ + + The default "stub" (i.e. placeholder) base schema name to use when + returning column schema information. Used as the initial value of + the BaseSchemaName property. This should start with "sqlite_*" + because those names are reserved for use by SQLite (i.e. they cannot + be confused with the names of user objects). + + + + + The managed assembly containing this type. + + + + + Object used to synchronize access to the static instance data + for this class. + + + + + State of the current connection + + + + + The connection string + + + + + Nesting level of the transactions open on the connection + + + + + If set, then the connection is currently being disposed. + + + + + The default isolation level for new transactions + + + + + Whether or not the connection is enlisted in a distrubuted transaction + + + + + The base SQLite object to interop with + + + + + The database filename minus path and extension + + + + + Temporary password storage, emptied after the database has been opened + + + + + The "stub" (i.e. placeholder) base schema name to use when returning + column schema information. + + + + + The extra behavioral flags for this connection, if any. See the + enumeration for a list of + possible values. + + + + + Default command timeout + + + + + Non-zero if the built-in (i.e. framework provided) connection string + parser should be used when opening the connection. + + + + + Constructs a new SQLiteConnection object + + + Default constructor + + + + + Initializes the connection with the specified connection string. + + The connection string to use. + + + + Initializes the connection with a pre-existing native connection handle. + This constructor overload is intended to be used only by the private + method. + + + The native connection handle to use. + + + The file name corresponding to the native connection handle. + + + Non-zero if this instance owns the native connection handle and + should dispose of it when it is no longer needed. + + + + + Initializes the connection with the specified connection string. + + + The connection string to use. + + + Non-zero to parse the connection string using the built-in (i.e. + framework provided) parser when opening the connection. + + + + + Clones the settings and connection string from an existing connection. If the existing connection is already open, this + function will open its own connection, enumerate any attached databases of the original connection, and automatically + attach to them. + + The connection to copy the settings from. + + + + Raises the event. + + + The connection associated with this event. If this parameter is not + null and the specified connection cannot raise events, then the + registered event handlers will not be invoked. + + + A that contains the event data. + + + + + Creates and returns a new managed database connection handle. This + method is intended to be used by implementations of the + interface only. In theory, it + could be used by other classes; however, that usage is not supported. + + + This must be a native database connection handle returned by the + SQLite core library and it must remain valid and open during the + entire duration of the calling method. + + + The new managed database connection handle or null if it cannot be + created. + + + + + Backs up the database, using the specified database connection as the + destination. + + The destination database connection. + The destination database name. + The source database name. + + The number of pages to copy or negative to copy all remaining pages. + + + The method to invoke between each step of the backup process. This + parameter may be null (i.e. no callbacks will be performed). + + + The number of milliseconds to sleep after encountering a locking error + during the backup process. A value less than zero means that no sleep + should be performed. + + + + + Attempts to bind the specified object + instance to this connection. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + + + Creates a clone of the connection. All attached databases and user-defined functions are cloned. If the existing connection is open, the cloned connection + will also be opened. + + + + + + Creates a database file. This just creates a zero-byte file which SQLite + will turn into a database when the file is opened properly. + + The file to create + + + + Raises the state change event when the state of the connection changes + + The new connection state. If this is different + from the previous state, the event is + raised. + The event data created for the raised event, if + it was actually raised. + + + + Determines and returns the fallback default isolation level when one cannot be + obtained from an existing connection instance. + + + The fallback default isolation level for this connection instance -OR- + if it cannot be determined. + + + + + Determines and returns the default isolation level for this connection instance. + + + The default isolation level for this connection instance -OR- + if it cannot be determined. + + + + + OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. + + This parameter is ignored. + When TRUE, SQLite defers obtaining a write lock until a write operation is requested. + When FALSE, a writelock is obtained immediately. The default is TRUE, but in a multi-threaded multi-writer + environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. + Returns a SQLiteTransaction object. + + + + OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. + + When TRUE, SQLite defers obtaining a write lock until a write operation is requested. + When FALSE, a writelock is obtained immediately. The default is false, but in a multi-threaded multi-writer + environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. + Returns a SQLiteTransaction object. + + + + Creates a new if one isn't already active on the connection. + + Supported isolation levels are Serializable, ReadCommitted and Unspecified. + + Unspecified will use the default isolation level specified in the connection string. If no isolation level is specified in the + connection string, Serializable is used. + Serializable transactions are the default. In this mode, the engine gets an immediate lock on the database, and no other threads + may begin a transaction. Other threads may read from the database, but not write. + With a ReadCommitted isolation level, locks are deferred and elevated as needed. It is possible for multiple threads to start + a transaction in ReadCommitted mode, but if a thread attempts to commit a transaction while another thread + has a ReadCommitted lock, it may timeout or cause a deadlock on both threads until both threads' CommandTimeout's are reached. + + Returns a SQLiteTransaction object. + + + + Creates a new if one isn't already + active on the connection. + + Returns the new transaction object. + + + + Forwards to the local function + + Supported isolation levels are Unspecified, Serializable, and ReadCommitted + + + + + This method is not implemented; however, the + event will still be raised. + + + + + + When the database connection is closed, all commands linked to this connection are automatically reset. + + + + + Clears the connection pool associated with the connection. Any other active connections using the same database file + will be discarded instead of returned to the pool when they are closed. + + + + + + Clears all connection pools. Any active connections will be discarded instead of sent to the pool when they are closed. + + + + + Create a new and associate it with this connection. + + Returns a new command object already assigned to this connection. + + + + Forwards to the local function. + + + + + + Parses the connection string into component parts using the custom + connection string parser. + + The connection string to parse + An array of key-value pairs representing each parameter of the connection string + + + + Parses a connection string using the built-in (i.e. framework provided) + connection string parser class and returns the key/value pairs. An + exception may be thrown if the connection string is invalid or cannot be + parsed. When compiled for the .NET Compact Framework, the custom + connection string parser is always used instead because the framework + provided one is unavailable there. + + + The connection string to parse. + + + Non-zero to throw an exception if any connection string values are not of + the type. + + The list of key/value pairs. + + + + Manual distributed transaction enlistment support + + The distributed transaction to enlist in + + + + Looks for a key in the array of key/values of the parameter string. If not found, return the specified default value + + The list to look in + The key to find + The default value to return if the key is not found + The value corresponding to the specified key, or the default value if not found. + + + + Attempts to convert the string value to an enumerated value of the specified type. + + The enumerated type to convert the string value to. + The string value to be converted. + Non-zero to make the conversion case-insensitive. + The enumerated value upon success or null upon error. + + + + Attempts to convert an input string into a byte value. + + + The string value to be converted. + + + The number styles to use for the conversion. + + + Upon sucess, this will contain the parsed byte value. + Upon failure, the value of this parameter is undefined. + + + Non-zero upon success; zero on failure. + + + + + Enables or disabled extension loading. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named dynamic link library file. + + + The name of the dynamic link library file containing the extension. + + + + + Loads a SQLite extension library from the named dynamic link library file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + + Creates a disposable module containing the implementation of a virtual + table. + + + The module object to be used when creating the disposable module. + + + + + Parses a string containing a sequence of zero or more hexadecimal + encoded byte values and returns the resulting byte array. The + "0x" prefix is not allowed on the input string. + + + The input string containing zero or more hexadecimal encoded byte + values. + + + A byte array containing the parsed byte values or null if an error + was encountered. + + + + + Creates and returns a string containing the hexadecimal encoded byte + values from the input array. + + + The input array of bytes. + + + The resulting string or null upon failure. + + + + + Parses a string containing a sequence of zero or more hexadecimal + encoded byte values and returns the resulting byte array. The + "0x" prefix is not allowed on the input string. + + + The input string containing zero or more hexadecimal encoded byte + values. + + + Upon failure, this will contain an appropriate error message. + + + A byte array containing the parsed byte values or null if an error + was encountered. + + + + + Opens the connection using the parameters found in the . + + + + + Opens the connection using the parameters found in the and then returns it. + + The current connection object. + + + + This method causes any pending database operation to abort and return at + its earliest opportunity. This routine is typically called in response + to a user action such as pressing "Cancel" or Ctrl-C where the user wants + a long query operation to halt immediately. It is safe to call this + routine from any thread. However, it is not safe to call this routine + with a database connection that is closed or might close before this method + returns. + + + + + Returns various global memory statistics for the SQLite core library via + a dictionary of key/value pairs. Currently, only the "MemoryUsed" and + "MemoryHighwater" keys are returned and they have values that correspond + to the values that could be obtained via the + and connection properties. + + + This dictionary will be populated with the global memory statistics. It + will be created if necessary. + + + + + Attempts to free as much heap memory as possible for this database connection. + + + + + Attempts to free N bytes of heap memory by deallocating non-essential memory + allocations held by the database library. Memory used to cache database pages + to improve performance is an example of non-essential memory. This is a no-op + returning zero if the SQLite core library was not compiled with the compile-time + option SQLITE_ENABLE_MEMORY_MANAGEMENT. Optionally, attempts to reset and/or + compact the Win32 native heap, if applicable. + + + The requested number of bytes to free. + + + Non-zero to attempt a heap reset. + + + Non-zero to attempt heap compaction. + + + The number of bytes actually freed. This value may be zero. + + + This value will be non-zero if the heap reset was successful. + + + The size of the largest committed free block in the heap, in bytes. + This value will be zero unless heap compaction is enabled. + + + A standard SQLite return code (i.e. zero for success and non-zero + for failure). + + + + + Sets the status of the memory usage tracking subsystem in the SQLite core library. By default, this is enabled. + If this is disabled, memory usage tracking will not be performed. This is not really a per-connection value, it is + global to the process. + + Non-zero to enable memory usage tracking, zero otherwise. + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Passes a shutdown request to the SQLite core library. Does not throw + an exception if the shutdown request fails. + + + A standard SQLite return code (i.e. zero for success and non-zero for + failure). + + + + + Passes a shutdown request to the SQLite core library. Throws an + exception if the shutdown request fails and the no-throw parameter + is non-zero. + + + Non-zero to reset the database and temporary directories to their + default values, which should be null for both. + + + When non-zero, throw an exception if the shutdown request fails. + + + + Enables or disabled extended result codes returned by SQLite + + + Enables or disabled extended result codes returned by SQLite + + + Enables or disabled extended result codes returned by SQLite + + + Add a log message via the SQLite sqlite3_log interface. + + + Add a log message via the SQLite sqlite3_log interface. + + + + Change the password (or assign a password) to an open database. + + + No readers or writers may be active for this process. The database must already be open + and if it already was password protected, the existing password must already have been supplied. + + The new password to assign to the database + + + + Change the password (or assign a password) to an open database. + + + No readers or writers may be active for this process. The database must already be open + and if it already was password protected, the existing password must already have been supplied. + + The new password to assign to the database + + + + Sets the password for a password-protected database. A password-protected database is + unusable for any operation until the password has been set. + + The password for the database + + + + Sets the password for a password-protected database. A password-protected database is + unusable for any operation until the password has been set. + + The password for the database + + + + Queries or modifies the number of retries or the retry interval (in milliseconds) for + certain I/O operations that may fail due to anti-virus software. + + The number of times to retry the I/O operation. A negative value + will cause the current count to be queried and replace that negative value. + The number of milliseconds to wait before retrying the I/O + operation. This number is multiplied by the number of retry attempts so far to come + up with the final number of milliseconds to wait. A negative value will cause the + current interval to be queried and replace that negative value. + Zero for success, non-zero for error. + + + + Removes one set of surrounding single -OR- double quotes from the string + value and returns the resulting string value. If the string is null, empty, + or contains quotes that are not balanced, nothing is done and the original + string value will be returned. + + The string value to process. + + The string value, modified to remove one set of surrounding single -OR- + double quotes, if applicable. + + + + + Expand the filename of the data source, resolving the |DataDirectory| + macro as appropriate. + + The database filename to expand + + Non-zero if the returned file name should be converted to a full path + (except when using the .NET Compact Framework). + + The expanded path and filename of the filename + + + + The following commands are used to extract schema information out of the database. Valid schema types are: + + + MetaDataCollections + + + DataSourceInformation + + + Catalogs + + + Columns + + + ForeignKeys + + + Indexes + + + IndexColumns + + + Tables + + + Views + + + ViewColumns + + + + + Returns the MetaDataCollections schema + + A DataTable of the MetaDataCollections schema + + + + Returns schema information of the specified collection + + The schema collection to retrieve + A DataTable of the specified collection + + + + Retrieves schema information using the specified constraint(s) for the specified collection + + The collection to retrieve + The restrictions to impose + A DataTable of the specified collection + + + + Builds a MetaDataCollections schema datatable + + DataTable + + + + Builds a DataSourceInformation datatable + + DataTable + + + + Build a Columns schema + + The catalog (attached database) to query, can be null + The table to retrieve schema information for, must not be null + The column to retrieve schema information for, can be null + DataTable + + + + Returns index information for the given database and catalog + + The catalog (attached database) to query, can be null + The name of the index to retrieve information for, can be null + The table to retrieve index information for, can be null + DataTable + + + + Retrieves table schema information for the database and catalog + + The catalog (attached database) to retrieve tables on + The table to retrieve, can be null + The table type, can be null + DataTable + + + + Retrieves view schema information for the database + + The catalog (attached database) to retrieve views on + The view name, can be null + DataTable + + + + Retrieves catalog (attached databases) schema information for the database + + The catalog to retrieve, can be null + DataTable + + + + Returns the base column information for indexes in a database + + The catalog to retrieve indexes for (can be null) + The table to restrict index information by (can be null) + The index to restrict index information by (can be null) + The source column to restrict index information by (can be null) + A DataTable containing the results + + + + Returns detailed column information for a specified view + + The catalog to retrieve columns for (can be null) + The view to restrict column information by (can be null) + The source column to restrict column information by (can be null) + A DataTable containing the results + + + + Retrieves foreign key information from the specified set of filters + + An optional catalog to restrict results on + An optional table to restrict results on + An optional foreign key name to restrict results on + A DataTable with the results of the query + + + + Static variable to store the connection event handlers to call. + + + + + This event is raised whenever the database is opened or closed. + + + + + This event is raised when events related to the lifecycle of a + SQLiteConnection object occur. + + + + + This property is used to obtain or set the custom connection pool + implementation to use, if any. Setting this property to null will + cause the default connection pool implementation to be used. + + + + + Returns the number of pool entries for the file name associated with this connection. + + + + + The connection string containing the parameters for the connection + + + + + Parameter + Values + Required + Default + + + Data Source + + This may be a file name, the string ":memory:", or any supported URI (starting with SQLite 3.7.7). + Starting with release 1.0.86.0, in order to use more than one consecutive backslash (e.g. for a + UNC path), each of the adjoining backslash characters must be doubled (e.g. "\\Network\Share\test.db" + would become "\\\\Network\Share\test.db"). + + Y + + + + Version + 3 + N + 3 + + + UseUTF16Encoding + True
False
+ N + False +
+ + DateTimeFormat + + Ticks - Use the value of DateTime.Ticks.
+ ISO8601 - Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC + DateTime values and "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values).
+ JulianDay - The interval of time in days and fractions of a day since January 1, 4713 BC.
+ UnixEpoch - The whole number of seconds since the Unix epoch (January 1, 1970).
+ InvariantCulture - Any culture-independent string value that the .NET Framework can interpret as a valid DateTime.
+ CurrentCulture - Any string value that the .NET Framework can interpret as a valid DateTime using the current culture.
+ N + ISO8601 +
+ + DateTimeKind + Unspecified - Not specified as either UTC or local time.
Utc - The time represented is UTC.
Local - The time represented is local time.
+ N + Unspecified +
+ + DateTimeFormatString + The exact DateTime format string to use for all formatting and parsing of all DateTime + values for this connection. + N + null + + + BaseSchemaName + Some base data classes in the framework (e.g. those that build SQL queries dynamically) + assume that an ADO.NET provider cannot support an alternate catalog (i.e. database) without supporting + alternate schemas as well; however, SQLite does not fit into this model. Therefore, this value is used + as a placeholder and removed prior to preparing any SQL statements that may contain it. + N + sqlite_default_schema + + + BinaryGUID + True - Store GUID columns in binary form
False - Store GUID columns as text
+ N + True +
+ + Cache Size + {size in bytes} + N + 2000 + + + Synchronous + Normal - Normal file flushing behavior
Full - Full flushing after all writes
Off - Underlying OS flushes I/O's
+ N + Full +
+ + Page Size + {size in bytes} + N + 1024 + + + Password + {password} - Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + HexPassword + {hexPassword} - Must contain a sequence of zero or more hexadecimal encoded byte values without a leading "0x" prefix. Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + Enlist + Y - Automatically enlist in distributed transactions
N - No automatic enlistment
+ N + Y +
+ + Pooling + + True - Use connection pooling.
+ False - Do not use connection pooling.

+ WARNING: When using the default connection pool implementation, + setting this property to True should be avoided by applications that + make use of COM (either directly or indirectly) due to possible + deadlocks that can occur during the finalization of some COM objects. +
+ N + False +
+ + FailIfMissing + True - Don't create the database if it does not exist, throw an error instead
False - Automatically create the database if it does not exist
+ N + False +
+ + Max Page Count + {size in pages} - Limits the maximum number of pages (limits the size) of the database + N + 0 + + + Legacy Format + True - Use the more compatible legacy 3.x database format
False - Use the newer 3.3x database format which compresses numbers more effectively
+ N + False +
+ + Default Timeout + {time in seconds}
The default command timeout
+ N + 30 +
+ + Journal Mode + Delete - Delete the journal file after a commit
Persist - Zero out and leave the journal file on disk after a commit
Off - Disable the rollback journal entirely
+ N + Delete +
+ + Read Only + True - Open the database for read only access
False - Open the database for normal read/write access
+ N + False +
+ + Max Pool Size + The maximum number of connections for the given connection string that can be in the connection pool + N + 100 + + + Default IsolationLevel + The default transaciton isolation level + N + Serializable + + + Foreign Keys + Enable foreign key constraints + N + False + + + Flags + Extra behavioral flags for the connection. See the enumeration for possible values. + N + Default + + + SetDefaults + + True - Apply the default connection settings to the opened database.
+ False - Skip applying the default connection settings to the opened database. +
+ N + True +
+ + ToFullPath + + True - Attempt to expand the data source file name to a fully qualified path before opening.
+ False - Skip attempting to expand the data source file name to a fully qualified path before opening. +
+ N + True +
+
+
+
+ + + Returns the data source file name without extension or path. + + + + + Returns the string "main". + + + + + Gets/sets the default command timeout for newly-created commands. This is especially useful for + commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. + This can also be set in the ConnectionString with "Default Timeout" + + + + + Non-zero if the built-in (i.e. framework provided) connection string + parser should be used when opening the connection. + + + + + Gets/sets the extra behavioral flags for this connection. See the + enumeration for a list of + possible values. + + + + + Returns non-zero if the underlying native connection handle is + owned by this instance. + + + + + Returns the version of the underlying SQLite database engine + + + + + Returns the rowid of the most recent successful INSERT into the database from this connection. + + + + + Returns the number of rows changed by the last INSERT, UPDATE, or DELETE statement executed on + this connection. + + + + + Returns non-zero if the given database connection is in autocommit mode. + Autocommit mode is on by default. Autocommit mode is disabled by a BEGIN + statement. Autocommit mode is re-enabled by a COMMIT or ROLLBACK. + + + + + Returns the amount of memory (in bytes) currently in use by the SQLite core library. + + + + + Returns the maximum amount of memory (in bytes) used by the SQLite core library since the high-water mark was last reset. + + + + + Returns a string containing the define constants (i.e. compile-time + options) used to compile the core managed assembly, delimited with + spaces. + + + + + Returns the version of the underlying SQLite core library. + + + + + This method returns the string whose value is the same as the + SQLITE_SOURCE_ID C preprocessor macro used when compiling the + SQLite core library. + + + + + This method returns the version of the interop SQLite assembly + used. If the SQLite interop assembly is not in use or the + necessary information cannot be obtained for any reason, a null + value may be returned. + + + + + This method returns the string whose value contains the unique + identifier for the source checkout used to build the interop + assembly. If the SQLite interop assembly is not in use or the + necessary information cannot be obtained for any reason, a null + value may be returned. + + + + + This method returns the version of the managed components used + to interact with the SQLite core library. If the necessary + information cannot be obtained for any reason, a null value may + be returned. + + + + + This method returns the string whose value contains the unique + identifier for the source checkout used to build the managed + components currently executing. If the necessary information + cannot be obtained for any reason, a null value may be returned. + + + + + Returns the state of the connection. + + + + + This event is raised whenever SQLite encounters an action covered by the + authorizer during query preparation. Changing the value of the + property will determine if + the specific action will be allowed, ignored, or denied. For the entire + duration of the event, the associated connection and statement objects + must not be modified, either directly or indirectly, by the called code. + + + + + This event is raised whenever SQLite makes an update/delete/insert into the database on + this connection. It only applies to the given connection. + + + + + This event is raised whenever SQLite is committing a transaction. + Return non-zero to trigger a rollback. + + + + + This event is raised whenever SQLite statement first begins executing on + this connection. It only applies to the given connection. + + + + + This event is raised whenever SQLite is rolling back a transaction. + + + + + Returns the instance. + + + + + The I/O file cache flushing behavior for the connection + + + + + Normal file flushing at critical sections of the code + + + + + Full file flushing after every write operation + + + + + Use the default operating system's file flushing, SQLite does not explicitly flush the file buffers after writing + + + + + Raised when authorization is required to perform an action contained + within a SQL query. + + The connection performing the action. + A that contains the + event data. + + + + Raised when a transaction is about to be committed. To roll back a transaction, set the + rollbackTrans boolean value to true. + + The connection committing the transaction + Event arguments on the transaction + + + + Raised when data is inserted, updated and deleted on a given connection + + The connection committing the transaction + The event parameters which triggered the event + + + + Raised when a statement first begins executing on a given connection + + The connection executing the statement + Event arguments of the trace + + + + Raised between each backup step. + + + The source database connection. + + + The source database name. + + + The destination database connection. + + + The destination database name. + + + The number of pages copied with each step. + + + The number of pages remaining to be copied. + + + The total number of pages in the source database. + + + Set to true if the operation needs to be retried due to database + locking issues; otherwise, set to false. + + + True to continue with the backup process or false to halt the backup + process, rolling back any changes that have been made so far. + + + + + The data associated with a call into the authorizer. + + + + + The user-defined native data associated with this event. Currently, + this will always contain the value of . + + + + + The action code responsible for the current call into the authorizer. + + + + + The first string argument for the current call into the authorizer. + The exact value will vary based on the action code, see the + enumeration for possible + values. + + + + + The second string argument for the current call into the authorizer. + The exact value will vary based on the action code, see the + enumeration for possible + values. + + + + + The database name for the current call into the authorizer, if + applicable. + + + + + The name of the inner-most trigger or view that is responsible for + the access attempt or a null value if this access attempt is directly + from top-level SQL code. + + + + + The return code for the current call into the authorizer. + + + + + Constructs an instance of this class with default property values. + + + + + Constructs an instance of this class with specific property values. + + + The user-defined native data associated with this event. + + + The authorizer action code. + + + The first authorizer argument. + + + The second authorizer argument. + + + The database name, if applicable. + + + The name of the inner-most trigger or view that is responsible for + the access attempt or a null value if this access attempt is directly + from top-level SQL code. + + + The authorizer return code. + + + + + Whenever an update event is triggered on a connection, this enum will indicate + exactly what type of operation is being performed. + + + + + A row is being deleted from the given database and table + + + + + A row is being inserted into the table. + + + + + A row is being updated in the table. + + + + + Passed during an Update callback, these event arguments detail the type of update operation being performed + on the given connection. + + + + + The name of the database being updated (usually "main" but can be any attached or temporary database) + + + + + The name of the table being updated + + + + + The type of update being performed (insert/update/delete) + + + + + The RowId affected by this update. + + + + + Event arguments raised when a transaction is being committed + + + + + Set to true to abort the transaction and trigger a rollback + + + + + Passed during an Trace callback, these event arguments contain the UTF-8 rendering of the SQL statement text + + + + + SQL statement text as the statement first begins executing + + + + + This interface represents a custom connection pool implementation + usable by System.Data.SQLite. + + + + + Counts the number of pool entries matching the specified file name. + + + The file name to match or null to match all files. + + + The pool entry counts for each matching file. + + + The total number of connections successfully opened from any pool. + + + The total number of connections successfully closed from any pool. + + + The total number of pool entries for all matching files. + + + + + Disposes of all pooled connections associated with the specified + database file name. + + + The database file name. + + + + + Disposes of all pooled connections. + + + + + Adds a connection to the pool of those associated with the + specified database file name. + + + The database file name. + + + The database connection handle. + + + The connection pool version at the point the database connection + handle was received from the connection pool. This is also the + connection pool version that the database connection handle was + created under. + + + + + Removes a connection from the pool of those associated with the + specified database file name with the intent of using it to + interact with the database. + + + The database file name. + + + The new maximum size of the connection pool for the specified + database file name. + + + The connection pool version associated with the returned database + connection handle, if any. + + + The database connection handle associated with the specified + database file name or null if it cannot be obtained. + + + + + This default method implementations in this class should not be used by + applications that make use of COM (either directly or indirectly) due + to possible deadlocks that can occur during finalization of some COM + objects. + + + + + This field is used to synchronize access to the private static data + in this class. + + + + + When this field is non-null, it will be used to provide the + implementation of all the connection pool methods; otherwise, + the default method implementations will be used. + + + + + The dictionary of connection pools, based on the normalized file + name of the SQLite database. + + + + + The default version number new pools will get. + + + + + The number of connections successfully opened from any pool. + This value is incremented by the Remove method. + + + + + The number of connections successfully closed from any pool. + This value is incremented by the Add method. + + + + + Counts the number of pool entries matching the specified file name. + + + The file name to match or null to match all files. + + + The pool entry counts for each matching file. + + + The total number of connections successfully opened from any pool. + + + The total number of connections successfully closed from any pool. + + + The total number of pool entries for all matching files. + + + + + Disposes of all pooled connections associated with the specified + database file name. + + + The database file name. + + + + + Disposes of all pooled connections. + + + + + Adds a connection to the pool of those associated with the + specified database file name. + + + The database file name. + + + The database connection handle. + + + The connection pool version at the point the database connection + handle was received from the connection pool. This is also the + connection pool version that the database connection handle was + created under. + + + + + Removes a connection from the pool of those associated with the + specified database file name with the intent of using it to + interact with the database. + + + The database file name. + + + The new maximum size of the connection pool for the specified + database file name. + + + The connection pool version associated with the returned database + connection handle, if any. + + + The database connection handle associated with the specified + database file name or null if it cannot be obtained. + + + + + This method is used to obtain a reference to the custom connection + pool implementation currently in use, if any. + + + The custom connection pool implementation or null if the default + connection pool implementation should be used. + + + + + This method is used to set the reference to the custom connection + pool implementation to use, if any. + + + The custom connection pool implementation to use or null if the + default connection pool implementation should be used. + + + + + We do not have to thread-lock anything in this function, because it + is only called by other functions above which already take the lock. + + + The pool queue to resize. + + + If a function intends to add to the pool, this is true, which + forces the resize to take one more than it needs from the pool. + + + + + Keeps track of connections made on a specified file. The PoolVersion + dictates whether old objects get returned to the pool or discarded + when no longer in use. + + + + + The queue of weak references to the actual database connection + handles. + + + + + This pool version associated with the database connection + handles in this pool queue. + + + + + The maximum size of this pool queue. + + + + + Constructs a connection pool queue using the specified version + and maximum size. Normally, all the database connection + handles in this pool are associated with a single database file + name. + + + The initial pool version for this connection pool queue. + + + The initial maximum size for this connection pool queue. + + + + + SQLite implementation of DbConnectionStringBuilder. + + + + + Properties of this class + + + + + Constructs a new instance of the class + + + Default constructor + + + + + Constructs a new instance of the class using the specified connection string. + + The connection string to parse + + + + Private initializer, which assigns the connection string and resets the builder + + The connection string to assign + + + + Helper function for retrieving values from the connectionstring + + The keyword to retrieve settings for + The resulting parameter value + Returns true if the value was found and returned + + + + Fallback method for MONO, which doesn't implement DbConnectionStringBuilder.GetProperties() + + The hashtable to fill with property descriptors + + + + Gets/Sets the default version of the SQLite engine to instantiate. Currently the only valid value is 3, indicating version 3 of the sqlite library. + + + + + Gets/Sets the synchronization mode (file flushing) of the connection string. Default is "Normal". + + + + + Gets/Sets the encoding for the connection string. The default is "False" which indicates UTF-8 encoding. + + + + + Gets/Sets whether or not to use connection pooling. The default is "False" + + + + + Gets/Sets whethor not to store GUID's in binary format. The default is True + which saves space in the database. + + + + + Gets/Sets the filename to open on the connection string. + + + + + An alternate to the data source property + + + + + An alternate to the data source property that uses the SQLite URI syntax. + + + + + Gets/sets the default command timeout for newly-created commands. This is especially useful for + commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. + + + + + Determines whether or not the connection will automatically participate + in the current distributed transaction (if one exists) + + + + + If set to true, will throw an exception if the database specified in the connection + string does not exist. If false, the database will be created automatically. + + + + + If enabled, uses the legacy 3.xx format for maximum compatibility, but results in larger + database sizes. + + + + + When enabled, the database will be opened for read-only access and writing will be disabled. + + + + + Gets/sets the database encryption password + + + + + Gets/sets the database encryption hexadecimal password + + + + + Gets/Sets the page size for the connection. + + + + + Gets/Sets the maximum number of pages the database may hold + + + + + Gets/Sets the cache size for the connection. + + + + + Gets/Sets the DateTime format for the connection. + + + + + Gets/Sets the DateTime kind for the connection. + + + + + Gets/sets the DateTime format string used for formatting + and parsing purposes. + + + + + Gets/Sets the placeholder base schema name used for + .NET Framework compatibility purposes. + + + + + Determines how SQLite handles the transaction journal file. + + + + + Sets the default isolation level for transactions on the connection. + + + + + If enabled, use foreign key constraints + + + + + Gets/Sets the extra behavioral flags. + + + + + If enabled, apply the default connection settings to opened databases. + + + + + If enabled, attempt to resolve the provided data source file name to a + full path before opening. + + + + + SQLite has very limited types, and is inherently text-based. The first 5 types below represent the sum of all types SQLite + understands. The DateTime extension to the spec is for internal use only. + + + + + Not used + + + + + All integers in SQLite default to Int64 + + + + + All floating point numbers in SQLite default to double + + + + + The default data type of SQLite is text + + + + + Typically blob types are only seen when returned from a function + + + + + Null types can be returned from functions + + + + + Used internally by this provider + + + + + Used internally by this provider + + + + + These are the event types associated with the + + delegate (and its corresponding event) and the + class. + + + + + Not used. + + + + + Not used. + + + + + The connection is being opened. + + + + + The connection string has been parsed. + + + + + The connection was opened. + + + + + The method was called on the + connection. + + + + + A transaction was created using the connection. + + + + + The connection was enlisted into a transaction. + + + + + A command was created using the connection. + + + + + A data reader was created using the connection. + + + + + An instance of a derived class has + been created to wrap a native resource. + + + + + The connection is being closed. + + + + + The connection was closed. + + + + + This implementation of SQLite for ADO.NET can process date/time fields in + databases in one of six formats. + + + ISO8601 format is more compatible, readable, fully-processable, but less + accurate as it does not provide time down to fractions of a second. + JulianDay is the numeric format the SQLite uses internally and is arguably + the most compatible with 3rd party tools. It is not readable as text + without post-processing. Ticks less compatible with 3rd party tools that + query the database, and renders the DateTime field unreadable as text + without post-processing. UnixEpoch is more compatible with Unix systems. + InvariantCulture allows the configured format for the invariant culture + format to be used and is human readable. CurrentCulture allows the + configured format for the current culture to be used and is also human + readable. + + The preferred order of choosing a DateTime format is JulianDay, ISO8601, + and then Ticks. Ticks is mainly present for legacy code support. + + + + + Use the value of DateTime.Ticks. This value is not recommended and is not well supported with LINQ. + + + + + Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC DateTime values and + "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values). + + + + + The interval of time in days and fractions of a day since January 1, 4713 BC. + + + + + The whole number of seconds since the Unix epoch (January 1, 1970). + + + + + Any culture-independent string value that the .NET Framework can interpret as a valid DateTime. + + + + + Any string value that the .NET Framework can interpret as a valid DateTime using the current culture. + + + + + The default format for this provider. + + + + + This enum determines how SQLite treats its journal file. + + + By default SQLite will create and delete the journal file when needed during a transaction. + However, for some computers running certain filesystem monitoring tools, the rapid + creation and deletion of the journal file can cause those programs to fail, or to interfere with SQLite. + + If a program or virus scanner is interfering with SQLite's journal file, you may receive errors like "unable to open database file" + when starting a transaction. If this is happening, you may want to change the default journal mode to Persist. + + + + + The default mode, this causes SQLite to use the existing journaling mode for the database. + + + + + SQLite will create and destroy the journal file as-needed. + + + + + When this is set, SQLite will keep the journal file even after a transaction has completed. It's contents will be erased, + and the journal re-used as often as needed. If it is deleted, it will be recreated the next time it is needed. + + + + + This option disables the rollback journal entirely. Interrupted transactions or a program crash can cause database + corruption in this mode! + + + + + SQLite will truncate the journal file to zero-length instead of deleting it. + + + + + SQLite will store the journal in volatile RAM. This saves disk I/O but at the expense of database safety and integrity. + If the application using SQLite crashes in the middle of a transaction when the MEMORY journaling mode is set, then the + database file will very likely go corrupt. + + + + + SQLite uses a write-ahead log instead of a rollback journal to implement transactions. The WAL journaling mode is persistent; + after being set it stays in effect across multiple database connections and after closing and reopening the database. A database + in WAL journaling mode can only be accessed by SQLite version 3.7.0 or later. + + + + + Possible values for the "synchronous" database setting. This setting determines + how often the database engine calls the xSync method of the VFS. + + + + + Use the default "synchronous" database setting. Currently, this should be + the same as using the FULL mode. + + + + + The database engine continues without syncing as soon as it has handed + data off to the operating system. If the application running SQLite + crashes, the data will be safe, but the database might become corrupted + if the operating system crashes or the computer loses power before that + data has been written to the disk surface. + + + + + The database engine will still sync at the most critical moments, but + less often than in FULL mode. There is a very small (though non-zero) + chance that a power failure at just the wrong time could corrupt the + database in NORMAL mode. + + + + + The database engine will use the xSync method of the VFS to ensure that + all content is safely written to the disk surface prior to continuing. + This ensures that an operating system crash or power failure will not + corrupt the database. FULL synchronous is very safe, but it is also + slower. + + + + + The requested command execution type. This controls which method of the + object will be called. + + + + + Do nothing. No method will be called. + + + + + The command is not expected to return a result -OR- the result is not + needed. The or + method + will be called. + + + + + The command is expected to return a scalar result -OR- the result should + be limited to a scalar result. The + or method will + be called. + + + + + The command is expected to return result. + The or + method will + be called. + + + + + Use the default command execution type. Using this value is the same + as using the value. + + + + + The action code responsible for the current call into the authorizer. + + + + + No action is being performed. This value should not be used from + external code. + + + + + No longer used. + + + + + An index will be created. The action-specific arguments are the + index name and the table name. + + + + + + A table will be created. The action-specific arguments are the + table name and a null value. + + + + + A temporary index will be created. The action-specific arguments + are the index name and the table name. + + + + + A temporary table will be created. The action-specific arguments + are the table name and a null value. + + + + + A temporary trigger will be created. The action-specific arguments + are the trigger name and the table name. + + + + + A temporary view will be created. The action-specific arguments are + the view name and a null value. + + + + + A trigger will be created. The action-specific arguments are the + trigger name and the table name. + + + + + A view will be created. The action-specific arguments are the view + name and a null value. + + + + + A DELETE statement will be executed. The action-specific arguments + are the table name and a null value. + + + + + An index will be dropped. The action-specific arguments are the + index name and the table name. + + + + + A table will be dropped. The action-specific arguments are the tables + name and a null value. + + + + + A temporary index will be dropped. The action-specific arguments are + the index name and the table name. + + + + + A temporary table will be dropped. The action-specific arguments are + the table name and a null value. + + + + + A temporary trigger will be dropped. The action-specific arguments + are the trigger name and the table name. + + + + + A temporary view will be dropped. The action-specific arguments are + the view name and a null value. + + + + + A trigger will be dropped. The action-specific arguments are the + trigger name and the table name. + + + + + A view will be dropped. The action-specific arguments are the view + name and a null value. + + + + + An INSERT statement will be executed. The action-specific arguments + are the table name and a null value. + + + + + A PRAGMA statement will be executed. The action-specific arguments + are the name of the PRAGMA and the new value or a null value. + + + + + A table column will be read. The action-specific arguments are the + table name and the column name. + + + + + A SELECT statement will be executed. The action-specific arguments + are both null values. + + + + + A transaction will be started, committed, or rolled back. The + action-specific arguments are the name of the operation (BEGIN, + COMMIT, or ROLLBACK) and a null value. + + + + + An UPDATE statement will be executed. The action-specific arguments + are the table name and the column name. + + + + + A database will be attached to the connection. The action-specific + arguments are the database file name and a null value. + + + + + A database will be detached from the connection. The action-specific + arguments are the database name and a null value. + + + + + The schema of a table will be altered. The action-specific arguments + are the database name and the table name. + + + + + An index will be deleted and then recreated. The action-specific + arguments are the index name and a null value. + + + + + A table will be analyzed to gathers statistics about it. The + action-specific arguments are the table name and a null value. + + + + + A virtual table will be created. The action-specific arguments are + the table name and the module name. + + + + + A virtual table will be dropped. The action-specific arguments are + the table name and the module name. + + + + + A SQL function will be called. The action-specific arguments are a + null value and the function name. + + + + + A savepoint will be created, released, or rolled back. The + action-specific arguments are the name of the operation (BEGIN, + RELEASE, or ROLLBACK) and the savepoint name. + + + + + The return code for the current call into the authorizer. + + + + + The action will be allowed. + + + + + The overall action will be disallowed and an error message will be + returned from the query preparation method. + + + + + The specific action will be disallowed; however, the overall action + will continue. The exact effects of this return code vary depending + on the specific action, please refer to the SQLite core library + documentation for futher details. + + + + + Class used internally to determine the datatype of a column in a resultset + + + + + The DbType of the column, or DbType.Object if it cannot be determined + + + + + The affinity of a column, used for expressions or when Type is DbType.Object + + + + + SQLite implementation of DbDataAdapter. + + + + + This class is just a shell around the DbDataAdapter. Nothing from + DbDataAdapter is overridden here, just a few constructors are defined. + + + Default constructor. + + + + + Constructs a data adapter using the specified select command. + + + The select command to associate with the adapter. + + + + + Constructs a data adapter with the supplied select command text and + associated with the specified connection. + + + The select command text to associate with the data adapter. + + + The connection to associate with the select command. + + + + + Constructs a data adapter with the specified select command text, + and using the specified database connection string. + + + The select command text to use to construct a select command. + + + A connection string suitable for passing to a new SQLiteConnection, + which is associated with the select command. + + + + + Constructs a data adapter with the specified select command text, + and using the specified database connection string. + + + The select command text to use to construct a select command. + + + A connection string suitable for passing to a new SQLiteConnection, + which is associated with the select command. + + + Non-zero to parse the connection string using the built-in (i.e. + framework provided) parser when opening the connection. + + + + + Raised by the underlying DbDataAdapter when a row is being updated + + The event's specifics + + + + Raised by DbDataAdapter after a row is updated + + The event's specifics + + + + Row updating event handler + + + + + Row updated event handler + + + + + Gets/sets the select command for this DataAdapter + + + + + Gets/sets the insert command for this DataAdapter + + + + + Gets/sets the update command for this DataAdapter + + + + + Gets/sets the delete command for this DataAdapter + + + + + SQLite implementation of DbDataReader. + + + + + Underlying command this reader is attached to + + + + + Index of the current statement in the command being processed + + + + + Current statement being Read() + + + + + State of the current statement being processed. + -1 = First Step() executed, so the first Read() will be ignored + 0 = Actively reading + 1 = Finished reading + 2 = Non-row-returning statement, no records + + + + + Number of records affected by the insert/update statements executed on the command + + + + + Count of fields (columns) in the row-returning statement currently being processed + + + + + Maps the field (column) names to their corresponding indexes within the results. + + + + + Datatypes of active fields (columns) in the current statement, used for type-restricting data + + + + + The behavior of the datareader + + + + + If set, then dispose of the command object when the reader is finished + + + + + If set, then raise an exception when the object is accessed after being disposed. + + + + + An array of rowid's for the active statement if CommandBehavior.KeyInfo is specified + + + + + Matches the version of the connection. + + + + + The "stub" (i.e. placeholder) base schema name to use when returning + column schema information. Matches the base schema name used by the + associated connection. + + + + + Internal constructor, initializes the datareader and sets up to begin executing statements + + The SQLiteCommand this data reader is for + The expected behavior of the data reader + + + + Dispose of all resources used by this datareader. + + + + + + Closes the datareader, potentially closing the connection as well if CommandBehavior.CloseConnection was specified. + + + + + Throw an error if the datareader is closed + + + + + Throw an error if a row is not loaded + + + + + Enumerator support + + Returns a DbEnumerator object. + + + + SQLite is inherently un-typed. All datatypes in SQLite are natively strings. The definition of the columns of a table + and the affinity of returned types are all we have to go on to type-restrict data in the reader. + + This function attempts to verify that the type of data being requested of a column matches the datatype of the column. In + the case of columns that are not backed into a table definition, we attempt to match up the affinity of a column (int, double, string or blob) + to a set of known types that closely match that affinity. It's not an exact science, but its the best we can do. + + + This function throws an InvalidTypeCast() exception if the requested type doesn't match the column's definition or affinity. + + The index of the column to type-check + The type we want to get out of the column + + + + Retrieves the column as a boolean value + + The index of the column to retrieve + bool + + + + Retrieves the column as a single byte value + + The index of the column to retrieve + byte + + + + Retrieves a column as an array of bytes (blob) + + The index of the column to retrieve + The zero-based index of where to begin reading the data + The buffer to write the bytes into + The zero-based index of where to begin writing into the array + The number of bytes to retrieve + The actual number of bytes written into the array + + To determine the number of bytes in the column, pass a null value for the buffer. The total length will be returned. + + + + + Returns the column as a single character + + The index of the column to retrieve + char + + + + Retrieves a column as an array of chars (blob) + + The index of the column to retrieve + The zero-based index of where to begin reading the data + The buffer to write the characters into + The zero-based index of where to begin writing into the array + The number of bytes to retrieve + The actual number of characters written into the array + + To determine the number of characters in the column, pass a null value for the buffer. The total length will be returned. + + + + + Retrieves the name of the back-end datatype of the column + + The index of the column to retrieve + string + + + + Retrieve the column as a date/time value + + The index of the column to retrieve + DateTime + + + + Retrieve the column as a decimal value + + The index of the column to retrieve + decimal + + + + Returns the column as a double + + The index of the column to retrieve + double + + + + Returns the .NET type of a given column + + The index of the column to retrieve + Type + + + + Returns a column as a float value + + The index of the column to retrieve + float + + + + Returns the column as a Guid + + The index of the column to retrieve + Guid + + + + Returns the column as a short + + The index of the column to retrieve + Int16 + + + + Retrieves the column as an int + + The index of the column to retrieve + Int32 + + + + Retrieves the column as a long + + The index of the column to retrieve + Int64 + + + + Retrieves the name of the column + + The index of the column to retrieve + string + + + + Retrieves the i of a column, given its name + + The name of the column to retrieve + The int i of the column + + + + Schema information in SQLite is difficult to map into .NET conventions, so a lot of work must be done + to gather the necessary information so it can be represented in an ADO.NET manner. + + Returns a DataTable containing the schema information for the active SELECT statement being processed. + + + + Retrieves the column as a string + + The index of the column to retrieve + string + + + + Retrieves the column as an object corresponding to the underlying datatype of the column + + The index of the column to retrieve + object + + + + Retreives the values of multiple columns, up to the size of the supplied array + + The array to fill with values from the columns in the current resultset + The number of columns retrieved + + + + Returns a collection containing all the column names and values for the + current row of data in the current resultset, if any. If there is no + current row or no current resultset, an exception may be thrown. + + + The collection containing the column name and value information for the + current row of data in the current resultset or null if this information + cannot be obtained. + + + + + Returns True if the specified column is null + + The index of the column to retrieve + True or False + + + + Moves to the next resultset in multiple row-returning SQL command. + + True if the command was successful and a new resultset is available, False otherwise. + + + + This method attempts to query the flags associated with the database + connection in use. If the database connection is disposed, the default + flags will be returned. + + + The data reader containing the databse connection to query the flags from. + + + The connection flags value. + + + + + Retrieves the SQLiteType for a given column, and caches it to avoid repetetive interop calls. + + The index of the column to retrieve + A SQLiteType structure + + + + Reads the next row from the resultset + + True if a new row was successfully loaded and is ready for processing + + + + Not implemented. Returns 0 + + + + + Returns the number of columns in the current resultset + + + + + Returns the number of visible fields in the current resultset + + + + + Returns True if the resultset has rows that can be fetched + + + + + Returns True if the data reader is closed + + + + + Retrieve the count of records affected by an update/insert command. Only valid once the data reader is closed! + + + + + Indexer to retrieve data from a column given its name + + The name of the column to retrieve data for + The value contained in the column + + + + Indexer to retrieve data from a column given its i + + The index of the column to retrieve + The value contained in the column + + + + SQLite exception class. + + + + + Private constructor for use with serialization. + + + Holds the serialized object data about the exception being thrown. + + + Contains contextual information about the source or destination. + + + + + Public constructor for generating a SQLite exception given the error + code and message. + + + The SQLite return code to report. + + + Message text to go along with the return code message text. + + + + + Public constructor that uses the base class constructor for the error + message. + + Error message text. + + + + Public constructor that uses the default base class constructor. + + + + + Public constructor that uses the base class constructor for the error + message and inner exception. + + Error message text. + The original (inner) exception. + + + + Adds extra information to the serialized object data specific to this + class type. This is only used for serialization. + + + Holds the serialized object data about the exception being thrown. + + + Contains contextual information about the source or destination. + + + + + Returns the error message for the specified SQLite return code. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns the composite error message based on the SQLite return code + and the optional detailed error message. + + The SQLite return code. + Optional detailed error message. + Error message text for the return code. + + + + Gets the associated SQLite result code for this exception as a + . This property returns the same + underlying value as the property. + + + + + Gets the associated SQLite return code for this exception as an + . For desktop versions of the .NET Framework, + this property overrides the property of the same name within the + + class. This property returns the same underlying value as the + property. + + + + + SQLite error codes. Actually, this enumeration represents a return code, + which may also indicate success in one of several ways (e.g. SQLITE_OK, + SQLITE_ROW, and SQLITE_DONE). Therefore, the name of this enumeration is + something of a misnomer. + + + + + The error code is unknown. This error code + is only used by the managed wrapper itself. + + + + + Successful result + + + + + SQL error or missing database + + + + + Internal logic error in SQLite + + + + + Access permission denied + + + + + Callback routine requested an abort + + + + + The database file is locked + + + + + A table in the database is locked + + + + + A malloc() failed + + + + + Attempt to write a readonly database + + + + + Operation terminated by sqlite3_interrupt() + + + + + Some kind of disk I/O error occurred + + + + + The database disk image is malformed + + + + + Unknown opcode in sqlite3_file_control() + + + + + Insertion failed because database is full + + + + + Unable to open the database file + + + + + Database lock protocol error + + + + + Database is empty + + + + + The database schema changed + + + + + String or BLOB exceeds size limit + + + + + Abort due to constraint violation + + + + + Data type mismatch + + + + + Library used incorrectly + + + + + Uses OS features not supported on host + + + + + Authorization denied + + + + + Auxiliary database format error + + + + + 2nd parameter to sqlite3_bind out of range + + + + + File opened that is not a database file + + + + + Notifications from sqlite3_log() + + + + + Warnings from sqlite3_log() + + + + + sqlite3_step() has another row ready + + + + + sqlite3_step() has finished executing + + + + + Used to mask off extended result codes + + + + + SQLite implementation of . + + + SQLite implementation of . + + + + + Constructs a new instance. + + + + + Static instance member which returns an instanced class. + + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Will provide a object in .NET 3.5. + + The class or interface type to query for. + + + + + This event is raised whenever SQLite raises a logging event. + Note that this should be set as one of the first things in the + application. This event is provided for backward compatibility only. + New code should use the class instead. + + + + + This abstract class is designed to handle user-defined functions easily. An instance of the derived class is made for each + connection to the database. + + + Although there is one instance of a class derived from SQLiteFunction per database connection, the derived class has no access + to the underlying connection. This is necessary to deter implementers from thinking it would be a good idea to make database + calls during processing. + + It is important to distinguish between a per-connection instance, and a per-SQL statement context. One instance of this class + services all SQL statements being stepped through on that connection, and there can be many. One should never store per-statement + information in member variables of user-defined function classes. + + For aggregate functions, always create and store your per-statement data in the contextData object on the 1st step. This data will + be automatically freed for you (and Dispose() called if the item supports IDisposable) when the statement completes. + + + + + The base connection this function is attached to + + + + + Internal array used to keep track of aggregate function context data + + + + + The connection flags associated with this object (this should be the + same value as the flags associated with the parent connection object). + + + + + Holds a reference to the callback function for user functions + + + + + Holds a reference to the callbakc function for stepping in an aggregate function + + + + + Holds a reference to the callback function for finalizing an aggregate function + + + + + Holds a reference to the callback function for collation sequences + + + + + Current context of the current callback. Only valid during a callback + + + + + This static list contains all the user-defined functions declared using the proper attributes. + + + + + Internal constructor, initializes the function's internal variables. + + + + + Constructs an instance of this class using the specified data-type + conversion parameters. + + + The DateTime format to be used when converting string values to a + DateTime and binding DateTime parameters. + + + The to be used when creating DateTime + values. + + + The format string to be used when parsing and formatting DateTime + values. + + + Non-zero to create a UTF-16 data-type conversion context; otherwise, + a UTF-8 data-type conversion context will be created. + + + + + Disposes of any active contextData variables that were not automatically cleaned up. Sometimes this can happen if + someone closes the connection while a DataReader is open. + + + + + Placeholder for a user-defined disposal routine + + True if the object is being disposed explicitly + + + + Scalar functions override this method to do their magic. + + + Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available + to force them into a certain type. Therefore the only types you will ever see as parameters are + DBNull.Value, Int64, Double, String or byte[] array. + + The arguments for the command to process + You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or + you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, + just return it! + + + + Aggregate functions override this method to do their magic. + + + Typically you'll be updating whatever you've placed in the contextData field and returning as quickly as possible. + + The arguments for the command to process + The 1-based step number. This is incrememted each time the step method is called. + A placeholder for implementers to store contextual data pertaining to the current context. + + + + Aggregate functions override this method to finish their aggregate processing. + + + If you implemented your aggregate function properly, + you've been recording and keeping track of your data in the contextData object provided, and now at this stage you should have + all the information you need in there to figure out what to return. + NOTE: It is possible to arrive here without receiving a previous call to Step(), in which case the contextData will + be null. This can happen when no rows were returned. You can either return null, or 0 or some other custom return value + if that is the case. + + Your own assigned contextData, provided for you so you can return your final results. + You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or + you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, + just return it! + + + + + User-defined collation sequences override this method to provide a custom string sorting algorithm. + + The first string to compare + The second strnig to compare + 1 if param1 is greater than param2, 0 if they are equal, or -1 if param1 is less than param2 + + + + Converts an IntPtr array of context arguments to an object array containing the resolved parameters the pointers point to. + + + Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available + to force them into a certain type. Therefore the only types you will ever see as parameters are + DBNull.Value, Int64, Double, String or byte[] array. + + The number of arguments + A pointer to the array of arguments + An object array of the arguments once they've been converted to .NET values + + + + Takes the return value from Invoke() and Final() and figures out how to return it to SQLite's context. + + The context the return value applies to + The parameter to return to SQLite + + + + Internal scalar callback function, which wraps the raw context pointer and calls the virtual Invoke() method. + WARNING: Must not throw exceptions. + + A raw context pointer + Number of arguments passed in + A pointer to the array of arguments + + + + Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function. + WARNING: Must not throw exceptions. + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. Returns 0 if an exception is caught. + + + + Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function. + WARNING: Must not throw exceptions. + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. Returns 0 if an exception is caught. + + + + The internal aggregate Step function callback, which wraps the raw context pointer and calls the virtual Step() method. + WARNING: Must not throw exceptions. + + + This function takes care of doing the lookups and getting the important information put together to call the Step() function. + That includes pulling out the user's contextData and updating it after the call is made. We use a sorted list for this so + binary searches can be done to find the data. + + A raw context pointer + Number of arguments passed in + A pointer to the array of arguments + + + + An internal aggregate Final function callback, which wraps the context pointer and calls the virtual Final() method. + WARNING: Must not throw exceptions. + + A raw context pointer + + + + Using reflection, enumerate all assemblies in the current appdomain looking for classes that + have a SQLiteFunctionAttribute attribute, and registering them accordingly. + + + + + Manual method of registering a function. The type must still have the SQLiteFunctionAttributes in order to work + properly, but this is a workaround for the Compact Framework where enumerating assemblies is not currently supported. + + The type of the function to register + + + + Called by SQLiteBase derived classes, this function binds all user-defined functions to a connection. + It is done this way so that all user-defined functions will access the database using the same encoding scheme + as the connection (UTF-8 or UTF-16). + + + The wrapper functions that interop with SQLite will create a unique cookie value, which internally is a pointer to + all the wrapped callback functions. The interop function uses it to map CDecl callbacks to StdCall callbacks. + + The base object on which the functions are to bind + The flags associated with the parent connection object + Returns a logical list of functions which the connection should retain until it is closed. + + + + This function binds a user-defined functions to a connection. + + + The object instance associated with the + that the function should be bound to. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + + + + Returns a reference to the underlying connection's SQLiteConvert class, which can be used to convert + strings and DateTime's into the current connection's encoding schema. + + + + + Extends SQLiteFunction and allows an inherited class to obtain the collating sequence associated with a function call. + + + User-defined functions can call the GetCollationSequence() method in this class and use it to compare strings and char arrays. + + + + + Obtains the collating sequence in effect for the given function. + + + + + + The type of user-defined function to declare + + + + + Scalar functions are designed to be called and return a result immediately. Examples include ABS(), Upper(), Lower(), etc. + + + + + Aggregate functions are designed to accumulate data until the end of a call and then return a result gleaned from the accumulated data. + Examples include SUM(), COUNT(), AVG(), etc. + + + + + Collation sequences are used to sort textual data in a custom manner, and appear in an ORDER BY clause. Typically text in an ORDER BY is + sorted using a straight case-insensitive comparison function. Custom collating sequences can be used to alter the behavior of text sorting + in a user-defined manner. + + + + + An internal callback delegate declaration. + + Raw native context pointer for the user function. + Total number of arguments to the user function. + Raw native pointer to the array of raw native argument pointers. + + + + An internal final callback delegate declaration. + + Raw context pointer for the user function + + + + Internal callback delegate for implementing collation sequences + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. + + + + The type of collating sequence + + + + + The built-in BINARY collating sequence + + + + + The built-in NOCASE collating sequence + + + + + The built-in REVERSE collating sequence + + + + + A custom user-defined collating sequence + + + + + The encoding type the collation sequence uses + + + + + The collation sequence is UTF8 + + + + + The collation sequence is UTF16 little-endian + + + + + The collation sequence is UTF16 big-endian + + + + + A struct describing the collating sequence a function is executing in + + + + + The name of the collating sequence + + + + + The type of collating sequence + + + + + The text encoding of the collation sequence + + + + + Context of the function that requested the collating sequence + + + + + Calls the base collating sequence to compare two strings + + The first string to compare + The second string to compare + -1 if s1 is less than s2, 0 if s1 is equal to s2, and 1 if s1 is greater than s2 + + + + Calls the base collating sequence to compare two character arrays + + The first array to compare + The second array to compare + -1 if c1 is less than c2, 0 if c1 is equal to c2, and 1 if c1 is greater than c2 + + + + A simple custom attribute to enable us to easily find user-defined functions in + the loaded assemblies and initialize them in SQLite as connections are made. + + + + + Default constructor, initializes the internal variables for the function. + + + + + Constructs an instance of this class. + + + The name of the function, as seen by the SQLite core library. + + + The number of arguments that the function will accept. + + + The type of function being declared. This will either be Scalar, + Aggregate, or Collation. + + + + + The function's name as it will be used in SQLite command text. + + + + + The number of arguments this function expects. -1 if the number of arguments is variable. + + + + + The type of function this implementation will be. + + + + + The object instance that describes the class + containing the implementation for the associated function. + + + + + This class provides key info for a given SQLite statement. + + Providing key information for a given statement is non-trivial :( + + + + + + This function does all the nasty work at determining what keys need to be returned for + a given statement. + + + + + + + + Make sure all the subqueries are open and ready and sync'd with the current rowid + of the table they're supporting + + + + + Release any readers on any subqueries + + + + + Append all the columns we've added to the original query to the schema + + + + + + How many additional columns of keyinfo we're holding + + + + + Used to support CommandBehavior.KeyInfo + + + + + A single sub-query for a given table/database. + + + + + Event data for logging event handlers. + + + + + The error code. The type of this object value should be + or . + + + + + SQL statement text as the statement first begins executing + + + + + Extra data associated with this event, if any. + + + + + Constructs the object. + + Should be null. + + The error code. The type of this object value should be + or . + + The error message, if any. + The extra data, if any. + + + + Raised when a log event occurs. + + The current connection + Event arguments of the trace + + + + Manages the SQLite custom logging functionality and the associated + callback for the whole process. + + + + + Object used to synchronize access to the static instance data + for this class. + + + + + Member variable to store the AppDomain.DomainUnload event handler. + + + + + The default log event handler. + + + + + The log callback passed to native SQLite engine. This must live + as long as the SQLite library has a pointer to it. + + + + + The base SQLite object to interop with. + + + + + This will be non-zero if logging is currently enabled. + + + + + Initializes the SQLite logging facilities. + + + + + Handles the AppDomain being unloaded. + + Should be null. + The data associated with this event. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The SQLite error code. + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The integer error code. + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + + The error code. The type of this object value should be + System.Int32 or SQLiteErrorCode. + + The message to be logged. + + + + Creates and initializes the default log event handler. + + + + + Adds the default log event handler to the list of handlers. + + + + + Removes the default log event handler from the list of handlers. + + + + + Internal proxy function that calls any registered application log + event handlers. + + WARNING: This method is used more-or-less directly by native code, + do not modify its type signature. + + + The extra data associated with this message, if any. + + + The error code associated with this message. + + + The message string to be logged. + + + + + Default logger. Currently, uses the Trace class (i.e. sends events + to the current trace listeners, if any). + + Should be null. + The data associated with this event. + + + + Member variable to store the application log handler to call. + + + + + This event is raised whenever SQLite raises a logging event. + Note that this should be set as one of the first things in the + application. + + + + + If this property is true, logging is enabled; otherwise, logging is + disabled. When logging is disabled, no logging events will fire. + + + + + MetaDataCollections specific to SQLite + + + + + Returns a list of databases attached to the connection + + + + + Returns column information for the specified table + + + + + Returns index information for the optionally-specified table + + + + + Returns base columns for the given index + + + + + Returns the tables in the given catalog + + + + + Returns user-defined views in the given catalog + + + + + Returns underlying column information on the given view + + + + + Returns foreign key information for the given catalog + + + + + Returns the triggers on the database + + + + + SQLite implementation of DbParameter. + + + + + The data type of the parameter + + + + + The version information for mapping the parameter + + + + + The value of the data in the parameter + + + + + The source column for the parameter + + + + + The column name + + + + + The data size, unused by SQLite + + + + + Default constructor + + + + + Constructs a named parameter given the specified parameter name + + The parameter name + + + + Constructs a named parameter given the specified parameter name and initial value + + The parameter name + The initial value of the parameter + + + + Constructs a named parameter of the specified type + + The parameter name + The datatype of the parameter + + + + Constructs a named parameter of the specified type and source column reference + + The parameter name + The data type + The source column + + + + Constructs a named parameter of the specified type, source column and row version + + The parameter name + The data type + The source column + The row version information + + + + Constructs an unnamed parameter of the specified data type + + The datatype of the parameter + + + + Constructs an unnamed parameter of the specified data type and sets the initial value + + The datatype of the parameter + The initial value of the parameter + + + + Constructs an unnamed parameter of the specified data type and source column + + The datatype of the parameter + The source column + + + + Constructs an unnamed parameter of the specified data type, source column and row version + + The data type + The source column + The row version information + + + + Constructs a named parameter of the specified type and size + + The parameter name + The data type + The size of the parameter + + + + Constructs a named parameter of the specified type, size and source column + + The name of the parameter + The data type + The size of the parameter + The source column + + + + Constructs a named parameter of the specified type, size, source column and row version + + The name of the parameter + The data type + The size of the parameter + The source column + The row version information + + + + Constructs a named parameter of the specified type, size, source column and row version + + The name of the parameter + The data type + The size of the parameter + Only input parameters are supported in SQLite + Ignored + Ignored + Ignored + The source column + The row version information + The initial value to assign the parameter + + + + Constructs a named parameter, yet another flavor + + The name of the parameter + The data type + The size of the parameter + Only input parameters are supported in SQLite + Ignored + Ignored + The source column + The row version information + Whether or not this parameter is for comparing NULL's + The intial value to assign the parameter + + + + Constructs an unnamed parameter of the specified type and size + + The data type + The size of the parameter + + + + Constructs an unnamed parameter of the specified type, size, and source column + + The data type + The size of the parameter + The source column + + + + Constructs an unnamed parameter of the specified type, size, source column and row version + + The data type + The size of the parameter + The source column + The row version information + + + + Resets the DbType of the parameter so it can be inferred from the value + + + + + Clones a parameter + + A new, unassociated SQLiteParameter + + + + Whether or not the parameter can contain a null value + + + + + Returns the datatype of the parameter + + + + + Supports only input parameters + + + + + Returns the parameter name + + + + + Returns the size of the parameter + + + + + Gets/sets the source column + + + + + Used by DbCommandBuilder to determine the mapping for nullable fields + + + + + Gets and sets the row version + + + + + Gets and sets the parameter value. If no datatype was specified, the datatype will assume the type from the value given. + + + + + SQLite implementation of DbParameterCollection. + + + + + The underlying command to which this collection belongs + + + + + The internal array of parameters in this collection + + + + + Determines whether or not all parameters have been bound to their statement(s) + + + + + Initializes the collection + + The command to which the collection belongs + + + + Retrieves an enumerator for the collection + + An enumerator for the underlying array + + + + Adds a parameter to the collection + + The parameter name + The data type + The size of the value + The source column + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter name + The data type + The size of the value + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter name + The data type + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter to add + A zero-based index of where the parameter is located in the array + + + + Adds a parameter to the collection + + The parameter to add + A zero-based index of where the parameter is located in the array + + + + Adds a named/unnamed parameter and its value to the parameter collection. + + Name of the parameter, or null to indicate an unnamed parameter + The initial value of the parameter + Returns the SQLiteParameter object created during the call. + + + + Adds an array of parameters to the collection + + The array of parameters to add + + + + Adds an array of parameters to the collection + + The array of parameters to add + + + + Clears the array and resets the collection + + + + + Determines if the named parameter exists in the collection + + The name of the parameter to check + True if the parameter is in the collection + + + + Determines if the parameter exists in the collection + + The SQLiteParameter to check + True if the parameter is in the collection + + + + Not implemented + + + + + + + Retrieve a parameter by name from the collection + + The name of the parameter to fetch + A DbParameter object + + + + Retrieves a parameter by its index in the collection + + The index of the parameter to retrieve + A DbParameter object + + + + Returns the index of a parameter given its name + + The name of the parameter to find + -1 if not found, otherwise a zero-based index of the parameter + + + + Returns the index of a parameter + + The parameter to find + -1 if not found, otherwise a zero-based index of the parameter + + + + Inserts a parameter into the array at the specified location + + The zero-based index to insert the parameter at + The parameter to insert + + + + Removes a parameter from the collection + + The parameter to remove + + + + Removes a parameter from the collection given its name + + The name of the parameter to remove + + + + Removes a parameter from the collection given its index + + The zero-based parameter index to remove + + + + Re-assign the named parameter to a new parameter object + + The name of the parameter to replace + The new parameter + + + + Re-assign a parameter at the specified index + + The zero-based index of the parameter to replace + The new parameter + + + + Un-binds all parameters from their statements + + + + + This function attempts to map all parameters in the collection to all statements in a Command. + Since named parameters may span multiple statements, this function makes sure all statements are bound + to the same named parameter. Unnamed parameters are bound in sequence. + + + + + Returns false + + + + + Returns false + + + + + Returns false + + + + + Returns null + + + + + Returns a count of parameters in the collection + + + + + Overloaded to specialize the return value of the default indexer + + Name of the parameter to get/set + The specified named SQLite parameter + + + + Overloaded to specialize the return value of the default indexer + + The index of the parameter to get/set + The specified SQLite parameter + + + + Represents a single SQL statement in SQLite. + + + + + The underlying SQLite object this statement is bound to + + + + + The command text of this SQL statement + + + + + The actual statement pointer + + + + + An index from which unnamed parameters begin + + + + + Names of the parameters as SQLite understands them to be + + + + + Parameters for this statement + + + + + Command this statement belongs to (if any) + + + + + The flags associated with the parent connection object. + + + + + Initializes the statement and attempts to get all information about parameters in the statement + + The base SQLite object + The flags associated with the parent connection object + The statement + The command text for this statement + The previous command in a multi-statement command + + + + Disposes and finalizes the statement + + + + + If the underlying database connection is open, fetches the number of changed rows + resulting from the most recent query; otherwise, does nothing. + + + The number of changes when true is returned. + Undefined if false is returned. + + Non-zero if the number of changed rows was fetched. + + + + Called by SQLiteParameterCollection, this function determines if the specified parameter name belongs to + this statement, and if so, keeps a reference to the parameter so it can be bound later. + + The parameter name to map + The parameter to assign it + + + + Bind all parameters, making sure the caller didn't miss any + + + + + Attempts to convert an arbitrary object to the Boolean data type. + Null object values are converted to false. Throws a SQLiteException + upon failure. + + The object value to convert. + The format provider to use. + The converted boolean value. + + + + Perform the bind operation for an individual parameter + + The index of the parameter to bind + The parameter we're binding + + + + SQLite implementation of DbTransaction. + + + + + The connection to which this transaction is bound + + + + + Constructs the transaction object, binding it to the supplied connection + + The connection to open a transaction on + TRUE to defer the writelock, or FALSE to lock immediately + + + + Disposes the transaction. If it is currently active, any changes are rolled back. + + + + + Commits the current transaction. + + + + + Rolls back the active transaction. + + + + + Returns the underlying connection to which this transaction applies. + + + + + Forwards to the local Connection property + + + + + Gets the isolation level of the transaction. SQLite only supports Serializable transactions. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to <?xml version="1.0" standalone="yes"?> + <DocumentElement> + <DataTypes> + <TypeName>smallint</TypeName> + <ProviderDbType>10</ProviderDbType> + <ColumnSize>5</ColumnSize> + <DataType>System.Int16</DataType> + <CreateFormat>smallint</CreateFormat> + <IsAutoIncrementable>false</IsAutoIncrementable> + <IsCaseSensitive>false</IsCaseSensitive> + <IsFixedLength>true</IsFixedLength> + <IsFixedPrecisionScale>true</IsFixedPrecisionScale> + <IsLong>false</IsLong> + <IsNullable>true</ [rest of string was truncated]";. + + + + + Looks up a localized string similar to ALL,ALTER,AND,AS,AUTOINCREMENT,BETWEEN,BY,CASE,CHECK,COLLATE,COMMIT,CONSTRAINT,CREATE,CROSS,DEFAULT,DEFERRABLE,DELETE,DISTINCT,DROP,ELSE,ESCAPE,EXCEPT,FOREIGN,FROM,FULL,GROUP,HAVING,IN,INDEX,INNER,INSERT,INTERSECT,INTO,IS,ISNULL,JOIN,LEFT,LIMIT,NATURAL,NOT,NOTNULL,NULL,ON,OR,ORDER,OUTER,PRIMARY,REFERENCES,RIGHT,ROLLBACK,SELECT,SET,TABLE,THEN,TO,TRANSACTION,UNION,UNIQUE,UPDATE,USING,VALUES,WHEN,WHERE. + + + + + Looks up a localized string similar to <?xml version="1.0" encoding="utf-8" ?> + <DocumentElement> + <MetaDataCollections> + <CollectionName>MetaDataCollections</CollectionName> + <NumberOfRestrictions>0</NumberOfRestrictions> + <NumberOfIdentifierParts>0</NumberOfIdentifierParts> + </MetaDataCollections> + <MetaDataCollections> + <CollectionName>DataSourceInformation</CollectionName> + <NumberOfRestrictions>0</NumberOfRestrictions> + <NumberOfIdentifierParts>0</NumberOfIdentifierParts> + </MetaDataCollections> + <MetaDataC [rest of string was truncated]";. + + + + + The name of the environment variable containing the processor + architecture of the current process. + + + + + This is the P/Invoke method that wraps the native Win32 LoadLibrary + function. See the MSDN documentation for full details on what it + does. + + + The name of the executable library. + + + The native module handle upon success -OR- IntPtr.Zero on failure. + + + + + This lock is used to protect the static _SQLiteModule and + processorArchitecturePlatforms fields, below. + + + + + Stores the mappings between processor architecture names and platform + names. + + + + + The native module handle for the native SQLite library or the value + IntPtr.Zero. + + + + + For now, this method simply calls the Initialize method. + + + + + Attempts to initialize this class by pre-loading the native SQLite + library for the processor architecture of the current process. + + + + + Queries and returns the base directory of the current application + domain. + + + The base directory for the current application domain -OR- null if it + cannot be determined. + + + + + Determines if the dynamic link library file name requires a suffix + and adds it if necessary. + + + The original dynamic link library file name to inspect. + + + The dynamic link library file name, possibly modified to include an + extension. + + + + + Queries and returns the processor architecture of the current + process. + + + The processor architecture of the current process -OR- null if it + cannot be determined. + + + + + Given the processor architecture, returns the name of the platform. + + + The processor architecture to be translated to a platform name. + + + The platform name for the specified processor architecture -OR- null + if it cannot be determined. + + + + + Attempts to load the native SQLite library based on the specified + directory and processor architecture. + + + The base directory to use, null for default (the base directory of + the current application domain). This directory should contain the + processor architecture specific sub-directories. + + + The requested processor architecture, null for default (the + processor architecture of the current process). This caller should + almost always specify null for this parameter. + + + The native module handle as returned by LoadLibrary -OR- IntPtr.Zero + if the loading fails for any reason. + + + + + This class represents a context from the SQLite core library that can + be passed to the sqlite3_result_*() and associated functions. + + + + + This interface represents a native handle provided by the SQLite core + library. + + + + + The native handle value. + + + + + The native context handle. + + + + + Constructs an instance of this class using the specified native + context handle. + + + The native context handle to use. + + + + + Sets the context result to NULL. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to the specified + value. + + + The value to use. This value will be + converted to the UTF-8 encoding prior to being used. + + + + + Sets the context result to the specified + value containing an error message. + + + The value containing the error message text. + This value will be converted to the UTF-8 encoding prior to being + used. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to contain the error code SQLITE_TOOBIG. + + + + + Sets the context result to contain the error code SQLITE_NOMEM. + + + + + Sets the context result to the specified array + value. + + + The array value to use. + + + + + Sets the context result to a BLOB of zeros of the specified size. + + + The number of zero bytes to use for the BLOB context result. + + + + + Sets the context result to the specified . + + + The to use. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + This class represents a value from the SQLite core library that can be + passed to the sqlite3_value_*() and associated functions. + + + + + The native value handle. + + + + + Constructs an instance of this class using the specified native + value handle. + + + The native value handle to use. + + + + + Invalidates the native value handle, thereby preventing further + access to it from this object instance. + + + + + Converts a logical array of native pointers to native sqlite3_value + structures into a managed array of + object instances. + + + The number of elements in the logical array of native sqlite3_value + structures. + + + The native pointer to the logical array of native sqlite3_value + structures to convert. + + + The managed array of object instances or + null upon failure. + + + + + Gets and returns the type affinity associated with this value. + + + The type affinity associated with this value. + + + + + Gets and returns the number of bytes associated with this value, if + it refers to a UTF-8 encoded string. + + + The number of bytes associated with this value. The returned value + may be zero. + + + + + Gets and returns the associated with this + value. + + + The associated with this value. + + + + + Gets and returns the associated with + this value. + + + The associated with this value. + + + + + Gets and returns the associated with this + value. + + + The associated with this value. + + + + + Gets and returns the associated with this + value. + + + The associated with this value. The value is + converted from the UTF-8 encoding prior to being returned. + + + + + Gets and returns the array associated with this + value. + + + The array associated with this value. + + + + + Uses the native value handle to obtain and store the managed value + for this object instance, thus saving it for later use. The type + of the managed value is determined by the type affinity of the + native value. If the type affinity is not recognized by this + method, no work is done and false is returned. + + + Non-zero if the native value was persisted successfully. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + Returns non-zero if the native SQLite value has been successfully + persisted as a managed value within this object instance (i.e. the + property may then be read successfully). + + + + + If the managed value for this object instance is available (i.e. it + has been previously persisted via the ) method, + that value is returned; otherwise, an exception is thrown. The + returned value may be null. + + + + + These are the allowed values for the operators that are part of a + constraint term in the WHERE clause of a query that uses a virtual + table. + + + + + This value represents the equality operator. + + + + + This value represents the greater than operator. + + + + + This value represents the less than or equal to operator. + + + + + This value represents the less than operator. + + + + + This value represents the greater than or equal to operator. + + + + + This value represents the MATCH operator. + + + + + This class represents the native sqlite3_index_constraint structure + from the SQLite core library. + + + + + Constructs an instance of this class using the specified native + sqlite3_index_constraint structure. + + + The native sqlite3_index_constraint structure to use. + + + + + Constructs an instance of this class using the specified field + values. + + + Column on left-hand side of constraint. + + + Constraint operator (). + + + True if this constraint is usable. + + + Used internally - + should ignore. + + + + + Column on left-hand side of constraint. + + + + + Constraint operator (). + + + + + True if this constraint is usable. + + + + + Used internally - + should ignore. + + + + + This class represents the native sqlite3_index_orderby structure from + the SQLite core library. + + + + + Constructs an instance of this class using the specified native + sqlite3_index_orderby structure. + + + The native sqlite3_index_orderby structure to use. + + + + + Constructs an instance of this class using the specified field + values. + + + Column number. + + + True for DESC. False for ASC. + + + + + Column number. + + + + + True for DESC. False for ASC. + + + + + This class represents the native sqlite3_index_constraint_usage + structure from the SQLite core library. + + + + + Constructs an instance of this class using the specified native + sqlite3_index_constraint_usage structure. + + + The native sqlite3_index_constraint_usage structure to use. + + + + + Constructs an instance of this class using the specified field + values. + + + If greater than 0, constraint is part of argv to xFilter. + + + Do not code a test for this constraint. + + + + + If greater than 0, constraint is part of argv to xFilter. + + + + + Do not code a test for this constraint. + + + + + This class represents the various inputs provided by the SQLite core + library to the method. + + + + + Constructs an instance of this class. + + + The number of instances to + pre-allocate space for. + + + The number of instances to + pre-allocate space for. + + + + + An array of object instances, + each containing information supplied by the SQLite core library. + + + + + An array of object instances, + each containing information supplied by the SQLite core library. + + + + + This class represents the various outputs provided to the SQLite core + library by the method. + + + + + Constructs an instance of this class. + + + The number of instances + to pre-allocate space for. + + + + + Determines if the native estimatedRows field can be used, based on + the available version of the SQLite core library. + + + Non-zero if the property is supported + by the SQLite core library. + + + + + An array of object + instances, each containing information to be supplied to the SQLite + core library. + + + + + Number used to help identify the selected index. This value will + later be provided to the + method. + + + + + String used to help identify the selected index. This value will + later be provided to the + method. + + + + + Non-zero if the index string must be freed by the SQLite core + library. + + + + + True if output is already ordered. + + + + + Estimated cost of using this index. Using a null value here + indicates that a default estimated cost value should be used. + + + + + Estimated number of rows returned. Using a null value here + indicates that a default estimated rows value should be used. + + + + + This class represents the various inputs and outputs used with the + method. + + + + + Constructs an instance of this class. + + + The number of (and + ) instances to + pre-allocate space for. + + + The number of instances to + pre-allocate space for. + + + + + Converts a native pointer to a native sqlite3_index_info structure + into a new object instance. + + + The native pointer to the native sqlite3_index_info structure to + convert. + + + Upon success, this parameter will be modified to contain the newly + created object instance. + + + + + Populates the outputs of a pre-allocated native sqlite3_index_info + structure using an existing object + instance. + + + The existing object instance containing + the output data to use. + + + The native pointer to the pre-allocated native sqlite3_index_info + structure. + + + + + The object instance containing + the inputs to the + method. + + + + + The object instance containing + the outputs from the + method. + + + + + This class represents a managed virtual table implementation. It is + not sealed and should be used as the base class for any user-defined + virtual table classes implemented in managed code. + + + + + The index within the array of strings provided to the + and + methods containing the + name of the module implementing this virtual table. + + + + + The index within the array of strings provided to the + and + methods containing the + name of the database containing this virtual table. + + + + + The index within the array of strings provided to the + and + methods containing the + name of the virtual table. + + + + + Constructs an instance of this class. + + + The original array of strings provided to the + and + methods. + + + + + This method should normally be used by the + method in order to + perform index selection based on the constraints provided by the + SQLite core library. + + + The object instance containing all the + data for the inputs and outputs relating to index selection. + + + Non-zero upon success. + + + + + Attempts to record the renaming of the virtual table associated + with this object instance. + + + The new name for the virtual table. + + + Non-zero upon success. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being called + from the finalizer. + + + + + Finalizes this object instance. + + + + + The original array of strings provided to the + and + methods. + + + + + The name of the module implementing this virtual table. + + + + + The name of the database containing this virtual table. + + + + + The name of the virtual table. + + + + + The object instance containing all the + data for the inputs and outputs relating to the most recent index + selection. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + This class represents a managed virtual table cursor implementation. + It is not sealed and should be used as the base class for any + user-defined virtual table cursor classes implemented in managed code. + + + + + This value represents an invalid integer row sequence number. + + + + + The field holds the integer row sequence number for the current row + pointed to by this cursor object instance. + + + + + Constructs an instance of this class. + + + The object instance associated + with this object instance. + + + + + Constructs an instance of this class. + + + + + Attempts to persist the specified object + instances in order to make them available after the + method returns. + + + The array of object instances to be + persisted. + + + The number of object instances that were + successfully persisted. + + + + + This method should normally be used by the + method in order to + perform filtering of the result rows and/or to record the filtering + criteria provided by the SQLite core library. + + + Number used to help identify the selected index. + + + String used to help identify the selected index. + + + The values corresponding to each column in the selected index. + + + + + Determines the integer row sequence number for the current row. + + + The integer row sequence number for the current row -OR- zero if + it cannot be determined. + + + + + Adjusts the integer row sequence number so that it refers to the + next row. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being called + from the finalizer. + + + + + Finalizes this object instance. + + + + + The object instance associated + with this object instance. + + + + + Number used to help identify the selected index. This value will + be set via the method. + + + + + String used to help identify the selected index. This value will + be set via the method. + + + + + The values used to filter the rows returned via this cursor object + instance. This value will be set via the + method. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + This interface represents a virtual table implementation written in + native code. + + + + + + This method is called to create a new instance of a virtual table + in response to a CREATE VIRTUAL TABLE statement. The db parameter + is a pointer to the SQLite database connection that is executing + the CREATE VIRTUAL TABLE statement. The pAux argument is the copy + of the client data pointer that was the fourth argument to the + sqlite3_create_module() or sqlite3_create_module_v2() call that + registered the virtual table module. The argv parameter is an + array of argc pointers to null terminated strings. The first + string, argv[0], is the name of the module being invoked. The + module name is the name provided as the second argument to + sqlite3_create_module() and as the argument to the USING clause of + the CREATE VIRTUAL TABLE statement that is running. The second, + argv[1], is the name of the database in which the new virtual table + is being created. The database name is "main" for the primary + database, or "temp" for TEMP database, or the name given at the + end of the ATTACH statement for attached databases. The third + element of the array, argv[2], is the name of the new virtual + table, as specified following the TABLE keyword in the CREATE + VIRTUAL TABLE statement. If present, the fourth and subsequent + strings in the argv[] array report the arguments to the module name + in the CREATE VIRTUAL TABLE statement. + + + The job of this method is to construct the new virtual table object + (an sqlite3_vtab object) and return a pointer to it in *ppVTab. + + + As part of the task of creating a new sqlite3_vtab structure, this + method must invoke sqlite3_declare_vtab() to tell the SQLite core + about the columns and datatypes in the virtual table. The + sqlite3_declare_vtab() API has the following prototype: + + + + int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable) + + + + The first argument to sqlite3_declare_vtab() must be the same + database connection pointer as the first parameter to this method. + The second argument to sqlite3_declare_vtab() must a + zero-terminated UTF-8 string that contains a well-formed CREATE + TABLE statement that defines the columns in the virtual table and + their data types. The name of the table in this CREATE TABLE + statement is ignored, as are all constraints. Only the column names + and datatypes matter. The CREATE TABLE statement string need not to + be held in persistent memory. The string can be deallocated and/or + reused as soon as the sqlite3_declare_vtab() routine returns. + + + + The native database connection handle. + + + The original native pointer value that was provided to the + sqlite3_create_module(), sqlite3_create_module_v2() or + sqlite3_create_disposable_module() functions. + + + The number of arguments from the CREATE VIRTUAL TABLE statement. + + + The array of string arguments from the CREATE VIRTUAL TABLE + statement. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab derived structure. + + + Upon failure, this parameter must be modified to point to the error + message, with the underlying memory having been obtained from the + sqlite3_malloc() function. + + + A standard SQLite return code. + + + + + + The xConnect method is very similar to xCreate. It has the same + parameters and constructs a new sqlite3_vtab structure just like + xCreate. And it must also call sqlite3_declare_vtab() like xCreate. + + + The difference is that xConnect is called to establish a new + connection to an existing virtual table whereas xCreate is called + to create a new virtual table from scratch. + + + The xCreate and xConnect methods are only different when the + virtual table has some kind of backing store that must be + initialized the first time the virtual table is created. The + xCreate method creates and initializes the backing store. The + xConnect method just connects to an existing backing store. + + + As an example, consider a virtual table implementation that + provides read-only access to existing comma-separated-value (CSV) + files on disk. There is no backing store that needs to be created + or initialized for such a virtual table (since the CSV files + already exist on disk) so the xCreate and xConnect methods will be + identical for that module. + + + Another example is a virtual table that implements a full-text + index. The xCreate method must create and initialize data + structures to hold the dictionary and posting lists for that index. + The xConnect method, on the other hand, only has to locate and use + an existing dictionary and posting lists that were created by a + prior xCreate call. + + + The xConnect method must return SQLITE_OK if it is successful in + creating the new virtual table, or SQLITE_ERROR if it is not + successful. If not successful, the sqlite3_vtab structure must not + be allocated. An error message may optionally be returned in *pzErr + if unsuccessful. Space to hold the error message string must be + allocated using an SQLite memory allocation function like + sqlite3_malloc() or sqlite3_mprintf() as the SQLite core will + attempt to free the space using sqlite3_free() after the error has + been reported up to the application. + + + The xConnect method is required for every virtual table + implementation, though the xCreate and xConnect pointers of the + sqlite3_module object may point to the same function the virtual + table does not need to initialize backing store. + + + + The native database connection handle. + + + The original native pointer value that was provided to the + sqlite3_create_module(), sqlite3_create_module_v2() or + sqlite3_create_disposable_module() functions. + + + The number of arguments from the CREATE VIRTUAL TABLE statement. + + + The array of string arguments from the CREATE VIRTUAL TABLE + statement. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab derived structure. + + + Upon failure, this parameter must be modified to point to the error + message, with the underlying memory having been obtained from the + sqlite3_malloc() function. + + + A standard SQLite return code. + + + + + + SQLite uses the xBestIndex method of a virtual table module to + determine the best way to access the virtual table. The xBestIndex + method has a prototype like this: + + + int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*); + + + The SQLite core communicates with the xBestIndex method by filling + in certain fields of the sqlite3_index_info structure and passing a + pointer to that structure into xBestIndex as the second parameter. + The xBestIndex method fills out other fields of this structure + which forms the reply. The sqlite3_index_info structure looks like + this: + + + struct sqlite3_index_info { + /* Inputs */ + const int nConstraint; /* Number of entries in aConstraint */ + const struct sqlite3_index_constraint { + int iColumn; /* Column on left-hand side of + * constraint */ + unsigned char op; /* Constraint operator */ + unsigned char usable; /* True if this constraint is usable */ + int iTermOffset; /* Used internally - xBestIndex should + * ignore */ + } *const aConstraint; /* Table of WHERE clause constraints */ + const int nOrderBy; /* Number of terms in the ORDER BY + * clause */ + const struct sqlite3_index_orderby { + int iColumn; /* Column number */ + unsigned char desc; /* True for DESC. False for ASC. */ + } *const aOrderBy; /* The ORDER BY clause */ + /* Outputs */ + struct sqlite3_index_constraint_usage { + int argvIndex; /* if greater than zero, constraint is + * part of argv to xFilter */ + unsigned char omit; /* Do not code a test for this + * constraint */ + } *const aConstraintUsage; + int idxNum; /* Number used to identify the index */ + char *idxStr; /* String, possibly obtained from + * sqlite3_malloc() */ + int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if + * true */ + int orderByConsumed; /* True if output is already ordered */ + double estimatedCost; /* Estimated cost of using this index */ + }; + + + In addition, there are some defined constants: + + + #define SQLITE_INDEX_CONSTRAINT_EQ 2 + #define SQLITE_INDEX_CONSTRAINT_GT 4 + #define SQLITE_INDEX_CONSTRAINT_LE 8 + #define SQLITE_INDEX_CONSTRAINT_LT 16 + #define SQLITE_INDEX_CONSTRAINT_GE 32 + #define SQLITE_INDEX_CONSTRAINT_MATCH 64 + + + The SQLite core calls the xBestIndex method when it is compiling a + query that involves a virtual table. In other words, SQLite calls + this method when it is running sqlite3_prepare() or the equivalent. + By calling this method, the SQLite core is saying to the virtual + table that it needs to access some subset of the rows in the + virtual table and it wants to know the most efficient way to do + that access. The xBestIndex method replies with information that + the SQLite core can then use to conduct an efficient search of the + virtual table. + + + While compiling a single SQL query, the SQLite core might call + xBestIndex multiple times with different settings in + sqlite3_index_info. The SQLite core will then select the + combination that appears to give the best performance. + + + Before calling this method, the SQLite core initializes an instance + of the sqlite3_index_info structure with information about the + query that it is currently trying to process. This information + derives mainly from the WHERE clause and ORDER BY or GROUP BY + clauses of the query, but also from any ON or USING clauses if the + query is a join. The information that the SQLite core provides to + the xBestIndex method is held in the part of the structure that is + marked as "Inputs". The "Outputs" section is initialized to zero. + + + The information in the sqlite3_index_info structure is ephemeral + and may be overwritten or deallocated as soon as the xBestIndex + method returns. If the xBestIndex method needs to remember any part + of the sqlite3_index_info structure, it should make a copy. Care + must be take to store the copy in a place where it will be + deallocated, such as in the idxStr field with needToFreeIdxStr set + to 1. + + + Note that xBestIndex will always be called before xFilter, since + the idxNum and idxStr outputs from xBestIndex are required inputs + to xFilter. However, there is no guarantee that xFilter will be + called following a successful xBestIndex. + + + The xBestIndex method is required for every virtual table + implementation. + + + 2.3.1 Inputs + + + The main thing that the SQLite core is trying to communicate to the + virtual table is the constraints that are available to limit the + number of rows that need to be searched. The aConstraint[] array + contains one entry for each constraint. There will be exactly + nConstraint entries in that array. + + + Each constraint will correspond to a term in the WHERE clause or in + a USING or ON clause that is of the form + + + column OP EXPR + + + Where "column" is a column in the virtual table, OP is an operator + like "=" or "<", and EXPR is an arbitrary expression. So, for + example, if the WHERE clause contained a term like this: + + + a = 5 + + + Then one of the constraints would be on the "a" column with + operator "=" and an expression of "5". Constraints need not have a + literal representation of the WHERE clause. The query optimizer + might make transformations to the WHERE clause in order to extract + as many constraints as it can. So, for example, if the WHERE clause + contained something like this: + + + x BETWEEN 10 AND 100 AND 999>y + + + The query optimizer might translate this into three separate + constraints: + + + x >= 10 + x <= 100 + y < 999 + + + For each constraint, the aConstraint[].iColumn field indicates + which column appears on the left-hand side of the constraint. The + first column of the virtual table is column 0. The rowid of the + virtual table is column -1. The aConstraint[].op field indicates + which operator is used. The SQLITE_INDEX_CONSTRAINT_* constants map + integer constants into operator values. Columns occur in the order + they were defined by the call to sqlite3_declare_vtab() in the + xCreate or xConnect method. Hidden columns are counted when + determining the column index. + + + The aConstraint[] array contains information about all constraints + that apply to the virtual table. But some of the constraints might + not be usable because of the way tables are ordered in a join. The + xBestIndex method must therefore only consider constraints that + have an aConstraint[].usable flag which is true. + + + In addition to WHERE clause constraints, the SQLite core also tells + the xBestIndex method about the ORDER BY clause. (In an aggregate + query, the SQLite core might put in GROUP BY clause information in + place of the ORDER BY clause information, but this fact should not + make any difference to the xBestIndex method.) If all terms of the + ORDER BY clause are columns in the virtual table, then nOrderBy + will be the number of terms in the ORDER BY clause and the + aOrderBy[] array will identify the column for each term in the + order by clause and whether or not that column is ASC or DESC. + + + 2.3.2 Outputs + + + Given all of the information above, the job of the xBestIndex + method it to figure out the best way to search the virtual table. + + + The xBestIndex method fills the idxNum and idxStr fields with + information that communicates an indexing strategy to the xFilter + method. The information in idxNum and idxStr is arbitrary as far as + the SQLite core is concerned. The SQLite core just copies the + information through to the xFilter method. Any desired meaning can + be assigned to idxNum and idxStr as long as xBestIndex and xFilter + agree on what that meaning is. + + + The idxStr value may be a string obtained from an SQLite memory + allocation function such as sqlite3_mprintf(). If this is the case, + then the needToFreeIdxStr flag must be set to true so that the + SQLite core will know to call sqlite3_free() on that string when it + has finished with it, and thus avoid a memory leak. + + + If the virtual table will output rows in the order specified by the + ORDER BY clause, then the orderByConsumed flag may be set to true. + If the output is not automatically in the correct order then + orderByConsumed must be left in its default false setting. This + will indicate to the SQLite core that it will need to do a separate + sorting pass over the data after it comes out of the virtual table. + + + The estimatedCost field should be set to the estimated number of + disk access operations required to execute this query against the + virtual table. The SQLite core will often call xBestIndex multiple + times with different constraints, obtain multiple cost estimates, + then choose the query plan that gives the lowest estimate. + + + The aConstraintUsage[] array contains one element for each of the + nConstraint constraints in the inputs section of the + sqlite3_index_info structure. The aConstraintUsage[] array is used + by xBestIndex to tell the core how it is using the constraints. + + + The xBestIndex method may set aConstraintUsage[].argvIndex entries + to values greater than one. Exactly one entry should be set to 1, + another to 2, another to 3, and so forth up to as many or as few as + the xBestIndex method wants. The EXPR of the corresponding + constraints will then be passed in as the argv[] parameters to + xFilter. + + + For example, if the aConstraint[3].argvIndex is set to 1, then when + xFilter is called, the argv[0] passed to xFilter will have the EXPR + value of the aConstraint[3] constraint. + + + By default, the SQLite core double checks all constraints on each + row of the virtual table that it receives. If such a check is + redundant, the xBestFilter method can suppress that double-check by + setting aConstraintUsage[].omit. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The native pointer to the sqlite3_index_info structure. + + + A standard SQLite return code. + + + + + + This method releases a connection to a virtual table. Only the + sqlite3_vtab object is destroyed. The virtual table is not + destroyed and any backing store associated with the virtual table + persists. This method undoes the work of xConnect. + + + This method is a destructor for a connection to the virtual table. + Contrast this method with xDestroy. The xDestroy is a destructor + for the entire virtual table. + + + The xDisconnect method is required for every virtual table + implementation, though it is acceptable for the xDisconnect and + xDestroy methods to be the same function if that makes sense for + the particular virtual table. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method releases a connection to a virtual table, just like the + xDisconnect method, and it also destroys the underlying table + implementation. This method undoes the work of xCreate. + + + The xDisconnect method is called whenever a database connection + that uses a virtual table is closed. The xDestroy method is only + called when a DROP TABLE statement is executed against the virtual + table. + + + The xDestroy method is required for every virtual table + implementation, though it is acceptable for the xDisconnect and + xDestroy methods to be the same function if that makes sense for + the particular virtual table. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + The xOpen method creates a new cursor used for accessing (read + and/or writing) a virtual table. A successful invocation of this + method will allocate the memory for the sqlite3_vtab_cursor (or a + subclass), initialize the new object, and make *ppCursor point to + the new object. The successful call then returns SQLITE_OK. + + + For every successful call to this method, the SQLite core will + later invoke the xClose method to destroy the allocated cursor. + + + The xOpen method need not initialize the pVtab field of the + sqlite3_vtab_cursor structure. The SQLite core will take care of + that chore automatically. + + + A virtual table implementation must be able to support an arbitrary + number of simultaneously open cursors. + + + When initially opened, the cursor is in an undefined state. The + SQLite core will invoke the xFilter method on the cursor prior to + any attempt to position or read from the cursor. + + + The xOpen method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab derived structure. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab_cursor derived structure. + + + A standard SQLite return code. + + + + + + The xClose method closes a cursor previously opened by xOpen. The + SQLite core will always call xClose once for each cursor opened + using xOpen. + + + This method must release all resources allocated by the + corresponding xOpen call. The routine will not be called again even + if it returns an error. The SQLite core will not use the + sqlite3_vtab_cursor again after it has been closed. + + + The xClose method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + A standard SQLite return code. + + + + + + This method begins a search of a virtual table. The first argument + is a cursor opened by xOpen. The next two argument define a + particular search index previously chosen by xBestIndex. The + specific meanings of idxNum and idxStr are unimportant as long as + xFilter and xBestIndex agree on what that meaning is. + + + The xBestIndex function may have requested the values of certain + expressions using the aConstraintUsage[].argvIndex values of the + sqlite3_index_info structure. Those values are passed to xFilter + using the argc and argv parameters. + + + If the virtual table contains one or more rows that match the + search criteria, then the cursor must be left point at the first + row. Subsequent calls to xEof must return false (zero). If there + are no rows match, then the cursor must be left in a state that + will cause the xEof to return true (non-zero). The SQLite engine + will use the xColumn and xRowid methods to access that row content. + The xNext method will be used to advance to the next row. + + + This method must return SQLITE_OK if successful, or an sqlite error + code if an error occurs. + + + The xFilter method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + Number used to help identify the selected index. + + + The native pointer to the UTF-8 encoded string containing the + string used to help identify the selected index. + + + The number of native pointers to sqlite3_value structures specified + in . + + + An array of native pointers to sqlite3_value structures containing + filtering criteria for the selected index. + + + A standard SQLite return code. + + + + + + The xNext method advances a virtual table cursor to the next row of + a result set initiated by xFilter. If the cursor is already + pointing at the last row when this routine is called, then the + cursor no longer points to valid data and a subsequent call to the + xEof method must return true (non-zero). If the cursor is + successfully advanced to another row of content, then subsequent + calls to xEof must return false (zero). + + + This method must return SQLITE_OK if successful, or an sqlite error + code if an error occurs. + + + The xNext method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + A standard SQLite return code. + + + + + + The xEof method must return false (zero) if the specified cursor + currently points to a valid row of data, or true (non-zero) + otherwise. This method is called by the SQL engine immediately + after each xFilter and xNext invocation. + + + The xEof method is required for every virtual table implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + Non-zero if no more rows are available; zero otherwise. + + + + + + The SQLite core invokes this method in order to find the value for + the N-th column of the current row. N is zero-based so the first + column is numbered 0. The xColumn method may return its result back + to SQLite using one of the following interface: + + + sqlite3_result_blob() + sqlite3_result_double() + sqlite3_result_int() + sqlite3_result_int64() + sqlite3_result_null() + sqlite3_result_text() + sqlite3_result_text16() + sqlite3_result_text16le() + sqlite3_result_text16be() + sqlite3_result_zeroblob() + + + If the xColumn method implementation calls none of the functions + above, then the value of the column defaults to an SQL NULL. + + + To raise an error, the xColumn method should use one of the + result_text() methods to set the error message text, then return an + appropriate error code. The xColumn method must return SQLITE_OK on + success. + + + The xColumn method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + The native pointer to the sqlite3_context structure to be used + for returning the specified column value to the SQLite core + library. + + + The zero-based index corresponding to the column containing the + value to be returned. + + + A standard SQLite return code. + + + + + + A successful invocation of this method will cause *pRowid to be + filled with the rowid of row that the virtual table cursor pCur is + currently pointing at. This method returns SQLITE_OK on success. It + returns an appropriate error code on failure. + + + The xRowid method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the current row for the specified cursor. + + + A standard SQLite return code. + + + + + + All changes to a virtual table are made using the xUpdate method. + This one method can be used to insert, delete, or update. + + + The argc parameter specifies the number of entries in the argv + array. The value of argc will be 1 for a pure delete operation or + N+2 for an insert or replace or update where N is the number of + columns in the table. In the previous sentence, N includes any + hidden columns. + + + Every argv entry will have a non-NULL value in C but may contain + the SQL value NULL. In other words, it is always true that + argv[i]!=0 for i between 0 and argc-1. However, it might be the + case that sqlite3_value_type(argv[i])==SQLITE_NULL. + + + The argv[0] parameter is the rowid of a row in the virtual table + to be deleted. If argv[0] is an SQL NULL, then no deletion occurs. + + + The argv[1] parameter is the rowid of a new row to be inserted into + the virtual table. If argv[1] is an SQL NULL, then the + implementation must choose a rowid for the newly inserted row. + Subsequent argv[] entries contain values of the columns of the + virtual table, in the order that the columns were declared. The + number of columns will match the table declaration that the + xConnect or xCreate method made using the sqlite3_declare_vtab() + call. All hidden columns are included. + + + When doing an insert without a rowid (argc>1, argv[1] is an SQL + NULL), the implementation must set *pRowid to the rowid of the + newly inserted row; this will become the value returned by the + sqlite3_last_insert_rowid() function. Setting this value in all the + other cases is a harmless no-op; the SQLite engine ignores the + *pRowid return value if argc==1 or argv[1] is not an SQL NULL. + + + Each call to xUpdate will fall into one of cases shown below. Note + that references to argv[i] mean the SQL value held within the + argv[i] object, not the argv[i] object itself. + + + argc = 1 + + + The single row with rowid equal to argv[0] is deleted. No + insert occurs. + + + argc > 1 + argv[0] = NULL + + + A new row is inserted with a rowid argv[1] and column + values in argv[2] and following. If argv[1] is an SQL NULL, + the a new unique rowid is generated automatically. + + + argc > 1 + argv[0] ? NULL + argv[0] = argv[1] + + + The row with rowid argv[0] is updated with new values in + argv[2] and following parameters. + + + argc > 1 + argv[0] ? NULL + argv[0] ? argv[1] + + + The row with rowid argv[0] is updated with rowid argv[1] + and new values in argv[2] and following parameters. This + will occur when an SQL statement updates a rowid, as in + the statement: + + + UPDATE table SET rowid=rowid+1 WHERE ...; + + + The xUpdate method must return SQLITE_OK if and only if it is + successful. If a failure occurs, the xUpdate must return an + appropriate error code. On a failure, the pVTab->zErrMsg element + may optionally be replaced with error message text stored in memory + allocated from SQLite using functions such as sqlite3_mprintf() or + sqlite3_malloc(). + + + If the xUpdate method violates some constraint of the virtual table + (including, but not limited to, attempting to store a value of the + wrong datatype, attempting to store a value that is too large or + too small, or attempting to change a read-only value) then the + xUpdate must fail with an appropriate error code. + + + There might be one or more sqlite3_vtab_cursor objects open and in + use on the virtual table instance and perhaps even on the row of + the virtual table when the xUpdate method is invoked. The + implementation of xUpdate must be prepared for attempts to delete + or modify rows of the table out from other existing cursors. If the + virtual table cannot accommodate such changes, the xUpdate method + must return an error code. + + + The xUpdate method is optional. If the xUpdate pointer in the + sqlite3_module for a virtual table is a NULL pointer, then the + virtual table is read-only. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The number of new or modified column values contained in + . + + + The array of native pointers to sqlite3_value structures containing + the new or modified column values, if any. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the row that was inserted, if any. + + + A standard SQLite return code. + + + + + + This method begins a transaction on a virtual table. This is method + is optional. The xBegin pointer of sqlite3_module may be NULL. + + + This method is always followed by one call to either the xCommit or + xRollback method. Virtual table transactions do not nest, so the + xBegin method will not be invoked more than once on a single + virtual table without an intervening call to either xCommit or + xRollback. Multiple calls to other methods can and likely will + occur in between the xBegin and the corresponding xCommit or + xRollback. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method signals the start of a two-phase commit on a virtual + table. This is method is optional. The xSync pointer of + sqlite3_module may be NULL. + + + This method is only invoked after call to the xBegin method and + prior to an xCommit or xRollback. In order to implement two-phase + commit, the xSync method on all virtual tables is invoked prior to + invoking the xCommit method on any virtual table. If any of the + xSync methods fail, the entire transaction is rolled back. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method causes a virtual table transaction to commit. This is + method is optional. The xCommit pointer of sqlite3_module may be + NULL. + + + A call to this method always follows a prior call to xBegin and + xSync. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method causes a virtual table transaction to rollback. This is + method is optional. The xRollback pointer of sqlite3_module may be + NULL. + + + A call to this method always follows a prior call to xBegin. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method provides notification that the virtual table + implementation that the virtual table will be given a new name. If + this method returns SQLITE_OK then SQLite renames the table. If + this method returns an error code then the renaming is prevented. + + + The xRename method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The number of arguments to the function being sought. + + + The name of the function being sought. + + + Upon success, this parameter must be modified to contain the + delegate responsible for implementing the specified function. + + + Upon success, this parameter must be modified to contain the + native user-data pointer associated with + . + + + Non-zero if the specified function was found; zero otherwise. + + + + + + This method provides notification that the virtual table + implementation that the virtual table will be given a new name. If + this method returns SQLITE_OK then SQLite renames the table. If + this method returns an error code then the renaming is prevented. + + + The xRename method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The native pointer to the UTF-8 encoded string containing the new + name for the virtual table. + + + A standard SQLite return code. + + + + + + These methods provide the virtual table implementation an + opportunity to implement nested transactions. They are always + optional and will only be called in SQLite version 3.7.7 and later. + + + When xSavepoint(X,N) is invoked, that is a signal to the virtual + table X that it should save its current state as savepoint N. A + subsequent call to xRollbackTo(X,R) means that the state of the + virtual table should return to what it was when xSavepoint(X,R) was + last called. The call to xRollbackTo(X,R) will invalidate all + savepoints with N>R; none of the invalided savepoints will be + rolled back or released without first being reinitialized by a call + to xSavepoint(). A call to xRelease(X,M) invalidates all savepoints + where N>=M. + + + None of the xSavepoint(), xRelease(), or xRollbackTo() methods will + ever be called except in between calls to xBegin() and either + xCommit() or xRollback(). + + + + The native pointer to the sqlite3_vtab derived structure. + + + This is an integer identifier under which the the current state of + the virtual table should be saved. + + + A standard SQLite return code. + + + + + + These methods provide the virtual table implementation an + opportunity to implement nested transactions. They are always + optional and will only be called in SQLite version 3.7.7 and later. + + + When xSavepoint(X,N) is invoked, that is a signal to the virtual + table X that it should save its current state as savepoint N. A + subsequent call to xRollbackTo(X,R) means that the state of the + virtual table should return to what it was when xSavepoint(X,R) was + last called. The call to xRollbackTo(X,R) will invalidate all + savepoints with N>R; none of the invalided savepoints will be + rolled back or released without first being reinitialized by a call + to xSavepoint(). A call to xRelease(X,M) invalidates all savepoints + where N>=M. + + + None of the xSavepoint(), xRelease(), or xRollbackTo() methods will + ever be called except in between calls to xBegin() and either + xCommit() or xRollback(). + + + + The native pointer to the sqlite3_vtab derived structure. + + + This is an integer used to indicate that any saved states with an + identifier greater than or equal to this should be deleted by the + virtual table. + + + A standard SQLite return code. + + + + + + These methods provide the virtual table implementation an + opportunity to implement nested transactions. They are always + optional and will only be called in SQLite version 3.7.7 and later. + + + When xSavepoint(X,N) is invoked, that is a signal to the virtual + table X that it should save its current state as savepoint N. A + subsequent call to xRollbackTo(X,R) means that the state of the + virtual table should return to what it was when xSavepoint(X,R) was + last called. The call to xRollbackTo(X,R) will invalidate all + savepoints with N>R; none of the invalided savepoints will be + rolled back or released without first being reinitialized by a call + to xSavepoint(). A call to xRelease(X,M) invalidates all savepoints + where N>=M. + + + None of the xSavepoint(), xRelease(), or xRollbackTo() methods will + ever be called except in between calls to xBegin() and either + xCommit() or xRollback(). + + + + The native pointer to the sqlite3_vtab derived structure. + + + This is an integer identifier used to specify a specific saved + state for the virtual table for it to restore itself back to, which + should also have the effect of deleting all saved states with an + integer identifier greater than this one. + + + A standard SQLite return code. + + + + + This interface represents a virtual table implementation written in + managed code. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The object instance containing all the + data for the inputs and outputs relating to index selection. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + Upon success, this parameter must be modified to contain the + object instance associated + with the newly opened virtual table cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Number used to help identify the selected index. + + + String used to help identify the selected index. + + + The values corresponding to each column in the selected index. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Non-zero if no more rows are available; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to be used for + returning the specified column value to the SQLite core library. + + + The zero-based index corresponding to the column containing the + value to be returned. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the current row for the specified cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The array of object instances containing + the new or modified column values, if any. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the row that was inserted, if any. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The number of arguments to the function being sought. + + + The name of the function being sought. + + + Upon success, this parameter must be modified to contain the + object instance responsible for + implementing the specified function. + + + Upon success, this parameter must be modified to contain the + native user-data pointer associated with + . + + + Non-zero if the specified function was found; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The new name for the virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier under which the the current state of + the virtual table should be saved. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer used to indicate that any saved states with an + identifier greater than or equal to this should be deleted by the + virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier used to specify a specific saved + state for the virtual table for it to restore itself back to, which + should also have the effect of deleting all saved states with an + integer identifier greater than this one. + + + A standard SQLite return code. + + + + + Returns non-zero if the schema for the virtual table has been + declared. + + + + + Returns the name of the module as it was registered with the SQLite + core library. + + + + + This class contains static methods that are used to allocate, + manipulate, and free native memory provided by the SQLite core library. + + + + + Allocates at least the specified number of bytes of native memory + via the SQLite core library sqlite3_malloc() function and returns + the resulting native pointer. + + + The number of bytes to allocate. + + + The native pointer that points to a block of memory of at least the + specified size -OR- if the memory could + not be allocated. + + + + + Gets and returns the actual size of the specified memory block that + was previously obtained from the method. + + + The native pointer to the memory block previously obtained from the + method. + + + The actual size, in bytes, of the memory block specified via the + native pointer. + + + + + Frees a memory block previously obtained from the + method. + + + The native pointer to the memory block previously obtained from the + method. + + + + + This class contains static methods that are used to deal with native + UTF-8 string pointers to be used with the SQLite core library. + + + + + This is the maximum possible length for the native UTF-8 encoded + strings used with the SQLite core library. + + + + + This is the object instance used to handle + conversions from/to UTF-8. + + + + + Converts the specified managed string into the UTF-8 encoding and + returns the array of bytes containing its representation in that + encoding. + + + The managed string to convert. + + + The array of bytes containing the representation of the managed + string in the UTF-8 encoding or null upon failure. + + + + + Converts the specified array of bytes representing a string in the + UTF-8 encoding and returns a managed string. + + + The array of bytes to convert. + + + The managed string or null upon failure. + + + + + Probes a native pointer to a string in the UTF-8 encoding for its + terminating NUL character, within the specified length limit. + + + The native NUL-terminated string pointer. + + + The maximum length of the native string, in bytes. + + + The length of the native string, in bytes -OR- zero if the length + could not be determined. + + + + + Converts the specified native NUL-terminated UTF-8 string pointer + into a managed string. + + + The native NUL-terminated UTF-8 string pointer. + + + The managed string or null upon failure. + + + + + Converts the specified native UTF-8 string pointer of the specified + length into a managed string. + + + The native UTF-8 string pointer. + + + The length of the native string, in bytes. + + + The managed string or null upon failure. + + + + + Converts the specified managed string into a native NUL-terminated + UTF-8 string pointer using memory obtained from the SQLite core + library. + + + The managed string to convert. + + + The native NUL-terminated UTF-8 string pointer or + upon failure. + + + + + Converts a logical array of native NUL-terminated UTF-8 string + pointers into an array of managed strings. + + + The number of elements in the logical array of native + NUL-terminated UTF-8 string pointers. + + + The native pointer to the logical array of native NUL-terminated + UTF-8 string pointers to convert. + + + The array of managed strings or null upon failure. + + + + + Converts an array of managed strings into an array of native + NUL-terminated UTF-8 string pointers. + + + The array of managed strings to convert. + + + The array of native NUL-terminated UTF-8 string pointers or null + upon failure. + + + + + This class contains static methods that are used to deal with native + pointers to memory blocks that logically contain arrays of bytes to be + used with the SQLite core library. + + + + + Converts a native pointer to a logical array of bytes of the + specified length into a managed byte array. + + + The native pointer to the logical array of bytes to convert. + + + The length, in bytes, of the logical array of bytes to convert. + + + The managed byte array or null upon failure. + + + + + Converts a managed byte array into a native pointer to a logical + array of bytes. + + + The managed byte array to convert. + + + The native pointer to a logical byte array or null upon failure. + + + + + This class contains static methods that are used to perform several + low-level data marshalling tasks between native and managed code. + + + + + Returns a new object instance based on the + specified object instance and an integer + offset. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location that the new + object instance should point to. + + + The new object instance. + + + + + Rounds up an integer size to the next multiple of the alignment. + + + The size, in bytes, to be rounded up. + + + The required alignment for the return value. + + + The size, in bytes, rounded up to the next multiple of the + alignment. This value may end up being the same as the original + size. + + + + + Determines the offset, in bytes, of the next structure member. + + + The offset, in bytes, of the current structure member. + + + The size, in bytes, of the current structure member. + + + The alignment, in bytes, of the next structure member. + + + The offset, in bytes, of the next structure member. + + + + + Reads a value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be read is located. + + + The value at the specified memory location. + + + + + Reads a value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + to be read is located. + + + The value at the specified memory location. + + + + + Reads an value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be read is located. + + + The value at the specified memory location. + + + + + Writes an value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Writes an value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Writes a value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Writes a value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + This class represents a managed virtual table module implementation. + It is not sealed and must be used as the base class for any + user-defined virtual table module classes implemented in managed code. + + + + + The default version of the native sqlite3_module structure in use. + + + + + This field is used to store the native sqlite3_module structure + associated with this object instance. + + + + + This field is used to store the destructor delegate to be passed to + the SQLite core library via the sqlite3_create_disposable_module() + function. + + + + + This field is used to store a pointer to the native sqlite3_module + structure returned by the sqlite3_create_disposable_module + function. + + + + + This field is used to store the virtual table instances associated + with this module. The native pointer to the sqlite3_vtab derived + structure is used to key into this collection. + + + + + This field is used to store the virtual table cursor instances + associated with this module. The native pointer to the + sqlite3_vtab_cursor derived structure is used to key into this + collection. + + + + + This field is used to store the virtual table function instances + associated with this module. The case-insensitive function name + and the number of arguments (with -1 meaning "any") are used to + construct the string that is used to key into this collection. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + + + Calls the native SQLite core library in order to create a new + disposable module containing the implementation of a virtual table. + + + The native database connection pointer to use. + + + Non-zero upon success. + + + + + This method is called by the SQLite core library when the native + module associated with this object instance is being destroyed due + to its parent connection being closed. It may also be called by + the "vtshim" module if/when the sqlite3_dispose_module() function + is called. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + + + Creates and returns the native sqlite_module structure using the + configured (or default) + interface implementation. + + + The native sqlite_module structure using the configured (or + default) interface + implementation. + + + + + Creates and returns the native sqlite_module structure using the + specified interface + implementation. + + + The interface implementation to + use. + + + The native sqlite_module structure using the specified + interface implementation. + + + + + Creates a copy of the specified + object instance, + using default implementations for the contained delegates when + necessary. + + + The object + instance to copy. + + + The new object + instance. + + + + + Calls one of the virtual table initialization methods. + + + Non-zero to call the + method; otherwise, the + method will be called. + + + The native database connection handle. + + + The original native pointer value that was provided to the + sqlite3_create_module(), sqlite3_create_module_v2() or + sqlite3_create_disposable_module() functions. + + + The number of arguments from the CREATE VIRTUAL TABLE statement. + + + The array of string arguments from the CREATE VIRTUAL TABLE + statement. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab derived structure. + + + Upon failure, this parameter must be modified to point to the error + message, with the underlying memory having been obtained from the + sqlite3_malloc() function. + + + A standard SQLite return code. + + + + + Calls one of the virtual table finalization methods. + + + Non-zero to call the + method; otherwise, the + method will be + called. + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The native pointer to the sqlite3_vtab derived structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The native pointer to the sqlite3_vtab_cursor derived structure + used to get the native pointer to the sqlite3_vtab derived + structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Gets and returns the interface + implementation to be used when creating the native sqlite3_module + structure. Derived classes may override this method to supply an + alternate implementation for the + interface. + + + The interface implementation to + be used when populating the native sqlite3_module structure. If + the returned value is null, the private methods provided by the + class and relating to the + interface will be used to + create the necessary delegates. + + + + + Creates and returns the + interface implementation corresponding to the current + object instance. + + + The interface implementation + corresponding to the current object + instance. + + + + + Allocates a native sqlite3_vtab derived structure and returns a + native pointer to it. + + + A native pointer to a native sqlite3_vtab derived structure. + + + + + Zeros out the fields of a native sqlite3_vtab derived structure. + + + The native pointer to the native sqlite3_vtab derived structure to + zero. + + + + + Frees a native sqlite3_vtab structure using the provided native + pointer to it. + + + A native pointer to a native sqlite3_vtab derived structure. + + + + + Allocates a native sqlite3_vtab_cursor derived structure and + returns a native pointer to it. + + + A native pointer to a native sqlite3_vtab_cursor derived structure. + + + + + Frees a native sqlite3_vtab_cursor structure using the provided + native pointer to it. + + + A native pointer to a native sqlite3_vtab_cursor derived structure. + + + + + Reads and returns the native pointer to the sqlite3_vtab derived + structure based on the native pointer to the sqlite3_vtab_cursor + derived structure. + + + The object instance to be used. + + + The native pointer to the sqlite3_vtab_cursor derived structure + from which to read the native pointer to the sqlite3_vtab derived + structure. + + + The native pointer to the sqlite3_vtab derived structure -OR- + if it cannot be determined. + + + + + Reads and returns the native pointer to the sqlite3_vtab derived + structure based on the native pointer to the sqlite3_vtab_cursor + derived structure. + + + The native pointer to the sqlite3_vtab_cursor derived structure + from which to read the native pointer to the sqlite3_vtab derived + structure. + + + The native pointer to the sqlite3_vtab derived structure -OR- + if it cannot be determined. + + + + + Looks up and returns the object + instance based on the native pointer to the sqlite3_vtab derived + structure. + + + The native pointer to the sqlite3_vtab derived structure. + + + The object instance or null if + the corresponding one cannot be found. + + + + + Allocates and returns a native pointer to a sqlite3_vtab derived + structure and creates an association between it and the specified + object instance. + + + The object instance to be used + when creating the association. + + + The native pointer to a sqlite3_vtab derived structure or + if the method fails for any reason. + + + + + Looks up and returns the + object instance based on the native pointer to the + sqlite3_vtab_cursor derived structure. + + + The native pointer to the sqlite3_vtab derived structure. + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + The object instance or null + if the corresponding one cannot be found. + + + + + Allocates and returns a native pointer to a sqlite3_vtab_cursor + derived structure and creates an association between it and the + specified object instance. + + + The object instance to be + used when creating the association. + + + The native pointer to a sqlite3_vtab_cursor derived structure or + if the method fails for any reason. + + + + + Deterimines the key that should be used to identify and store the + object instance for the virtual table + (i.e. to be returned via the + method). + + + The number of arguments to the virtual table function. + + + The name of the virtual table function. + + + The object instance associated with + this virtual table function. + + + The string that should be used to identify and store the virtual + table function instance. This method cannot return null. If null + is returned from this method, the behavior is undefined. + + + + + Attempts to declare the schema for the virtual table using the + specified database connection. + + + The object instance to use when + declaring the schema of the virtual table. This parameter may not + be null. + + + The string containing the CREATE TABLE statement that completely + describes the schema for the virtual table. This parameter may not + be null. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + Calls the native SQLite core library in order to declare a virtual + table function in response to a call into the + + or virtual table + methods. + + + The object instance to use when + declaring the schema of the virtual table. + + + The number of arguments to the function being declared. + + + The name of the function being declared. + + + Upon success, the contents of this parameter are undefined. Upon + failure, it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The native pointer to the sqlite3_vtab derived structure. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + The error message. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the specified estimated cost. + + + The object instance to modify. + + + The estimated cost value to use. Using a null value means that the + default value provided by the SQLite core library should be used. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the default estimated cost. + + + The object instance to modify. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the specified estimated rows. + + + The object instance to modify. + + + The estimated rows value to use. Using a null value means that the + default value provided by the SQLite core library should be used. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the default estimated rows. + + + The object instance to modify. + + + Non-zero upon success. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The object instance containing all the + data for the inputs and outputs relating to index selection. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + Upon success, this parameter must be modified to contain the + object instance associated + with the newly opened virtual table cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Number used to help identify the selected index. + + + String used to help identify the selected index. + + + The values corresponding to each column in the selected index. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Non-zero if no more rows are available; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to be used for + returning the specified column value to the SQLite core library. + + + The zero-based index corresponding to the column containing the + value to be returned. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the current row for the specified cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The array of object instances containing + the new or modified column values, if any. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the row that was inserted, if any. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The number of arguments to the function being sought. + + + The name of the function being sought. + + + Upon success, this parameter must be modified to contain the + object instance responsible for + implementing the specified function. + + + Upon success, this parameter must be modified to contain the + native user-data pointer associated with + . + + + Non-zero if the specified function was found; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The new name for the virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier under which the the current state of + the virtual table should be saved. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer used to indicate that any saved states with an + identifier greater than or equal to this should be deleted by the + virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier used to specify a specific saved + state for the virtual table for it to restore itself back to, which + should also have the effect of deleting all saved states with an + integer identifier greater than this one. + + + A standard SQLite return code. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being + called from the finalizer. + + + + + Finalizes this object instance. + + + + + Returns or sets a boolean value indicating whether virtual table + errors should be logged using the class. + + + + + Returns or sets a boolean value indicating whether exceptions + caught in the + method, + method, and the + method should be logged using the + class. + + + + + Returns or sets a boolean value indicating whether virtual table + errors should be logged using the class. + + + + + Returns or sets a boolean value indicating whether exceptions + caught in the + method, + method, and the + method should be logged using the + class. + + + + + Returns non-zero if the schema for the virtual table has been + declared. + + + + + Returns the name of the module as it was registered with the SQLite + core library. + + + + + This class implements the + interface by forwarding those method calls to the + object instance it contains. If the + contained object instance is null, all + the methods simply generate an + error. + + + + + This is the value that is always used for the "logErrors" + parameter to the various static error handling methods provided + by the class. + + + + + This is the error message text used when the contained + object instance is not available + for any reason. + + + + + The object instance used to provide + an implementation of the + interface. + + + + + Constructs an instance of this class. + + + The object instance used to provide + an implementation of the + interface. + + + + + Sets the table error message to one that indicates the native + module implementation is not available. + + + The native pointer to the sqlite3_vtab derived structure. + + + The value of . + + + + + Sets the table error message to one that indicates the native + module implementation is not available. + + + The native pointer to the sqlite3_vtab_cursor derived + structure. + + + The value of . + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being + called from the finalizer. + + + + + Finalizes this object instance. + + + + + This class represents a virtual table cursor to be used with the + class. It is not sealed and may + be used as the base class for any user-defined virtual table cursor + class that wraps an object instance. + + + + + The instance provided when this cursor + was created. + + + + + This value will be non-zero if false has been returned from the + method. + + + + + Constructs an instance of this class. + + + The object instance associated + with this object instance. + + + The instance to expose as a virtual + table cursor. + + + + + Advances to the next row of the virtual table cursor using the + method of the + object instance. + + + Non-zero if the current row is valid; zero otherwise. If zero is + returned, no further rows are available. + + + + + Resets the virtual table cursor position, also invalidating the + current row, using the method of + the object instance. + + + + + Closes the virtual table cursor. This method must not throw any + exceptions. + + + + + Throws an if the virtual + table cursor has been closed. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + Returns the value for the current row of the virtual table cursor + using the property of the + object instance. + + + + + Returns non-zero if the end of the virtual table cursor has been + seen (i.e. no more rows are available, including the current one). + + + + + Returns non-zero if the virtual table cursor is open. + + + + + This class implements a virtual table module that exposes an + object instance as a read-only virtual + table. It is not sealed and may be used as the base class for any + user-defined virtual table class that wraps an + object instance. The following short + example shows it being used to treat an array of strings as a table + data source: + + public static class Sample + { + public static void Main() + { + using (SQLiteConnection connection = new SQLiteConnection( + "Data Source=:memory:;")) + { + connection.Open(); + + connection.CreateModule(new SQLiteModuleEnumerable( + "sampleModule", new string[] { "one", "two", "three" })); + + using (SQLiteCommand command = connection.CreateCommand()) + { + command.CommandText = + "CREATE VIRTUAL TABLE t1 USING sampleModule;"; + + command.ExecuteNonQuery(); + } + + using (SQLiteCommand command = connection.CreateCommand()) + { + command.CommandText = "SELECT * FROM t1;"; + + using (SQLiteDataReader dataReader = command.ExecuteReader()) + { + while (dataReader.Read()) + Console.WriteLine(dataReader[0].ToString()); + } + } + + connection.Close(); + } + } + } + + + + + + This class implements a virtual table module that does nothing by + providing "empty" implementations for all of the + interface methods. The result + codes returned by these "empty" method implementations may be + controlled on a per-method basis by using and/or overriding the + , + , + , + , and + methods from within derived classes. + + + + + This field is used to store the + values to return, on a per-method basis, for all methods that are + part of the interface. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + + + Determines the default value to be + returned by methods of the + interface that lack an overridden implementation in all classes + derived from the class. + + + The value that should be returned + by all interface methods unless + a more specific result code has been set for that interface method. + + + + + Converts a value into a boolean + return value for use with the + method. + + + The value to convert. + + + The value. + + + + + Converts a value into a boolean + return value for use with the + method. + + + The value to convert. + + + The value. + + + + + Determines the value that should be + returned by the specified + interface method if it lack an overridden implementation. If no + specific value is available (or set) + for the specified method, the value + returned by the method will be + returned instead. + + + The name of the method. Currently, this method must be part of + the interface. + + + The value that should be returned + by the interface method. + + + + + Sets the value that should be + returned by the specified + interface method if it lack an overridden implementation. + + + The name of the method. Currently, this method must be part of + the interface. + + + The value that should be returned + by the interface method. + + + Non-zero upon success. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + The CREATE TABLE statement used to declare the schema for the + virtual table. + + + + + The instance containing the backing data + for the virtual table. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + The instance to expose as a virtual + table. This parameter cannot be null. + + + + + Determines the SQL statement used to declare the virtual table. + This method should be overridden in derived classes if they require + a custom virtual table schema. + + + The SQL statement used to declare the virtual table -OR- null if it + cannot be determined. + + + + + Sets the table error message to one that indicates the virtual + table cursor is of the wrong type. + + + The object instance. + + + The value of . + + + + + Sets the table error message to one that indicates the virtual + table cursor has no current row. + + + The object instance. + + + The value of . + + + + + Determines the string to return as the column value for the object + instance value. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to return a string representation for. + + + The string representation of the specified object instance or null + upon failure. + + + + + Constructs an unique row identifier from two + values. The first value + must contain the row sequence number for the current row and the + second value must contain the hash code of the enumerator value + for the current row. + + + The integer row sequence number for the current row. + + + The hash code of the enumerator value for the current row. + + + The unique row identifier or zero upon failure. + + + + + Determines the unique row identifier for the current row. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to return a unique row identifier for. + + + The unique row identifier or zero upon failure. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + This class represents a virtual table cursor to be used with the + class. It is not sealed and may + be used as the base class for any user-defined virtual table cursor + class that wraps an object instance. + + + + + The instance provided when this + cursor was created. + + + + + Constructs an instance of this class. + + + The object instance associated + with this object instance. + + + The instance to expose as a virtual + table cursor. + + + + + Closes the virtual table cursor. This method must not throw any + exceptions. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + Returns the value for the current row of the virtual table cursor + using the property of the + object instance. + + + + + This class implements a virtual table module that exposes an + object instance as a read-only virtual + table. It is not sealed and may be used as the base class for any + user-defined virtual table class that wraps an + object instance. + + + + + The instance containing the backing + data for the virtual table. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + The instance to expose as a virtual + table. This parameter cannot be null. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + +
+
diff --git a/packages/System.Data.SQLite.1.0.90.0/lib/net45/System.Data.SQLite.Linq.dll b/packages/System.Data.SQLite.1.0.90.0/lib/net45/System.Data.SQLite.Linq.dll new file mode 100644 index 000000000..296a5e08b Binary files /dev/null and b/packages/System.Data.SQLite.1.0.90.0/lib/net45/System.Data.SQLite.Linq.dll differ diff --git a/packages/System.Data.SQLite.1.0.90.0/lib/net45/System.Data.SQLite.dll b/packages/System.Data.SQLite.1.0.90.0/lib/net45/System.Data.SQLite.dll new file mode 100644 index 000000000..858740f51 Binary files /dev/null and b/packages/System.Data.SQLite.1.0.90.0/lib/net45/System.Data.SQLite.dll differ diff --git a/packages/System.Data.SQLite.1.0.90.0/lib/net45/System.Data.SQLite.xml b/packages/System.Data.SQLite.1.0.90.0/lib/net45/System.Data.SQLite.xml new file mode 100644 index 000000000..67db7df4c --- /dev/null +++ b/packages/System.Data.SQLite.1.0.90.0/lib/net45/System.Data.SQLite.xml @@ -0,0 +1,12758 @@ + + + + System.Data.SQLite + + + + + Defines a source code identifier custom attribute for an assembly + manifest. + + + + + Constructs an instance of this attribute class using the specified + source code identifier value. + + + The source code identifier value to use. + + + + + Gets the source code identifier value. + + + + + Defines a source code time-stamp custom attribute for an assembly + manifest. + + + + + Constructs an instance of this attribute class using the specified + source code time-stamp value. + + + The source code time-stamp value to use. + + + + + Gets the source code time-stamp value. + + + + + This is the method signature for the SQLite core library logging callback + function for use with sqlite3_log() and the SQLITE_CONFIG_LOG. + + WARNING: This delegate is used more-or-less directly by native code, do + not modify its type signature. + + + The extra data associated with this message, if any. + + + The error code associated with this message. + + + The message string to be logged. + + + + + This class implements SQLiteBase completely, and is the guts of the code that interop's SQLite with .NET + + + + + This internal class provides the foundation of SQLite support. It defines all the abstract members needed to implement + a SQLite data provider, and inherits from SQLiteConvert which allows for simple translations of string to and from SQLite. + + + + + This base class provides datatype conversion services for the SQLite provider. + + + + + The format string for DateTime values when using the InvariantCulture or CurrentCulture formats. + + + + + The value for the Unix epoch (e.g. January 1, 1970 at midnight, in UTC). + + + + + The value of the OLE Automation epoch represented as a Julian day. + + + + + An array of ISO-8601 DateTime formats that we support parsing. + + + + + The internal default format for UTC DateTime values when converting + to a string. + + + + + The internal default format for local DateTime values when converting + to a string. + + + + + An UTF-8 Encoding instance, so we can convert strings to and from UTF-8 + + + + + The default DateTime format for this instance. + + + + + The default DateTimeKind for this instance. + + + + + The default DateTime format string for this instance. + + + + + Initializes the conversion class + + The default date/time format to use for this instance + The DateTimeKind to use. + The DateTime format string to use. + + + + Converts a string to a UTF-8 encoded byte array sized to include a null-terminating character. + + The string to convert to UTF-8 + A byte array containing the converted string plus an extra 0 terminating byte at the end of the array. + + + + Convert a DateTime to a UTF-8 encoded, zero-terminated byte array. + + + This function is a convenience function, which first calls ToString() on the DateTime, and then calls ToUTF8() with the + string result. + + The DateTime to convert. + The UTF-8 encoded string, including a 0 terminating byte at the end of the array. + + + + Converts a UTF-8 encoded IntPtr of the specified length into a .NET string + + The pointer to the memory where the UTF-8 string is encoded + The number of bytes to decode + A string containing the translated character(s) + + + + Converts a UTF-8 encoded IntPtr of the specified length into a .NET string + + The pointer to the memory where the UTF-8 string is encoded + The number of bytes to decode + A string containing the translated character(s) + + + + Converts a string into a DateTime, using the DateTimeFormat, DateTimeKind, + and DateTimeFormatString specified for the connection when it was opened. + + + Acceptable ISO8601 DateTime formats are: + + THHmmssK + THHmmK + HH:mm:ss.FFFFFFFK + HH:mm:ssK + HH:mmK + yyyy-MM-dd HH:mm:ss.FFFFFFFK + yyyy-MM-dd HH:mm:ssK + yyyy-MM-dd HH:mmK + yyyy-MM-ddTHH:mm:ss.FFFFFFFK + yyyy-MM-ddTHH:mmK + yyyy-MM-ddTHH:mm:ssK + yyyyMMddHHmmssK + yyyyMMddHHmmK + yyyyMMddTHHmmssFFFFFFFK + THHmmss + THHmm + HH:mm:ss.FFFFFFF + HH:mm:ss + HH:mm + yyyy-MM-dd HH:mm:ss.FFFFFFF + yyyy-MM-dd HH:mm:ss + yyyy-MM-dd HH:mm + yyyy-MM-ddTHH:mm:ss.FFFFFFF + yyyy-MM-ddTHH:mm + yyyy-MM-ddTHH:mm:ss + yyyyMMddHHmmss + yyyyMMddHHmm + yyyyMMddTHHmmssFFFFFFF + yyyy-MM-dd + yyyyMMdd + yy-MM-dd + + If the string cannot be matched to one of the above formats -OR- + the DateTimeFormatString if one was provided, an exception will + be thrown. + + The string containing either a long integer number of 100-nanosecond units since + System.DateTime.MinValue, a Julian day double, an integer number of seconds since the Unix epoch, a + culture-independent formatted date and time string, a formatted date and time string in the current + culture, or an ISO8601-format string. + A DateTime value + + + + Converts a string into a DateTime, using the specified DateTimeFormat, + DateTimeKind and DateTimeFormatString. + + + Acceptable ISO8601 DateTime formats are: + + THHmmssK + THHmmK + HH:mm:ss.FFFFFFFK + HH:mm:ssK + HH:mmK + yyyy-MM-dd HH:mm:ss.FFFFFFFK + yyyy-MM-dd HH:mm:ssK + yyyy-MM-dd HH:mmK + yyyy-MM-ddTHH:mm:ss.FFFFFFFK + yyyy-MM-ddTHH:mmK + yyyy-MM-ddTHH:mm:ssK + yyyyMMddHHmmssK + yyyyMMddHHmmK + yyyyMMddTHHmmssFFFFFFFK + THHmmss + THHmm + HH:mm:ss.FFFFFFF + HH:mm:ss + HH:mm + yyyy-MM-dd HH:mm:ss.FFFFFFF + yyyy-MM-dd HH:mm:ss + yyyy-MM-dd HH:mm + yyyy-MM-ddTHH:mm:ss.FFFFFFF + yyyy-MM-ddTHH:mm + yyyy-MM-ddTHH:mm:ss + yyyyMMddHHmmss + yyyyMMddHHmm + yyyyMMddTHHmmssFFFFFFF + yyyy-MM-dd + yyyyMMdd + yy-MM-dd + + If the string cannot be matched to one of the above formats -OR- + the DateTimeFormatString if one was provided, an exception will + be thrown. + + The string containing either a long integer number of 100-nanosecond units since + System.DateTime.MinValue, a Julian day double, an integer number of seconds since the Unix epoch, a + culture-independent formatted date and time string, a formatted date and time string in the current + culture, or an ISO8601-format string. + The SQLiteDateFormats to use. + The DateTimeKind to use. + The DateTime format string to use. + A DateTime value + + + + Converts a julianday value into a DateTime + + The value to convert + A .NET DateTime + + + + Converts a julianday value into a DateTime + + The value to convert + The DateTimeKind to use. + A .NET DateTime + + + + Converts the specified number of seconds from the Unix epoch into a + value. + + + The number of whole seconds since the Unix epoch. + + + Either Utc or Local time. + + + The new value. + + + + + Converts the specified number of ticks since the epoch into a + value. + + + The number of whole ticks since the epoch. + + + Either Utc or Local time. + + + The new value. + + + + + Converts a DateTime struct to a JulianDay double + + The DateTime to convert + The JulianDay value the Datetime represents + + + + Converts a DateTime struct to the whole number of seconds since the + Unix epoch. + + The DateTime to convert + The whole number of seconds since the Unix epoch + + + + Returns the DateTime format string to use for the specified DateTimeKind. + If is not null, it will be returned verbatim. + + The DateTimeKind to use. + The DateTime format string to use. + + The DateTime format string to use for the specified DateTimeKind. + + + + + Converts a string into a DateTime, using the DateTimeFormat, DateTimeKind, + and DateTimeFormatString specified for the connection when it was opened. + + The DateTime value to convert + Either a string containing the long integer number of 100-nanosecond units since System.DateTime.MinValue, a + Julian day double, an integer number of seconds since the Unix epoch, a culture-independent formatted date and time + string, a formatted date and time string in the current culture, or an ISO8601-format date/time string. + + + + Internal function to convert a UTF-8 encoded IntPtr of the specified length to a DateTime. + + + This is a convenience function, which first calls ToString() on the IntPtr to convert it to a string, then calls + ToDateTime() on the string to return a DateTime. + + A pointer to the UTF-8 encoded string + The length in bytes of the string + The parsed DateTime value + + + + Smart method of splitting a string. Skips quoted elements, removes the quotes. + + + This split function works somewhat like the String.Split() function in that it breaks apart a string into + pieces and returns the pieces as an array. The primary differences are: + + Only one character can be provided as a separator character + Quoted text inside the string is skipped over when searching for the separator, and the quotes are removed. + + Thus, if splitting the following string looking for a comma:
+ One,Two, "Three, Four", Five
+
+ The resulting array would contain
+ [0] One
+ [1] Two
+ [2] Three, Four
+ [3] Five
+
+ Note that the leading and trailing spaces were removed from each item during the split. +
+ Source string to split apart + Separator character + A string array of the split up elements +
+ + + Splits the specified string into multiple strings based on a separator + and returns the result as an array of strings. + + + The string to split into pieces based on the separator character. If + this string is null, null will always be returned. If this string is + empty, an array of zero strings will always be returned. + + + The character used to divide the original string into sub-strings. + This character cannot be a backslash or a double-quote; otherwise, no + work will be performed and null will be returned. + + + If this parameter is non-zero, all double-quote characters will be + retained in the returned list of strings; otherwise, they will be + dropped. + + + Upon failure, this parameter will be modified to contain an appropriate + error message. + + + The new array of strings or null if the input string is null -OR- the + separator character is a backslash or a double-quote -OR- the string + contains an unbalanced backslash or double-quote character. + + + + + Convert a value to true or false. + + A string or number representing true or false + + + + + Convert a string to true or false. + + A string representing true or false + + + "yes", "no", "y", "n", "0", "1", "on", "off" as well as Boolean.FalseString and Boolean.TrueString will all be + converted to a proper boolean value. + + + + + Converts a SQLiteType to a .NET Type object + + The SQLiteType to convert + Returns a .NET Type object + + + + For a given intrinsic type, return a DbType + + The native type to convert + The corresponding (closest match) DbType + + + + Returns the ColumnSize for the given DbType + + The DbType to get the size of + + + + + Determines the type name for the given database value type. + + The database value type. + The flags associated with the parent connection object. + The type name or an empty string if it cannot be determined. + + + + Convert a DbType to a Type + + The DbType to convert from + The closest-match .NET type + + + + For a given type, return the closest-match SQLite TypeAffinity, which only understands a very limited subset of types. + + The type to evaluate + The SQLite type affinity for that type. + + + + Builds and returns a map containing the database column types + recognized by this provider. + + + A map containing the database column types recognized by this + provider. + + + + + For a given type name, return a closest-match .NET type + + The name of the type to match + The flags associated with the parent connection object. + The .NET DBType the text evaluates to. + + + + The error code used for logging exceptions caught in user-provided + code. + + + + + Sets the status of the memory usage tracking subsystem in the SQLite core library. By default, this is enabled. + If this is disabled, memory usage tracking will not be performed. This is not really a per-connection value, it is + global to the process. + + Non-zero to enable memory usage tracking, zero otherwise. + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Attempts to free as much heap memory as possible for the database connection. + + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Shutdown the SQLite engine so that it can be restarted with different config options. + We depend on auto initialization to recover. + + + + + Determines if the associated native connection handle is open. + + + Non-zero if a database connection is open. + + + + + Opens a database. + + + Implementers should call SQLiteFunction.BindFunctions() and save the array after opening a connection + to bind all attributed user-defined functions and collating sequences to the new connection. + + The filename of the database to open. SQLite automatically creates it if it doesn't exist. + The flags associated with the parent connection object + The open flags to use when creating the connection + The maximum size of the pool for the given filename + If true, the connection can be pulled from the connection pool + + + + Closes the currently-open database. + + + After the database has been closed implemeters should call SQLiteFunction.UnbindFunctions() to deallocate all interop allocated + memory associated with the user-defined functions and collating sequences tied to the closed connection. + + Non-zero if the operation is allowed to throw exceptions, zero otherwise. + + + + Sets the busy timeout on the connection. SQLiteCommand will call this before executing any command. + + The number of milliseconds to wait before returning SQLITE_BUSY + + + + Returns the text of the last error issued by SQLite + + + + + + Returns the text of the last error issued by SQLite -OR- the specified default error text if + none is available from the SQLite core library. + + + The error text to return in the event that one is not available from the SQLite core library. + + + The error text. + + + + + When pooling is enabled, force this connection to be disposed rather than returned to the pool + + + + + When pooling is enabled, returns the number of pool entries matching the current file name. + + The number of pool entries matching the current file name. + + + + Prepares a SQL statement for execution. + + The source connection preparing the command. Can be null for any caller except LINQ + The SQL command text to prepare + The previous statement in a multi-statement command, or null if no previous statement exists + The timeout to wait before aborting the prepare + The remainder of the statement that was not processed. Each call to prepare parses the + SQL up to to either the end of the text or to the first semi-colon delimiter. The remaining text is returned + here for a subsequent call to Prepare() until all the text has been processed. + Returns an initialized SQLiteStatement. + + + + Steps through a prepared statement. + + The SQLiteStatement to step through + True if a row was returned, False if not. + + + + Resets a prepared statement so it can be executed again. If the error returned is SQLITE_SCHEMA, + transparently attempt to rebuild the SQL statement and throw an error if that was not possible. + + The statement to reset + Returns -1 if the schema changed while resetting, 0 if the reset was sucessful or 6 (SQLITE_LOCKED) if the reset failed due to a lock + + + + Attempts to interrupt the query currently executing on the associated + native database connection. + + + + + This function binds a user-defined functions to the connection. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + + + + Calls the native SQLite core library in order to create a disposable + module containing the implementation of a virtual table. + + + The module object to be used when creating the native disposable module. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to cleanup the resources + associated with a module containing the implementation of a virtual table. + + + The module object previously passed to the + method. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to declare a virtual table + in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + being declared. + + + The string containing the SQL statement describing the virtual table to + be declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Calls the native SQLite core library in order to declare a virtual table + function in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + function being declared. + + + The number of arguments to the function being declared. + + + The name of the function being declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Enables or disabled extension loading by SQLite. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + + Enables or disabled extened result codes returned by SQLite + + true to enable extended result codes, false to disable. + + + + + Returns the numeric result code for the most recent failed SQLite API call + associated with the database connection. + + Result code + + + + Returns the extended numeric result code for the most recent failed SQLite API call + associated with the database connection. + + Extended result code + + + + Add a log message via the SQLite sqlite3_log interface. + + Error code to be logged with the message. + String to be logged. Unlike the SQLite sqlite3_log() + interface, this should be pre-formatted. Consider using the + String.Format() function. + + + + + Checks if the SQLite core library has been initialized in the current process. + + + Non-zero if the SQLite core library has been initialized in the current process, + zero otherwise. + + + + + Creates a new SQLite backup object based on the provided destination + database connection. The source database connection is the one + associated with this object. The source and destination database + connections cannot be the same. + + The destination database connection. + The destination database name. + The source database name. + The newly created backup object. + + + + Copies up to N pages from the source database to the destination + database associated with the specified backup object. + + The backup object to use. + + The number of pages to copy or negative to copy all remaining pages. + + + Set to true if the operation needs to be retried due to database + locking issues. + + + True if there are more pages to be copied, false otherwise. + + + + + Returns the number of pages remaining to be copied from the source + database to the destination database associated with the specified + backup object. + + The backup object to check. + The number of pages remaining to be copied. + + + + Returns the total number of pages in the source database associated + with the specified backup object. + + The backup object to check. + The total number of pages in the source database. + + + + Destroys the backup object, rolling back any backup that may be in + progess. + + The backup object to destroy. + + + + Returns the error message for the specified SQLite return code using + the internal static lookup table. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns the error message for the specified SQLite return code using + the sqlite3_errstr() function, falling back to the internal lookup + table if necessary. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns a string representing the active version of SQLite + + + + + Returns an integer representing the active version of SQLite + + + + + Returns the rowid of the most recent successful INSERT into the database from this connection. + + + + + Returns the number of changes the last executing insert/update caused. + + + + + Returns the amount of memory (in bytes) currently in use by the SQLite core library. This is not really a per-connection + value, it is global to the process. + + + + + Returns the maximum amount of memory (in bytes) used by the SQLite core library since the high-water mark was last reset. + This is not really a per-connection value, it is global to the process. + + + + + Returns non-zero if the underlying native connection handle is owned by this instance. + + + + + Returns non-zero if the given database connection is in autocommit mode. + Autocommit mode is on by default. Autocommit mode is disabled by a BEGIN + statement. Autocommit mode is re-enabled by a COMMIT or ROLLBACK. + + + + + The opaque pointer returned to us by the sqlite provider + + + + + The user-defined functions registered on this connection + + + + + The modules created using this connection. + + + + + Constructs the object used to interact with the SQLite core library + using the UTF-8 text encoding. + + + The DateTime format to be used when converting string values to a + DateTime and binding DateTime parameters. + + + The to be used when creating DateTime + values. + + + The format string to be used when parsing and formatting DateTime + values. + + + The native handle to be associated with the database connection. + + + The fully qualified file name associated with . + + + Non-zero if the newly created object instance will need to dispose + of when it is no longer needed. + + + + + This method attempts to dispose of all the derived + object instances currently associated with the native database connection. + + + + + Attempts to interrupt the query currently executing on the associated + native database connection. + + + + + This function binds a user-defined function to the connection. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + + + + Attempts to free as much heap memory as possible for the database connection. + + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Attempts to free N bytes of heap memory by deallocating non-essential memory + allocations held by the database library. Memory used to cache database pages + to improve performance is an example of non-essential memory. This is a no-op + returning zero if the SQLite core library was not compiled with the compile-time + option SQLITE_ENABLE_MEMORY_MANAGEMENT. Optionally, attempts to reset and/or + compact the Win32 native heap, if applicable. + + + The requested number of bytes to free. + + + Non-zero to attempt a heap reset. + + + Non-zero to attempt heap compaction. + + + The number of bytes actually freed. This value may be zero. + + + This value will be non-zero if the heap reset was successful. + + + The size of the largest committed free block in the heap, in bytes. + This value will be zero unless heap compaction is enabled. + + + A standard SQLite return code (i.e. zero for success and non-zero + for failure). + + + + + Shutdown the SQLite engine so that it can be restarted with different + configuration options. We depend on auto initialization to recover. + + Returns a standard SQLite result code. + + + + Shutdown the SQLite engine so that it can be restarted with different + configuration options. We depend on auto initialization to recover. + + + Non-zero to reset the database and temporary directories to their + default values, which should be null for both. This parameter has no + effect on non-Windows operating systems. + + Returns a standard SQLite result code. + + + + Determines if the associated native connection handle is open. + + + Non-zero if the associated native connection handle is open. + + + + + Calls the native SQLite core library in order to create a disposable + module containing the implementation of a virtual table. + + + The module object to be used when creating the native disposable module. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to cleanup the resources + associated with a module containing the implementation of a virtual table. + + + The module object previously passed to the + method. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to declare a virtual table + in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + being declared. + + + The string containing the SQL statement describing the virtual table to + be declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Calls the native SQLite core library in order to declare a virtual table + function in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + function being declared. + + + The number of arguments to the function being declared. + + + The name of the function being declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Enables or disabled extension loading by SQLite. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + Enables or disabled extended result codes returned by SQLite + + + Gets the last SQLite error code + + + Gets the last SQLite extended error code + + + Add a log message via the SQLite sqlite3_log interface. + + + Add a log message via the SQLite sqlite3_log interface. + + + + Allows the setting of a logging callback invoked by SQLite when a + log event occurs. Only one callback may be set. If NULL is passed, + the logging callback is unregistered. + + The callback function to invoke. + Returns a result code + + + + Creates a new SQLite backup object based on the provided destination + database connection. The source database connection is the one + associated with this object. The source and destination database + connections cannot be the same. + + The destination database connection. + The destination database name. + The source database name. + The newly created backup object. + + + + Copies up to N pages from the source database to the destination + database associated with the specified backup object. + + The backup object to use. + + The number of pages to copy, negative to copy all remaining pages. + + + Set to true if the operation needs to be retried due to database + locking issues; otherwise, set to false. + + + True if there are more pages to be copied, false otherwise. + + + + + Returns the number of pages remaining to be copied from the source + database to the destination database associated with the specified + backup object. + + The backup object to check. + The number of pages remaining to be copied. + + + + Returns the total number of pages in the source database associated + with the specified backup object. + + The backup object to check. + The total number of pages in the source database. + + + + Destroys the backup object, rolling back any backup that may be in + progess. + + The backup object to destroy. + + + + Determines if the SQLite core library has been initialized for the + current process. + + + A boolean indicating whether or not the SQLite core library has been + initialized for the current process. + + + + + Determines if the SQLite core library has been initialized for the + current process. + + + A boolean indicating whether or not the SQLite core library has been + initialized for the current process. + + + + + Helper function to retrieve a column of data from an active statement. + + The statement being step()'d through + The flags associated with the connection. + The column index to retrieve + The type of data contained in the column. If Uninitialized, this function will retrieve the datatype information. + Returns the data in the column + + + + Returns non-zero if the underlying native connection handle is owned + by this instance. + + + + + Alternate SQLite3 object, overriding many text behaviors to support UTF-16 (Unicode) + + + + + Constructs the object used to interact with the SQLite core library + using the UTF-8 text encoding. + + + The DateTime format to be used when converting string values to a + DateTime and binding DateTime parameters. + + + The to be used when creating DateTime + values. + + + The format string to be used when parsing and formatting DateTime + values. + + + The native handle to be associated with the database connection. + + + The fully qualified file name associated with . + + + Non-zero if the newly created object instance will need to dispose + of when it is no longer needed. + + + + + Overrides SQLiteConvert.ToString() to marshal UTF-16 strings instead of UTF-8 + + A pointer to a UTF-16 string + The length (IN BYTES) of the string + A .NET string + + + + Represents a single SQL backup in SQLite. + + + + + The underlying SQLite object this backup is bound to. + + + + + The actual backup handle. + + + + + The destination database for the backup. + + + + + The destination database name for the backup. + + + + + The source database for the backup. + + + + + The source database name for the backup. + + + + + The last result from the StepBackup method of the SQLite3 class. + This is used to determine if the call to the FinishBackup method of + the SQLite3 class should throw an exception when it receives a non-Ok + return code from the core SQLite library. + + + + + Initializes the backup. + + The base SQLite object. + The backup handle. + The destination database for the backup. + The destination database name for the backup. + The source database for the backup. + The source database name for the backup. + + + + Disposes and finalizes the backup. + + + + + The extra behavioral flags that can be applied to a connection. + + + + + No extra flags. + + + + + Enable logging of all SQL statements to be prepared. + + + + + Enable logging of all bound parameter types and raw values. + + + + + Enable logging of all bound parameter strongly typed values. + + + + + Enable logging of all exceptions caught from user-provided + managed code called from native code via delegates. + + + + + Enable logging of backup API errors. + + + + + Skip adding the extension functions provided by the native + interop assembly. + + + + + When binding parameter values with the + type, use the interop method that accepts an + value. + + + + + When binding parameter values, always bind them as though they were + plain text (i.e. no numeric, date/time, or other conversions should + be attempted). + + + + + When returning column values, always return them as though they were + plain text (i.e. no numeric, date/time, or other conversions should + be attempted). + + + + + Prevent this object instance from + loading extensions. + + + + + Prevent this object instance from + creating virtual table modules. + + + + + Skip binding any functions provided by other managed assemblies when + opening the connection. + + + + + Skip setting the logging related properties of the + object instance that was passed to + the method. + + + + + Enable logging of all virtual table module errors seen by the + method. + + + + + Enable logging of certain virtual table module exceptions that cannot + be easily discovered via other means. + + + + + Enable tracing of potentially important [non-fatal] error conditions + that cannot be easily reported through other means. + + + + + When binding and returning column values, always treat them as though + they were plain text (i.e. no numeric, date/time, or other conversions + should be attempted). + + + + + Enable all logging. + + + + + The default extra flags for new connections. + + + + + SQLite implementation of DbCommand. + + + + + The default connection string to be used when creating a temporary + connection to execute a command via the static + or + + methods. + + + + + The command text this command is based on + + + + + The connection the command is associated with + + + + + The version of the connection the command is associated with + + + + + Indicates whether or not a DataReader is active on the command. + + + + + The timeout for the command, kludged because SQLite doesn't support per-command timeout values + + + + + Designer support + + + + + Used by DbDataAdapter to determine updating behavior + + + + + The collection of parameters for the command + + + + + The SQL command text, broken into individual SQL statements as they are executed + + + + + Unprocessed SQL text that has not been executed + + + + + Transaction associated with this command + + + + + Constructs a new SQLiteCommand + + + Default constructor + + + + + Initializes the command with the given command text + + The SQL command text + + + + Initializes the command with the given SQL command text and attach the command to the specified + connection. + + The SQL command text + The connection to associate with the command + + + + Initializes the command and associates it with the specified connection. + + The connection to associate with the command + + + + Initializes a command with the given SQL, connection and transaction + + The SQL command text + The connection to associate with the command + The transaction the command should be associated with + + + + Disposes of the command and clears all member variables + + Whether or not the class is being explicitly or implicitly disposed + + + + This method attempts to query the flags associated with the database + connection in use. If the database connection is disposed, the default + flags will be returned. + + + The command containing the databse connection to query the flags from. + + + The connection flags value. + + + + + Clears and destroys all statements currently prepared + + + + + Builds an array of prepared statements for each complete SQL statement in the command text + + + + + Not implemented + + + + + Forwards to the local CreateParameter() function + + + + + + Create a new parameter + + + + + + This function ensures there are no active readers, that we have a valid connection, + that the connection is open, that all statements are prepared and all parameters are assigned + in preparation for allocating a data reader. + + + + + Creates a new SQLiteDataReader to execute/iterate the array of SQLite prepared statements + + The behavior the data reader should adopt + Returns a SQLiteDataReader object + + + + This method creates a new connection, executes the query using the given + execution type, closes the connection, and returns the results. If the + connection string is null, a temporary in-memory database connection will + be used. + + + The text of the command to be executed. + + + The execution type for the command. This is used to determine which method + of the command object to call, which then determines the type of results + returned, if any. + + + The connection string to the database to be opened, used, and closed. If + this parameter is null, a temporary in-memory databse will be used. + + + The SQL parameter values to be used when building the command object to be + executed, if any. + + + The results of the query -OR- null if no results were produced from the + given execution type. + + + + + This method creates a new connection, executes the query using the given + execution type and command behavior, closes the connection, and returns + the results. If the connection string is null, a temporary in-memory + database connection will be used. + + + The text of the command to be executed. + + + The execution type for the command. This is used to determine which method + of the command object to call, which then determines the type of results + returned, if any. + + + The command behavior flags for the command. + + + The connection string to the database to be opened, used, and closed. If + this parameter is null, a temporary in-memory databse will be used. + + + The SQL parameter values to be used when building the command object to be + executed, if any. + + + The results of the query -OR- null if no results were produced from the + given execution type. + + + + + Overrides the default behavior to return a SQLiteDataReader specialization class + + The flags to be associated with the reader. + A SQLiteDataReader + + + + Overrides the default behavior of DbDataReader to return a specialized SQLiteDataReader class + + A SQLiteDataReader + + + + Called by the SQLiteDataReader when the data reader is closed. + + + + + Execute the command and return the number of rows inserted/updated affected by it. + + The number of rows inserted/updated affected by it. + + + + Execute the command and return the number of rows inserted/updated affected by it. + + The flags to be associated with the reader. + The number of rows inserted/updated affected by it. + + + + Execute the command and return the first column of the first row of the resultset + (if present), or null if no resultset was returned. + + The first column of the first row of the first resultset from the query. + + + + Execute the command and return the first column of the first row of the resultset + (if present), or null if no resultset was returned. + + The flags to be associated with the reader. + The first column of the first row of the first resultset from the query. + + + + Does nothing. Commands are prepared as they are executed the first time, and kept in prepared state afterwards. + + + + + Clones a command, including all its parameters + + A new SQLiteCommand with the same commandtext, connection and parameters + + + + The SQL command text associated with the command + + + + + The amount of time to wait for the connection to become available before erroring out + + + + + The type of the command. SQLite only supports CommandType.Text + + + + + The connection associated with this command + + + + + Forwards to the local Connection property + + + + + Returns the SQLiteParameterCollection for the given command + + + + + Forwards to the local Parameters property + + + + + The transaction associated with this command. SQLite only supports one transaction per connection, so this property forwards to the + command's underlying connection. + + + + + Forwards to the local Transaction property + + + + + Sets the method the SQLiteCommandBuilder uses to determine how to update inserted or updated rows in a DataTable. + + + + + Determines if the command is visible at design time. Defaults to True. + + + + + SQLite implementation of DbCommandBuilder. + + + + + Default constructor + + + + + Initializes the command builder and associates it with the specified data adapter. + + + + + + Minimal amount of parameter processing. Primarily sets the DbType for the parameter equal to the provider type in the schema + + The parameter to use in applying custom behaviors to a row + The row to apply the parameter to + The type of statement + Whether the application of the parameter is part of a WHERE clause + + + + Returns a valid named parameter + + The name of the parameter + Error + + + + Returns a named parameter for the given ordinal + + The i of the parameter + Error + + + + Returns a placeholder character for the specified parameter i. + + The index of the parameter to provide a placeholder for + Returns a named parameter + + + + Sets the handler for receiving row updating events. Used by the DbCommandBuilder to autogenerate SQL + statements that may not have previously been generated. + + A data adapter to receive events on. + + + + Returns the automatically-generated SQLite command to delete rows from the database + + + + + + Returns the automatically-generated SQLite command to delete rows from the database + + + + + + + Returns the automatically-generated SQLite command to update rows in the database + + + + + + Returns the automatically-generated SQLite command to update rows in the database + + + + + + + Returns the automatically-generated SQLite command to insert rows into the database + + + + + + Returns the automatically-generated SQLite command to insert rows into the database + + + + + + + Places brackets around an identifier + + The identifier to quote + The bracketed identifier + + + + Removes brackets around an identifier + + The quoted (bracketed) identifier + The undecorated identifier + + + + Override helper, which can help the base command builder choose the right keys for the given query + + + + + + + Gets/sets the DataAdapter for this CommandBuilder + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Event data for connection event handlers. + + + + + The type of event being raised. + + + + + The associated with this event, if any. + + + + + The transaction associated with this event, if any. + + + + + The command associated with this event, if any. + + + + + The data reader associated with this event, if any. + + + + + The critical handle associated with this event, if any. + + + + + Command or message text associated with this event, if any. + + + + + Extra data associated with this event, if any. + + + + + Constructs the object. + + The type of event being raised. + The base associated + with this event, if any. + The transaction associated with this event, if any. + The command associated with this event, if any. + The data reader associated with this event, if any. + The critical handle associated with this event, if any. + The command or message text, if any. + The extra data, if any. + + + + Raised when an event pertaining to a connection occurs. + + The connection involved. + Extra information about the event. + + + + SQLite implentation of DbConnection. + + + The property can contain the following parameter(s), delimited with a semi-colon: + + + Parameter + Values + Required + Default + + + Data Source + + This may be a file name, the string ":memory:", or any supported URI (starting with SQLite 3.7.7). + Starting with release 1.0.86.0, in order to use more than one consecutive backslash (e.g. for a + UNC path), each of the adjoining backslash characters must be doubled (e.g. "\\Network\Share\test.db" + would become "\\\\Network\Share\test.db"). + + Y + + + + Version + 3 + N + 3 + + + UseUTF16Encoding + True
False
+ N + False +
+ + DateTimeFormat + + Ticks - Use the value of DateTime.Ticks.
+ ISO8601 - Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC + DateTime values and "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values).
+ JulianDay - The interval of time in days and fractions of a day since January 1, 4713 BC.
+ UnixEpoch - The whole number of seconds since the Unix epoch (January 1, 1970).
+ InvariantCulture - Any culture-independent string value that the .NET Framework can interpret as a valid DateTime.
+ CurrentCulture - Any string value that the .NET Framework can interpret as a valid DateTime using the current culture.
+ N + ISO8601 +
+ + DateTimeKind + Unspecified - Not specified as either UTC or local time.
Utc - The time represented is UTC.
Local - The time represented is local time.
+ N + Unspecified +
+ + DateTimeFormatString + The exact DateTime format string to use for all formatting and parsing of all DateTime + values for this connection. + N + null + + + BaseSchemaName + Some base data classes in the framework (e.g. those that build SQL queries dynamically) + assume that an ADO.NET provider cannot support an alternate catalog (i.e. database) without supporting + alternate schemas as well; however, SQLite does not fit into this model. Therefore, this value is used + as a placeholder and removed prior to preparing any SQL statements that may contain it. + N + sqlite_default_schema + + + BinaryGUID + True - Store GUID columns in binary form
False - Store GUID columns as text
+ N + True +
+ + Cache Size + {size in bytes} + N + 2000 + + + Synchronous + Normal - Normal file flushing behavior
Full - Full flushing after all writes
Off - Underlying OS flushes I/O's
+ N + Full +
+ + Page Size + {size in bytes} + N + 1024 + + + Password + {password} - Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + HexPassword + {hexPassword} - Must contain a sequence of zero or more hexadecimal encoded byte values without a leading "0x" prefix. Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + Enlist + Y - Automatically enlist in distributed transactions
N - No automatic enlistment
+ N + Y +
+ + Pooling + + True - Use connection pooling.
+ False - Do not use connection pooling.

+ WARNING: When using the default connection pool implementation, + setting this property to True should be avoided by applications that make + use of COM (either directly or indirectly) due to possible deadlocks that + can occur during the finalization of some COM objects. +
+ N + False +
+ + FailIfMissing + True - Don't create the database if it does not exist, throw an error instead
False - Automatically create the database if it does not exist
+ N + False +
+ + Max Page Count + {size in pages} - Limits the maximum number of pages (limits the size) of the database + N + 0 + + + Legacy Format + True - Use the more compatible legacy 3.x database format
False - Use the newer 3.3x database format which compresses numbers more effectively
+ N + False +
+ + Default Timeout + {time in seconds}
The default command timeout
+ N + 30 +
+ + Journal Mode + Delete - Delete the journal file after a commit
Persist - Zero out and leave the journal file on disk after a commit
Off - Disable the rollback journal entirely
+ N + Delete +
+ + Read Only + True - Open the database for read only access
False - Open the database for normal read/write access
+ N + False +
+ + Max Pool Size + The maximum number of connections for the given connection string that can be in the connection pool + N + 100 + + + Default IsolationLevel + The default transaciton isolation level + N + Serializable + + + Foreign Keys + Enable foreign key constraints + N + False + + + Flags + Extra behavioral flags for the connection. See the enumeration for possible values. + N + Default + + + SetDefaults + + True - Apply the default connection settings to the opened database.
+ False - Skip applying the default connection settings to the opened database. +
+ N + True +
+ + ToFullPath + + True - Attempt to expand the data source file name to a fully qualified path before opening.
+ False - Skip attempting to expand the data source file name to a fully qualified path before opening. +
+ N + True +
+
+
+
+ + + The default "stub" (i.e. placeholder) base schema name to use when + returning column schema information. Used as the initial value of + the BaseSchemaName property. This should start with "sqlite_*" + because those names are reserved for use by SQLite (i.e. they cannot + be confused with the names of user objects). + + + + + The managed assembly containing this type. + + + + + Object used to synchronize access to the static instance data + for this class. + + + + + State of the current connection + + + + + The connection string + + + + + Nesting level of the transactions open on the connection + + + + + If set, then the connection is currently being disposed. + + + + + The default isolation level for new transactions + + + + + Whether or not the connection is enlisted in a distrubuted transaction + + + + + The base SQLite object to interop with + + + + + The database filename minus path and extension + + + + + Temporary password storage, emptied after the database has been opened + + + + + The "stub" (i.e. placeholder) base schema name to use when returning + column schema information. + + + + + The extra behavioral flags for this connection, if any. See the + enumeration for a list of + possible values. + + + + + Default command timeout + + + + + Non-zero if the built-in (i.e. framework provided) connection string + parser should be used when opening the connection. + + + + + Constructs a new SQLiteConnection object + + + Default constructor + + + + + Initializes the connection with the specified connection string. + + The connection string to use. + + + + Initializes the connection with a pre-existing native connection handle. + This constructor overload is intended to be used only by the private + method. + + + The native connection handle to use. + + + The file name corresponding to the native connection handle. + + + Non-zero if this instance owns the native connection handle and + should dispose of it when it is no longer needed. + + + + + Initializes the connection with the specified connection string. + + + The connection string to use. + + + Non-zero to parse the connection string using the built-in (i.e. + framework provided) parser when opening the connection. + + + + + Clones the settings and connection string from an existing connection. If the existing connection is already open, this + function will open its own connection, enumerate any attached databases of the original connection, and automatically + attach to them. + + The connection to copy the settings from. + + + + Raises the event. + + + The connection associated with this event. If this parameter is not + null and the specified connection cannot raise events, then the + registered event handlers will not be invoked. + + + A that contains the event data. + + + + + Creates and returns a new managed database connection handle. This + method is intended to be used by implementations of the + interface only. In theory, it + could be used by other classes; however, that usage is not supported. + + + This must be a native database connection handle returned by the + SQLite core library and it must remain valid and open during the + entire duration of the calling method. + + + The new managed database connection handle or null if it cannot be + created. + + + + + Backs up the database, using the specified database connection as the + destination. + + The destination database connection. + The destination database name. + The source database name. + + The number of pages to copy or negative to copy all remaining pages. + + + The method to invoke between each step of the backup process. This + parameter may be null (i.e. no callbacks will be performed). + + + The number of milliseconds to sleep after encountering a locking error + during the backup process. A value less than zero means that no sleep + should be performed. + + + + + Attempts to bind the specified object + instance to this connection. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + + + Creates a clone of the connection. All attached databases and user-defined functions are cloned. If the existing connection is open, the cloned connection + will also be opened. + + + + + + Creates a database file. This just creates a zero-byte file which SQLite + will turn into a database when the file is opened properly. + + The file to create + + + + Raises the state change event when the state of the connection changes + + The new connection state. If this is different + from the previous state, the event is + raised. + The event data created for the raised event, if + it was actually raised. + + + + Determines and returns the fallback default isolation level when one cannot be + obtained from an existing connection instance. + + + The fallback default isolation level for this connection instance -OR- + if it cannot be determined. + + + + + Determines and returns the default isolation level for this connection instance. + + + The default isolation level for this connection instance -OR- + if it cannot be determined. + + + + + OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. + + This parameter is ignored. + When TRUE, SQLite defers obtaining a write lock until a write operation is requested. + When FALSE, a writelock is obtained immediately. The default is TRUE, but in a multi-threaded multi-writer + environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. + Returns a SQLiteTransaction object. + + + + OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. + + When TRUE, SQLite defers obtaining a write lock until a write operation is requested. + When FALSE, a writelock is obtained immediately. The default is false, but in a multi-threaded multi-writer + environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. + Returns a SQLiteTransaction object. + + + + Creates a new if one isn't already active on the connection. + + Supported isolation levels are Serializable, ReadCommitted and Unspecified. + + Unspecified will use the default isolation level specified in the connection string. If no isolation level is specified in the + connection string, Serializable is used. + Serializable transactions are the default. In this mode, the engine gets an immediate lock on the database, and no other threads + may begin a transaction. Other threads may read from the database, but not write. + With a ReadCommitted isolation level, locks are deferred and elevated as needed. It is possible for multiple threads to start + a transaction in ReadCommitted mode, but if a thread attempts to commit a transaction while another thread + has a ReadCommitted lock, it may timeout or cause a deadlock on both threads until both threads' CommandTimeout's are reached. + + Returns a SQLiteTransaction object. + + + + Creates a new if one isn't already + active on the connection. + + Returns the new transaction object. + + + + Forwards to the local function + + Supported isolation levels are Unspecified, Serializable, and ReadCommitted + + + + + This method is not implemented; however, the + event will still be raised. + + + + + + When the database connection is closed, all commands linked to this connection are automatically reset. + + + + + Clears the connection pool associated with the connection. Any other active connections using the same database file + will be discarded instead of returned to the pool when they are closed. + + + + + + Clears all connection pools. Any active connections will be discarded instead of sent to the pool when they are closed. + + + + + Create a new and associate it with this connection. + + Returns a new command object already assigned to this connection. + + + + Forwards to the local function. + + + + + + Parses the connection string into component parts using the custom + connection string parser. + + The connection string to parse + An array of key-value pairs representing each parameter of the connection string + + + + Parses a connection string using the built-in (i.e. framework provided) + connection string parser class and returns the key/value pairs. An + exception may be thrown if the connection string is invalid or cannot be + parsed. When compiled for the .NET Compact Framework, the custom + connection string parser is always used instead because the framework + provided one is unavailable there. + + + The connection string to parse. + + + Non-zero to throw an exception if any connection string values are not of + the type. + + The list of key/value pairs. + + + + Manual distributed transaction enlistment support + + The distributed transaction to enlist in + + + + Looks for a key in the array of key/values of the parameter string. If not found, return the specified default value + + The list to look in + The key to find + The default value to return if the key is not found + The value corresponding to the specified key, or the default value if not found. + + + + Attempts to convert the string value to an enumerated value of the specified type. + + The enumerated type to convert the string value to. + The string value to be converted. + Non-zero to make the conversion case-insensitive. + The enumerated value upon success or null upon error. + + + + Attempts to convert an input string into a byte value. + + + The string value to be converted. + + + The number styles to use for the conversion. + + + Upon sucess, this will contain the parsed byte value. + Upon failure, the value of this parameter is undefined. + + + Non-zero upon success; zero on failure. + + + + + Enables or disabled extension loading. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named dynamic link library file. + + + The name of the dynamic link library file containing the extension. + + + + + Loads a SQLite extension library from the named dynamic link library file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + + Creates a disposable module containing the implementation of a virtual + table. + + + The module object to be used when creating the disposable module. + + + + + Parses a string containing a sequence of zero or more hexadecimal + encoded byte values and returns the resulting byte array. The + "0x" prefix is not allowed on the input string. + + + The input string containing zero or more hexadecimal encoded byte + values. + + + A byte array containing the parsed byte values or null if an error + was encountered. + + + + + Creates and returns a string containing the hexadecimal encoded byte + values from the input array. + + + The input array of bytes. + + + The resulting string or null upon failure. + + + + + Parses a string containing a sequence of zero or more hexadecimal + encoded byte values and returns the resulting byte array. The + "0x" prefix is not allowed on the input string. + + + The input string containing zero or more hexadecimal encoded byte + values. + + + Upon failure, this will contain an appropriate error message. + + + A byte array containing the parsed byte values or null if an error + was encountered. + + + + + Opens the connection using the parameters found in the . + + + + + Opens the connection using the parameters found in the and then returns it. + + The current connection object. + + + + This method causes any pending database operation to abort and return at + its earliest opportunity. This routine is typically called in response + to a user action such as pressing "Cancel" or Ctrl-C where the user wants + a long query operation to halt immediately. It is safe to call this + routine from any thread. However, it is not safe to call this routine + with a database connection that is closed or might close before this method + returns. + + + + + Returns various global memory statistics for the SQLite core library via + a dictionary of key/value pairs. Currently, only the "MemoryUsed" and + "MemoryHighwater" keys are returned and they have values that correspond + to the values that could be obtained via the + and connection properties. + + + This dictionary will be populated with the global memory statistics. It + will be created if necessary. + + + + + Attempts to free as much heap memory as possible for this database connection. + + + + + Attempts to free N bytes of heap memory by deallocating non-essential memory + allocations held by the database library. Memory used to cache database pages + to improve performance is an example of non-essential memory. This is a no-op + returning zero if the SQLite core library was not compiled with the compile-time + option SQLITE_ENABLE_MEMORY_MANAGEMENT. Optionally, attempts to reset and/or + compact the Win32 native heap, if applicable. + + + The requested number of bytes to free. + + + Non-zero to attempt a heap reset. + + + Non-zero to attempt heap compaction. + + + The number of bytes actually freed. This value may be zero. + + + This value will be non-zero if the heap reset was successful. + + + The size of the largest committed free block in the heap, in bytes. + This value will be zero unless heap compaction is enabled. + + + A standard SQLite return code (i.e. zero for success and non-zero + for failure). + + + + + Sets the status of the memory usage tracking subsystem in the SQLite core library. By default, this is enabled. + If this is disabled, memory usage tracking will not be performed. This is not really a per-connection value, it is + global to the process. + + Non-zero to enable memory usage tracking, zero otherwise. + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Passes a shutdown request to the SQLite core library. Does not throw + an exception if the shutdown request fails. + + + A standard SQLite return code (i.e. zero for success and non-zero for + failure). + + + + + Passes a shutdown request to the SQLite core library. Throws an + exception if the shutdown request fails and the no-throw parameter + is non-zero. + + + Non-zero to reset the database and temporary directories to their + default values, which should be null for both. + + + When non-zero, throw an exception if the shutdown request fails. + + + + Enables or disabled extended result codes returned by SQLite + + + Enables or disabled extended result codes returned by SQLite + + + Enables or disabled extended result codes returned by SQLite + + + Add a log message via the SQLite sqlite3_log interface. + + + Add a log message via the SQLite sqlite3_log interface. + + + + Change the password (or assign a password) to an open database. + + + No readers or writers may be active for this process. The database must already be open + and if it already was password protected, the existing password must already have been supplied. + + The new password to assign to the database + + + + Change the password (or assign a password) to an open database. + + + No readers or writers may be active for this process. The database must already be open + and if it already was password protected, the existing password must already have been supplied. + + The new password to assign to the database + + + + Sets the password for a password-protected database. A password-protected database is + unusable for any operation until the password has been set. + + The password for the database + + + + Sets the password for a password-protected database. A password-protected database is + unusable for any operation until the password has been set. + + The password for the database + + + + Queries or modifies the number of retries or the retry interval (in milliseconds) for + certain I/O operations that may fail due to anti-virus software. + + The number of times to retry the I/O operation. A negative value + will cause the current count to be queried and replace that negative value. + The number of milliseconds to wait before retrying the I/O + operation. This number is multiplied by the number of retry attempts so far to come + up with the final number of milliseconds to wait. A negative value will cause the + current interval to be queried and replace that negative value. + Zero for success, non-zero for error. + + + + Removes one set of surrounding single -OR- double quotes from the string + value and returns the resulting string value. If the string is null, empty, + or contains quotes that are not balanced, nothing is done and the original + string value will be returned. + + The string value to process. + + The string value, modified to remove one set of surrounding single -OR- + double quotes, if applicable. + + + + + Expand the filename of the data source, resolving the |DataDirectory| + macro as appropriate. + + The database filename to expand + + Non-zero if the returned file name should be converted to a full path + (except when using the .NET Compact Framework). + + The expanded path and filename of the filename + + + + The following commands are used to extract schema information out of the database. Valid schema types are: + + + MetaDataCollections + + + DataSourceInformation + + + Catalogs + + + Columns + + + ForeignKeys + + + Indexes + + + IndexColumns + + + Tables + + + Views + + + ViewColumns + + + + + Returns the MetaDataCollections schema + + A DataTable of the MetaDataCollections schema + + + + Returns schema information of the specified collection + + The schema collection to retrieve + A DataTable of the specified collection + + + + Retrieves schema information using the specified constraint(s) for the specified collection + + The collection to retrieve + The restrictions to impose + A DataTable of the specified collection + + + + Builds a MetaDataCollections schema datatable + + DataTable + + + + Builds a DataSourceInformation datatable + + DataTable + + + + Build a Columns schema + + The catalog (attached database) to query, can be null + The table to retrieve schema information for, must not be null + The column to retrieve schema information for, can be null + DataTable + + + + Returns index information for the given database and catalog + + The catalog (attached database) to query, can be null + The name of the index to retrieve information for, can be null + The table to retrieve index information for, can be null + DataTable + + + + Retrieves table schema information for the database and catalog + + The catalog (attached database) to retrieve tables on + The table to retrieve, can be null + The table type, can be null + DataTable + + + + Retrieves view schema information for the database + + The catalog (attached database) to retrieve views on + The view name, can be null + DataTable + + + + Retrieves catalog (attached databases) schema information for the database + + The catalog to retrieve, can be null + DataTable + + + + Returns the base column information for indexes in a database + + The catalog to retrieve indexes for (can be null) + The table to restrict index information by (can be null) + The index to restrict index information by (can be null) + The source column to restrict index information by (can be null) + A DataTable containing the results + + + + Returns detailed column information for a specified view + + The catalog to retrieve columns for (can be null) + The view to restrict column information by (can be null) + The source column to restrict column information by (can be null) + A DataTable containing the results + + + + Retrieves foreign key information from the specified set of filters + + An optional catalog to restrict results on + An optional table to restrict results on + An optional foreign key name to restrict results on + A DataTable with the results of the query + + + + Static variable to store the connection event handlers to call. + + + + + This event is raised whenever the database is opened or closed. + + + + + This event is raised when events related to the lifecycle of a + SQLiteConnection object occur. + + + + + This property is used to obtain or set the custom connection pool + implementation to use, if any. Setting this property to null will + cause the default connection pool implementation to be used. + + + + + Returns the number of pool entries for the file name associated with this connection. + + + + + The connection string containing the parameters for the connection + + + + + Parameter + Values + Required + Default + + + Data Source + + This may be a file name, the string ":memory:", or any supported URI (starting with SQLite 3.7.7). + Starting with release 1.0.86.0, in order to use more than one consecutive backslash (e.g. for a + UNC path), each of the adjoining backslash characters must be doubled (e.g. "\\Network\Share\test.db" + would become "\\\\Network\Share\test.db"). + + Y + + + + Version + 3 + N + 3 + + + UseUTF16Encoding + True
False
+ N + False +
+ + DateTimeFormat + + Ticks - Use the value of DateTime.Ticks.
+ ISO8601 - Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC + DateTime values and "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values).
+ JulianDay - The interval of time in days and fractions of a day since January 1, 4713 BC.
+ UnixEpoch - The whole number of seconds since the Unix epoch (January 1, 1970).
+ InvariantCulture - Any culture-independent string value that the .NET Framework can interpret as a valid DateTime.
+ CurrentCulture - Any string value that the .NET Framework can interpret as a valid DateTime using the current culture.
+ N + ISO8601 +
+ + DateTimeKind + Unspecified - Not specified as either UTC or local time.
Utc - The time represented is UTC.
Local - The time represented is local time.
+ N + Unspecified +
+ + DateTimeFormatString + The exact DateTime format string to use for all formatting and parsing of all DateTime + values for this connection. + N + null + + + BaseSchemaName + Some base data classes in the framework (e.g. those that build SQL queries dynamically) + assume that an ADO.NET provider cannot support an alternate catalog (i.e. database) without supporting + alternate schemas as well; however, SQLite does not fit into this model. Therefore, this value is used + as a placeholder and removed prior to preparing any SQL statements that may contain it. + N + sqlite_default_schema + + + BinaryGUID + True - Store GUID columns in binary form
False - Store GUID columns as text
+ N + True +
+ + Cache Size + {size in bytes} + N + 2000 + + + Synchronous + Normal - Normal file flushing behavior
Full - Full flushing after all writes
Off - Underlying OS flushes I/O's
+ N + Full +
+ + Page Size + {size in bytes} + N + 1024 + + + Password + {password} - Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + HexPassword + {hexPassword} - Must contain a sequence of zero or more hexadecimal encoded byte values without a leading "0x" prefix. Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + Enlist + Y - Automatically enlist in distributed transactions
N - No automatic enlistment
+ N + Y +
+ + Pooling + + True - Use connection pooling.
+ False - Do not use connection pooling.

+ WARNING: When using the default connection pool implementation, + setting this property to True should be avoided by applications that + make use of COM (either directly or indirectly) due to possible + deadlocks that can occur during the finalization of some COM objects. +
+ N + False +
+ + FailIfMissing + True - Don't create the database if it does not exist, throw an error instead
False - Automatically create the database if it does not exist
+ N + False +
+ + Max Page Count + {size in pages} - Limits the maximum number of pages (limits the size) of the database + N + 0 + + + Legacy Format + True - Use the more compatible legacy 3.x database format
False - Use the newer 3.3x database format which compresses numbers more effectively
+ N + False +
+ + Default Timeout + {time in seconds}
The default command timeout
+ N + 30 +
+ + Journal Mode + Delete - Delete the journal file after a commit
Persist - Zero out and leave the journal file on disk after a commit
Off - Disable the rollback journal entirely
+ N + Delete +
+ + Read Only + True - Open the database for read only access
False - Open the database for normal read/write access
+ N + False +
+ + Max Pool Size + The maximum number of connections for the given connection string that can be in the connection pool + N + 100 + + + Default IsolationLevel + The default transaciton isolation level + N + Serializable + + + Foreign Keys + Enable foreign key constraints + N + False + + + Flags + Extra behavioral flags for the connection. See the enumeration for possible values. + N + Default + + + SetDefaults + + True - Apply the default connection settings to the opened database.
+ False - Skip applying the default connection settings to the opened database. +
+ N + True +
+ + ToFullPath + + True - Attempt to expand the data source file name to a fully qualified path before opening.
+ False - Skip attempting to expand the data source file name to a fully qualified path before opening. +
+ N + True +
+
+
+
+ + + Returns the data source file name without extension or path. + + + + + Returns the string "main". + + + + + Gets/sets the default command timeout for newly-created commands. This is especially useful for + commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. + This can also be set in the ConnectionString with "Default Timeout" + + + + + Non-zero if the built-in (i.e. framework provided) connection string + parser should be used when opening the connection. + + + + + Gets/sets the extra behavioral flags for this connection. See the + enumeration for a list of + possible values. + + + + + Returns non-zero if the underlying native connection handle is + owned by this instance. + + + + + Returns the version of the underlying SQLite database engine + + + + + Returns the rowid of the most recent successful INSERT into the database from this connection. + + + + + Returns the number of rows changed by the last INSERT, UPDATE, or DELETE statement executed on + this connection. + + + + + Returns non-zero if the given database connection is in autocommit mode. + Autocommit mode is on by default. Autocommit mode is disabled by a BEGIN + statement. Autocommit mode is re-enabled by a COMMIT or ROLLBACK. + + + + + Returns the amount of memory (in bytes) currently in use by the SQLite core library. + + + + + Returns the maximum amount of memory (in bytes) used by the SQLite core library since the high-water mark was last reset. + + + + + Returns a string containing the define constants (i.e. compile-time + options) used to compile the core managed assembly, delimited with + spaces. + + + + + Returns the version of the underlying SQLite core library. + + + + + This method returns the string whose value is the same as the + SQLITE_SOURCE_ID C preprocessor macro used when compiling the + SQLite core library. + + + + + This method returns the version of the interop SQLite assembly + used. If the SQLite interop assembly is not in use or the + necessary information cannot be obtained for any reason, a null + value may be returned. + + + + + This method returns the string whose value contains the unique + identifier for the source checkout used to build the interop + assembly. If the SQLite interop assembly is not in use or the + necessary information cannot be obtained for any reason, a null + value may be returned. + + + + + This method returns the version of the managed components used + to interact with the SQLite core library. If the necessary + information cannot be obtained for any reason, a null value may + be returned. + + + + + This method returns the string whose value contains the unique + identifier for the source checkout used to build the managed + components currently executing. If the necessary information + cannot be obtained for any reason, a null value may be returned. + + + + + Returns the state of the connection. + + + + + This event is raised whenever SQLite encounters an action covered by the + authorizer during query preparation. Changing the value of the + property will determine if + the specific action will be allowed, ignored, or denied. For the entire + duration of the event, the associated connection and statement objects + must not be modified, either directly or indirectly, by the called code. + + + + + This event is raised whenever SQLite makes an update/delete/insert into the database on + this connection. It only applies to the given connection. + + + + + This event is raised whenever SQLite is committing a transaction. + Return non-zero to trigger a rollback. + + + + + This event is raised whenever SQLite statement first begins executing on + this connection. It only applies to the given connection. + + + + + This event is raised whenever SQLite is rolling back a transaction. + + + + + Returns the instance. + + + + + The I/O file cache flushing behavior for the connection + + + + + Normal file flushing at critical sections of the code + + + + + Full file flushing after every write operation + + + + + Use the default operating system's file flushing, SQLite does not explicitly flush the file buffers after writing + + + + + Raised when authorization is required to perform an action contained + within a SQL query. + + The connection performing the action. + A that contains the + event data. + + + + Raised when a transaction is about to be committed. To roll back a transaction, set the + rollbackTrans boolean value to true. + + The connection committing the transaction + Event arguments on the transaction + + + + Raised when data is inserted, updated and deleted on a given connection + + The connection committing the transaction + The event parameters which triggered the event + + + + Raised when a statement first begins executing on a given connection + + The connection executing the statement + Event arguments of the trace + + + + Raised between each backup step. + + + The source database connection. + + + The source database name. + + + The destination database connection. + + + The destination database name. + + + The number of pages copied with each step. + + + The number of pages remaining to be copied. + + + The total number of pages in the source database. + + + Set to true if the operation needs to be retried due to database + locking issues; otherwise, set to false. + + + True to continue with the backup process or false to halt the backup + process, rolling back any changes that have been made so far. + + + + + The data associated with a call into the authorizer. + + + + + The user-defined native data associated with this event. Currently, + this will always contain the value of . + + + + + The action code responsible for the current call into the authorizer. + + + + + The first string argument for the current call into the authorizer. + The exact value will vary based on the action code, see the + enumeration for possible + values. + + + + + The second string argument for the current call into the authorizer. + The exact value will vary based on the action code, see the + enumeration for possible + values. + + + + + The database name for the current call into the authorizer, if + applicable. + + + + + The name of the inner-most trigger or view that is responsible for + the access attempt or a null value if this access attempt is directly + from top-level SQL code. + + + + + The return code for the current call into the authorizer. + + + + + Constructs an instance of this class with default property values. + + + + + Constructs an instance of this class with specific property values. + + + The user-defined native data associated with this event. + + + The authorizer action code. + + + The first authorizer argument. + + + The second authorizer argument. + + + The database name, if applicable. + + + The name of the inner-most trigger or view that is responsible for + the access attempt or a null value if this access attempt is directly + from top-level SQL code. + + + The authorizer return code. + + + + + Whenever an update event is triggered on a connection, this enum will indicate + exactly what type of operation is being performed. + + + + + A row is being deleted from the given database and table + + + + + A row is being inserted into the table. + + + + + A row is being updated in the table. + + + + + Passed during an Update callback, these event arguments detail the type of update operation being performed + on the given connection. + + + + + The name of the database being updated (usually "main" but can be any attached or temporary database) + + + + + The name of the table being updated + + + + + The type of update being performed (insert/update/delete) + + + + + The RowId affected by this update. + + + + + Event arguments raised when a transaction is being committed + + + + + Set to true to abort the transaction and trigger a rollback + + + + + Passed during an Trace callback, these event arguments contain the UTF-8 rendering of the SQL statement text + + + + + SQL statement text as the statement first begins executing + + + + + This interface represents a custom connection pool implementation + usable by System.Data.SQLite. + + + + + Counts the number of pool entries matching the specified file name. + + + The file name to match or null to match all files. + + + The pool entry counts for each matching file. + + + The total number of connections successfully opened from any pool. + + + The total number of connections successfully closed from any pool. + + + The total number of pool entries for all matching files. + + + + + Disposes of all pooled connections associated with the specified + database file name. + + + The database file name. + + + + + Disposes of all pooled connections. + + + + + Adds a connection to the pool of those associated with the + specified database file name. + + + The database file name. + + + The database connection handle. + + + The connection pool version at the point the database connection + handle was received from the connection pool. This is also the + connection pool version that the database connection handle was + created under. + + + + + Removes a connection from the pool of those associated with the + specified database file name with the intent of using it to + interact with the database. + + + The database file name. + + + The new maximum size of the connection pool for the specified + database file name. + + + The connection pool version associated with the returned database + connection handle, if any. + + + The database connection handle associated with the specified + database file name or null if it cannot be obtained. + + + + + This default method implementations in this class should not be used by + applications that make use of COM (either directly or indirectly) due + to possible deadlocks that can occur during finalization of some COM + objects. + + + + + This field is used to synchronize access to the private static data + in this class. + + + + + When this field is non-null, it will be used to provide the + implementation of all the connection pool methods; otherwise, + the default method implementations will be used. + + + + + The dictionary of connection pools, based on the normalized file + name of the SQLite database. + + + + + The default version number new pools will get. + + + + + The number of connections successfully opened from any pool. + This value is incremented by the Remove method. + + + + + The number of connections successfully closed from any pool. + This value is incremented by the Add method. + + + + + Counts the number of pool entries matching the specified file name. + + + The file name to match or null to match all files. + + + The pool entry counts for each matching file. + + + The total number of connections successfully opened from any pool. + + + The total number of connections successfully closed from any pool. + + + The total number of pool entries for all matching files. + + + + + Disposes of all pooled connections associated with the specified + database file name. + + + The database file name. + + + + + Disposes of all pooled connections. + + + + + Adds a connection to the pool of those associated with the + specified database file name. + + + The database file name. + + + The database connection handle. + + + The connection pool version at the point the database connection + handle was received from the connection pool. This is also the + connection pool version that the database connection handle was + created under. + + + + + Removes a connection from the pool of those associated with the + specified database file name with the intent of using it to + interact with the database. + + + The database file name. + + + The new maximum size of the connection pool for the specified + database file name. + + + The connection pool version associated with the returned database + connection handle, if any. + + + The database connection handle associated with the specified + database file name or null if it cannot be obtained. + + + + + This method is used to obtain a reference to the custom connection + pool implementation currently in use, if any. + + + The custom connection pool implementation or null if the default + connection pool implementation should be used. + + + + + This method is used to set the reference to the custom connection + pool implementation to use, if any. + + + The custom connection pool implementation to use or null if the + default connection pool implementation should be used. + + + + + We do not have to thread-lock anything in this function, because it + is only called by other functions above which already take the lock. + + + The pool queue to resize. + + + If a function intends to add to the pool, this is true, which + forces the resize to take one more than it needs from the pool. + + + + + Keeps track of connections made on a specified file. The PoolVersion + dictates whether old objects get returned to the pool or discarded + when no longer in use. + + + + + The queue of weak references to the actual database connection + handles. + + + + + This pool version associated with the database connection + handles in this pool queue. + + + + + The maximum size of this pool queue. + + + + + Constructs a connection pool queue using the specified version + and maximum size. Normally, all the database connection + handles in this pool are associated with a single database file + name. + + + The initial pool version for this connection pool queue. + + + The initial maximum size for this connection pool queue. + + + + + SQLite implementation of DbConnectionStringBuilder. + + + + + Properties of this class + + + + + Constructs a new instance of the class + + + Default constructor + + + + + Constructs a new instance of the class using the specified connection string. + + The connection string to parse + + + + Private initializer, which assigns the connection string and resets the builder + + The connection string to assign + + + + Helper function for retrieving values from the connectionstring + + The keyword to retrieve settings for + The resulting parameter value + Returns true if the value was found and returned + + + + Fallback method for MONO, which doesn't implement DbConnectionStringBuilder.GetProperties() + + The hashtable to fill with property descriptors + + + + Gets/Sets the default version of the SQLite engine to instantiate. Currently the only valid value is 3, indicating version 3 of the sqlite library. + + + + + Gets/Sets the synchronization mode (file flushing) of the connection string. Default is "Normal". + + + + + Gets/Sets the encoding for the connection string. The default is "False" which indicates UTF-8 encoding. + + + + + Gets/Sets whether or not to use connection pooling. The default is "False" + + + + + Gets/Sets whethor not to store GUID's in binary format. The default is True + which saves space in the database. + + + + + Gets/Sets the filename to open on the connection string. + + + + + An alternate to the data source property + + + + + An alternate to the data source property that uses the SQLite URI syntax. + + + + + Gets/sets the default command timeout for newly-created commands. This is especially useful for + commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. + + + + + Determines whether or not the connection will automatically participate + in the current distributed transaction (if one exists) + + + + + If set to true, will throw an exception if the database specified in the connection + string does not exist. If false, the database will be created automatically. + + + + + If enabled, uses the legacy 3.xx format for maximum compatibility, but results in larger + database sizes. + + + + + When enabled, the database will be opened for read-only access and writing will be disabled. + + + + + Gets/sets the database encryption password + + + + + Gets/sets the database encryption hexadecimal password + + + + + Gets/Sets the page size for the connection. + + + + + Gets/Sets the maximum number of pages the database may hold + + + + + Gets/Sets the cache size for the connection. + + + + + Gets/Sets the DateTime format for the connection. + + + + + Gets/Sets the DateTime kind for the connection. + + + + + Gets/sets the DateTime format string used for formatting + and parsing purposes. + + + + + Gets/Sets the placeholder base schema name used for + .NET Framework compatibility purposes. + + + + + Determines how SQLite handles the transaction journal file. + + + + + Sets the default isolation level for transactions on the connection. + + + + + If enabled, use foreign key constraints + + + + + Gets/Sets the extra behavioral flags. + + + + + If enabled, apply the default connection settings to opened databases. + + + + + If enabled, attempt to resolve the provided data source file name to a + full path before opening. + + + + + SQLite has very limited types, and is inherently text-based. The first 5 types below represent the sum of all types SQLite + understands. The DateTime extension to the spec is for internal use only. + + + + + Not used + + + + + All integers in SQLite default to Int64 + + + + + All floating point numbers in SQLite default to double + + + + + The default data type of SQLite is text + + + + + Typically blob types are only seen when returned from a function + + + + + Null types can be returned from functions + + + + + Used internally by this provider + + + + + Used internally by this provider + + + + + These are the event types associated with the + + delegate (and its corresponding event) and the + class. + + + + + Not used. + + + + + Not used. + + + + + The connection is being opened. + + + + + The connection string has been parsed. + + + + + The connection was opened. + + + + + The method was called on the + connection. + + + + + A transaction was created using the connection. + + + + + The connection was enlisted into a transaction. + + + + + A command was created using the connection. + + + + + A data reader was created using the connection. + + + + + An instance of a derived class has + been created to wrap a native resource. + + + + + The connection is being closed. + + + + + The connection was closed. + + + + + This implementation of SQLite for ADO.NET can process date/time fields in + databases in one of six formats. + + + ISO8601 format is more compatible, readable, fully-processable, but less + accurate as it does not provide time down to fractions of a second. + JulianDay is the numeric format the SQLite uses internally and is arguably + the most compatible with 3rd party tools. It is not readable as text + without post-processing. Ticks less compatible with 3rd party tools that + query the database, and renders the DateTime field unreadable as text + without post-processing. UnixEpoch is more compatible with Unix systems. + InvariantCulture allows the configured format for the invariant culture + format to be used and is human readable. CurrentCulture allows the + configured format for the current culture to be used and is also human + readable. + + The preferred order of choosing a DateTime format is JulianDay, ISO8601, + and then Ticks. Ticks is mainly present for legacy code support. + + + + + Use the value of DateTime.Ticks. This value is not recommended and is not well supported with LINQ. + + + + + Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC DateTime values and + "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values). + + + + + The interval of time in days and fractions of a day since January 1, 4713 BC. + + + + + The whole number of seconds since the Unix epoch (January 1, 1970). + + + + + Any culture-independent string value that the .NET Framework can interpret as a valid DateTime. + + + + + Any string value that the .NET Framework can interpret as a valid DateTime using the current culture. + + + + + The default format for this provider. + + + + + This enum determines how SQLite treats its journal file. + + + By default SQLite will create and delete the journal file when needed during a transaction. + However, for some computers running certain filesystem monitoring tools, the rapid + creation and deletion of the journal file can cause those programs to fail, or to interfere with SQLite. + + If a program or virus scanner is interfering with SQLite's journal file, you may receive errors like "unable to open database file" + when starting a transaction. If this is happening, you may want to change the default journal mode to Persist. + + + + + The default mode, this causes SQLite to use the existing journaling mode for the database. + + + + + SQLite will create and destroy the journal file as-needed. + + + + + When this is set, SQLite will keep the journal file even after a transaction has completed. It's contents will be erased, + and the journal re-used as often as needed. If it is deleted, it will be recreated the next time it is needed. + + + + + This option disables the rollback journal entirely. Interrupted transactions or a program crash can cause database + corruption in this mode! + + + + + SQLite will truncate the journal file to zero-length instead of deleting it. + + + + + SQLite will store the journal in volatile RAM. This saves disk I/O but at the expense of database safety and integrity. + If the application using SQLite crashes in the middle of a transaction when the MEMORY journaling mode is set, then the + database file will very likely go corrupt. + + + + + SQLite uses a write-ahead log instead of a rollback journal to implement transactions. The WAL journaling mode is persistent; + after being set it stays in effect across multiple database connections and after closing and reopening the database. A database + in WAL journaling mode can only be accessed by SQLite version 3.7.0 or later. + + + + + Possible values for the "synchronous" database setting. This setting determines + how often the database engine calls the xSync method of the VFS. + + + + + Use the default "synchronous" database setting. Currently, this should be + the same as using the FULL mode. + + + + + The database engine continues without syncing as soon as it has handed + data off to the operating system. If the application running SQLite + crashes, the data will be safe, but the database might become corrupted + if the operating system crashes or the computer loses power before that + data has been written to the disk surface. + + + + + The database engine will still sync at the most critical moments, but + less often than in FULL mode. There is a very small (though non-zero) + chance that a power failure at just the wrong time could corrupt the + database in NORMAL mode. + + + + + The database engine will use the xSync method of the VFS to ensure that + all content is safely written to the disk surface prior to continuing. + This ensures that an operating system crash or power failure will not + corrupt the database. FULL synchronous is very safe, but it is also + slower. + + + + + The requested command execution type. This controls which method of the + object will be called. + + + + + Do nothing. No method will be called. + + + + + The command is not expected to return a result -OR- the result is not + needed. The or + method + will be called. + + + + + The command is expected to return a scalar result -OR- the result should + be limited to a scalar result. The + or method will + be called. + + + + + The command is expected to return result. + The or + method will + be called. + + + + + Use the default command execution type. Using this value is the same + as using the value. + + + + + The action code responsible for the current call into the authorizer. + + + + + No action is being performed. This value should not be used from + external code. + + + + + No longer used. + + + + + An index will be created. The action-specific arguments are the + index name and the table name. + + + + + + A table will be created. The action-specific arguments are the + table name and a null value. + + + + + A temporary index will be created. The action-specific arguments + are the index name and the table name. + + + + + A temporary table will be created. The action-specific arguments + are the table name and a null value. + + + + + A temporary trigger will be created. The action-specific arguments + are the trigger name and the table name. + + + + + A temporary view will be created. The action-specific arguments are + the view name and a null value. + + + + + A trigger will be created. The action-specific arguments are the + trigger name and the table name. + + + + + A view will be created. The action-specific arguments are the view + name and a null value. + + + + + A DELETE statement will be executed. The action-specific arguments + are the table name and a null value. + + + + + An index will be dropped. The action-specific arguments are the + index name and the table name. + + + + + A table will be dropped. The action-specific arguments are the tables + name and a null value. + + + + + A temporary index will be dropped. The action-specific arguments are + the index name and the table name. + + + + + A temporary table will be dropped. The action-specific arguments are + the table name and a null value. + + + + + A temporary trigger will be dropped. The action-specific arguments + are the trigger name and the table name. + + + + + A temporary view will be dropped. The action-specific arguments are + the view name and a null value. + + + + + A trigger will be dropped. The action-specific arguments are the + trigger name and the table name. + + + + + A view will be dropped. The action-specific arguments are the view + name and a null value. + + + + + An INSERT statement will be executed. The action-specific arguments + are the table name and a null value. + + + + + A PRAGMA statement will be executed. The action-specific arguments + are the name of the PRAGMA and the new value or a null value. + + + + + A table column will be read. The action-specific arguments are the + table name and the column name. + + + + + A SELECT statement will be executed. The action-specific arguments + are both null values. + + + + + A transaction will be started, committed, or rolled back. The + action-specific arguments are the name of the operation (BEGIN, + COMMIT, or ROLLBACK) and a null value. + + + + + An UPDATE statement will be executed. The action-specific arguments + are the table name and the column name. + + + + + A database will be attached to the connection. The action-specific + arguments are the database file name and a null value. + + + + + A database will be detached from the connection. The action-specific + arguments are the database name and a null value. + + + + + The schema of a table will be altered. The action-specific arguments + are the database name and the table name. + + + + + An index will be deleted and then recreated. The action-specific + arguments are the index name and a null value. + + + + + A table will be analyzed to gathers statistics about it. The + action-specific arguments are the table name and a null value. + + + + + A virtual table will be created. The action-specific arguments are + the table name and the module name. + + + + + A virtual table will be dropped. The action-specific arguments are + the table name and the module name. + + + + + A SQL function will be called. The action-specific arguments are a + null value and the function name. + + + + + A savepoint will be created, released, or rolled back. The + action-specific arguments are the name of the operation (BEGIN, + RELEASE, or ROLLBACK) and the savepoint name. + + + + + The return code for the current call into the authorizer. + + + + + The action will be allowed. + + + + + The overall action will be disallowed and an error message will be + returned from the query preparation method. + + + + + The specific action will be disallowed; however, the overall action + will continue. The exact effects of this return code vary depending + on the specific action, please refer to the SQLite core library + documentation for futher details. + + + + + Class used internally to determine the datatype of a column in a resultset + + + + + The DbType of the column, or DbType.Object if it cannot be determined + + + + + The affinity of a column, used for expressions or when Type is DbType.Object + + + + + SQLite implementation of DbDataAdapter. + + + + + This class is just a shell around the DbDataAdapter. Nothing from + DbDataAdapter is overridden here, just a few constructors are defined. + + + Default constructor. + + + + + Constructs a data adapter using the specified select command. + + + The select command to associate with the adapter. + + + + + Constructs a data adapter with the supplied select command text and + associated with the specified connection. + + + The select command text to associate with the data adapter. + + + The connection to associate with the select command. + + + + + Constructs a data adapter with the specified select command text, + and using the specified database connection string. + + + The select command text to use to construct a select command. + + + A connection string suitable for passing to a new SQLiteConnection, + which is associated with the select command. + + + + + Constructs a data adapter with the specified select command text, + and using the specified database connection string. + + + The select command text to use to construct a select command. + + + A connection string suitable for passing to a new SQLiteConnection, + which is associated with the select command. + + + Non-zero to parse the connection string using the built-in (i.e. + framework provided) parser when opening the connection. + + + + + Raised by the underlying DbDataAdapter when a row is being updated + + The event's specifics + + + + Raised by DbDataAdapter after a row is updated + + The event's specifics + + + + Row updating event handler + + + + + Row updated event handler + + + + + Gets/sets the select command for this DataAdapter + + + + + Gets/sets the insert command for this DataAdapter + + + + + Gets/sets the update command for this DataAdapter + + + + + Gets/sets the delete command for this DataAdapter + + + + + SQLite implementation of DbDataReader. + + + + + Underlying command this reader is attached to + + + + + Index of the current statement in the command being processed + + + + + Current statement being Read() + + + + + State of the current statement being processed. + -1 = First Step() executed, so the first Read() will be ignored + 0 = Actively reading + 1 = Finished reading + 2 = Non-row-returning statement, no records + + + + + Number of records affected by the insert/update statements executed on the command + + + + + Count of fields (columns) in the row-returning statement currently being processed + + + + + Maps the field (column) names to their corresponding indexes within the results. + + + + + Datatypes of active fields (columns) in the current statement, used for type-restricting data + + + + + The behavior of the datareader + + + + + If set, then dispose of the command object when the reader is finished + + + + + If set, then raise an exception when the object is accessed after being disposed. + + + + + An array of rowid's for the active statement if CommandBehavior.KeyInfo is specified + + + + + Matches the version of the connection. + + + + + The "stub" (i.e. placeholder) base schema name to use when returning + column schema information. Matches the base schema name used by the + associated connection. + + + + + Internal constructor, initializes the datareader and sets up to begin executing statements + + The SQLiteCommand this data reader is for + The expected behavior of the data reader + + + + Dispose of all resources used by this datareader. + + + + + + Closes the datareader, potentially closing the connection as well if CommandBehavior.CloseConnection was specified. + + + + + Throw an error if the datareader is closed + + + + + Throw an error if a row is not loaded + + + + + Enumerator support + + Returns a DbEnumerator object. + + + + SQLite is inherently un-typed. All datatypes in SQLite are natively strings. The definition of the columns of a table + and the affinity of returned types are all we have to go on to type-restrict data in the reader. + + This function attempts to verify that the type of data being requested of a column matches the datatype of the column. In + the case of columns that are not backed into a table definition, we attempt to match up the affinity of a column (int, double, string or blob) + to a set of known types that closely match that affinity. It's not an exact science, but its the best we can do. + + + This function throws an InvalidTypeCast() exception if the requested type doesn't match the column's definition or affinity. + + The index of the column to type-check + The type we want to get out of the column + + + + Retrieves the column as a boolean value + + The index of the column to retrieve + bool + + + + Retrieves the column as a single byte value + + The index of the column to retrieve + byte + + + + Retrieves a column as an array of bytes (blob) + + The index of the column to retrieve + The zero-based index of where to begin reading the data + The buffer to write the bytes into + The zero-based index of where to begin writing into the array + The number of bytes to retrieve + The actual number of bytes written into the array + + To determine the number of bytes in the column, pass a null value for the buffer. The total length will be returned. + + + + + Returns the column as a single character + + The index of the column to retrieve + char + + + + Retrieves a column as an array of chars (blob) + + The index of the column to retrieve + The zero-based index of where to begin reading the data + The buffer to write the characters into + The zero-based index of where to begin writing into the array + The number of bytes to retrieve + The actual number of characters written into the array + + To determine the number of characters in the column, pass a null value for the buffer. The total length will be returned. + + + + + Retrieves the name of the back-end datatype of the column + + The index of the column to retrieve + string + + + + Retrieve the column as a date/time value + + The index of the column to retrieve + DateTime + + + + Retrieve the column as a decimal value + + The index of the column to retrieve + decimal + + + + Returns the column as a double + + The index of the column to retrieve + double + + + + Returns the .NET type of a given column + + The index of the column to retrieve + Type + + + + Returns a column as a float value + + The index of the column to retrieve + float + + + + Returns the column as a Guid + + The index of the column to retrieve + Guid + + + + Returns the column as a short + + The index of the column to retrieve + Int16 + + + + Retrieves the column as an int + + The index of the column to retrieve + Int32 + + + + Retrieves the column as a long + + The index of the column to retrieve + Int64 + + + + Retrieves the name of the column + + The index of the column to retrieve + string + + + + Retrieves the i of a column, given its name + + The name of the column to retrieve + The int i of the column + + + + Schema information in SQLite is difficult to map into .NET conventions, so a lot of work must be done + to gather the necessary information so it can be represented in an ADO.NET manner. + + Returns a DataTable containing the schema information for the active SELECT statement being processed. + + + + Retrieves the column as a string + + The index of the column to retrieve + string + + + + Retrieves the column as an object corresponding to the underlying datatype of the column + + The index of the column to retrieve + object + + + + Retreives the values of multiple columns, up to the size of the supplied array + + The array to fill with values from the columns in the current resultset + The number of columns retrieved + + + + Returns a collection containing all the column names and values for the + current row of data in the current resultset, if any. If there is no + current row or no current resultset, an exception may be thrown. + + + The collection containing the column name and value information for the + current row of data in the current resultset or null if this information + cannot be obtained. + + + + + Returns True if the specified column is null + + The index of the column to retrieve + True or False + + + + Moves to the next resultset in multiple row-returning SQL command. + + True if the command was successful and a new resultset is available, False otherwise. + + + + This method attempts to query the flags associated with the database + connection in use. If the database connection is disposed, the default + flags will be returned. + + + The data reader containing the databse connection to query the flags from. + + + The connection flags value. + + + + + Retrieves the SQLiteType for a given column, and caches it to avoid repetetive interop calls. + + The index of the column to retrieve + A SQLiteType structure + + + + Reads the next row from the resultset + + True if a new row was successfully loaded and is ready for processing + + + + Not implemented. Returns 0 + + + + + Returns the number of columns in the current resultset + + + + + Returns the number of visible fields in the current resultset + + + + + Returns True if the resultset has rows that can be fetched + + + + + Returns True if the data reader is closed + + + + + Retrieve the count of records affected by an update/insert command. Only valid once the data reader is closed! + + + + + Indexer to retrieve data from a column given its name + + The name of the column to retrieve data for + The value contained in the column + + + + Indexer to retrieve data from a column given its i + + The index of the column to retrieve + The value contained in the column + + + + SQLite exception class. + + + + + Private constructor for use with serialization. + + + Holds the serialized object data about the exception being thrown. + + + Contains contextual information about the source or destination. + + + + + Public constructor for generating a SQLite exception given the error + code and message. + + + The SQLite return code to report. + + + Message text to go along with the return code message text. + + + + + Public constructor that uses the base class constructor for the error + message. + + Error message text. + + + + Public constructor that uses the default base class constructor. + + + + + Public constructor that uses the base class constructor for the error + message and inner exception. + + Error message text. + The original (inner) exception. + + + + Adds extra information to the serialized object data specific to this + class type. This is only used for serialization. + + + Holds the serialized object data about the exception being thrown. + + + Contains contextual information about the source or destination. + + + + + Returns the error message for the specified SQLite return code. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns the composite error message based on the SQLite return code + and the optional detailed error message. + + The SQLite return code. + Optional detailed error message. + Error message text for the return code. + + + + Gets the associated SQLite result code for this exception as a + . This property returns the same + underlying value as the property. + + + + + Gets the associated SQLite return code for this exception as an + . For desktop versions of the .NET Framework, + this property overrides the property of the same name within the + + class. This property returns the same underlying value as the + property. + + + + + SQLite error codes. Actually, this enumeration represents a return code, + which may also indicate success in one of several ways (e.g. SQLITE_OK, + SQLITE_ROW, and SQLITE_DONE). Therefore, the name of this enumeration is + something of a misnomer. + + + + + The error code is unknown. This error code + is only used by the managed wrapper itself. + + + + + Successful result + + + + + SQL error or missing database + + + + + Internal logic error in SQLite + + + + + Access permission denied + + + + + Callback routine requested an abort + + + + + The database file is locked + + + + + A table in the database is locked + + + + + A malloc() failed + + + + + Attempt to write a readonly database + + + + + Operation terminated by sqlite3_interrupt() + + + + + Some kind of disk I/O error occurred + + + + + The database disk image is malformed + + + + + Unknown opcode in sqlite3_file_control() + + + + + Insertion failed because database is full + + + + + Unable to open the database file + + + + + Database lock protocol error + + + + + Database is empty + + + + + The database schema changed + + + + + String or BLOB exceeds size limit + + + + + Abort due to constraint violation + + + + + Data type mismatch + + + + + Library used incorrectly + + + + + Uses OS features not supported on host + + + + + Authorization denied + + + + + Auxiliary database format error + + + + + 2nd parameter to sqlite3_bind out of range + + + + + File opened that is not a database file + + + + + Notifications from sqlite3_log() + + + + + Warnings from sqlite3_log() + + + + + sqlite3_step() has another row ready + + + + + sqlite3_step() has finished executing + + + + + Used to mask off extended result codes + + + + + SQLite implementation of . + + + SQLite implementation of . + + + + + Constructs a new instance. + + + + + Static instance member which returns an instanced class. + + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Will provide a object in .NET 3.5. + + The class or interface type to query for. + + + + + This event is raised whenever SQLite raises a logging event. + Note that this should be set as one of the first things in the + application. This event is provided for backward compatibility only. + New code should use the class instead. + + + + + This abstract class is designed to handle user-defined functions easily. An instance of the derived class is made for each + connection to the database. + + + Although there is one instance of a class derived from SQLiteFunction per database connection, the derived class has no access + to the underlying connection. This is necessary to deter implementers from thinking it would be a good idea to make database + calls during processing. + + It is important to distinguish between a per-connection instance, and a per-SQL statement context. One instance of this class + services all SQL statements being stepped through on that connection, and there can be many. One should never store per-statement + information in member variables of user-defined function classes. + + For aggregate functions, always create and store your per-statement data in the contextData object on the 1st step. This data will + be automatically freed for you (and Dispose() called if the item supports IDisposable) when the statement completes. + + + + + The base connection this function is attached to + + + + + Internal array used to keep track of aggregate function context data + + + + + The connection flags associated with this object (this should be the + same value as the flags associated with the parent connection object). + + + + + Holds a reference to the callback function for user functions + + + + + Holds a reference to the callbakc function for stepping in an aggregate function + + + + + Holds a reference to the callback function for finalizing an aggregate function + + + + + Holds a reference to the callback function for collation sequences + + + + + Current context of the current callback. Only valid during a callback + + + + + This static list contains all the user-defined functions declared using the proper attributes. + + + + + Internal constructor, initializes the function's internal variables. + + + + + Constructs an instance of this class using the specified data-type + conversion parameters. + + + The DateTime format to be used when converting string values to a + DateTime and binding DateTime parameters. + + + The to be used when creating DateTime + values. + + + The format string to be used when parsing and formatting DateTime + values. + + + Non-zero to create a UTF-16 data-type conversion context; otherwise, + a UTF-8 data-type conversion context will be created. + + + + + Disposes of any active contextData variables that were not automatically cleaned up. Sometimes this can happen if + someone closes the connection while a DataReader is open. + + + + + Placeholder for a user-defined disposal routine + + True if the object is being disposed explicitly + + + + Scalar functions override this method to do their magic. + + + Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available + to force them into a certain type. Therefore the only types you will ever see as parameters are + DBNull.Value, Int64, Double, String or byte[] array. + + The arguments for the command to process + You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or + you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, + just return it! + + + + Aggregate functions override this method to do their magic. + + + Typically you'll be updating whatever you've placed in the contextData field and returning as quickly as possible. + + The arguments for the command to process + The 1-based step number. This is incrememted each time the step method is called. + A placeholder for implementers to store contextual data pertaining to the current context. + + + + Aggregate functions override this method to finish their aggregate processing. + + + If you implemented your aggregate function properly, + you've been recording and keeping track of your data in the contextData object provided, and now at this stage you should have + all the information you need in there to figure out what to return. + NOTE: It is possible to arrive here without receiving a previous call to Step(), in which case the contextData will + be null. This can happen when no rows were returned. You can either return null, or 0 or some other custom return value + if that is the case. + + Your own assigned contextData, provided for you so you can return your final results. + You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or + you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, + just return it! + + + + + User-defined collation sequences override this method to provide a custom string sorting algorithm. + + The first string to compare + The second strnig to compare + 1 if param1 is greater than param2, 0 if they are equal, or -1 if param1 is less than param2 + + + + Converts an IntPtr array of context arguments to an object array containing the resolved parameters the pointers point to. + + + Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available + to force them into a certain type. Therefore the only types you will ever see as parameters are + DBNull.Value, Int64, Double, String or byte[] array. + + The number of arguments + A pointer to the array of arguments + An object array of the arguments once they've been converted to .NET values + + + + Takes the return value from Invoke() and Final() and figures out how to return it to SQLite's context. + + The context the return value applies to + The parameter to return to SQLite + + + + Internal scalar callback function, which wraps the raw context pointer and calls the virtual Invoke() method. + WARNING: Must not throw exceptions. + + A raw context pointer + Number of arguments passed in + A pointer to the array of arguments + + + + Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function. + WARNING: Must not throw exceptions. + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. Returns 0 if an exception is caught. + + + + Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function. + WARNING: Must not throw exceptions. + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. Returns 0 if an exception is caught. + + + + The internal aggregate Step function callback, which wraps the raw context pointer and calls the virtual Step() method. + WARNING: Must not throw exceptions. + + + This function takes care of doing the lookups and getting the important information put together to call the Step() function. + That includes pulling out the user's contextData and updating it after the call is made. We use a sorted list for this so + binary searches can be done to find the data. + + A raw context pointer + Number of arguments passed in + A pointer to the array of arguments + + + + An internal aggregate Final function callback, which wraps the context pointer and calls the virtual Final() method. + WARNING: Must not throw exceptions. + + A raw context pointer + + + + Using reflection, enumerate all assemblies in the current appdomain looking for classes that + have a SQLiteFunctionAttribute attribute, and registering them accordingly. + + + + + Manual method of registering a function. The type must still have the SQLiteFunctionAttributes in order to work + properly, but this is a workaround for the Compact Framework where enumerating assemblies is not currently supported. + + The type of the function to register + + + + Called by SQLiteBase derived classes, this function binds all user-defined functions to a connection. + It is done this way so that all user-defined functions will access the database using the same encoding scheme + as the connection (UTF-8 or UTF-16). + + + The wrapper functions that interop with SQLite will create a unique cookie value, which internally is a pointer to + all the wrapped callback functions. The interop function uses it to map CDecl callbacks to StdCall callbacks. + + The base object on which the functions are to bind + The flags associated with the parent connection object + Returns a logical list of functions which the connection should retain until it is closed. + + + + This function binds a user-defined functions to a connection. + + + The object instance associated with the + that the function should be bound to. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + + + + Returns a reference to the underlying connection's SQLiteConvert class, which can be used to convert + strings and DateTime's into the current connection's encoding schema. + + + + + Extends SQLiteFunction and allows an inherited class to obtain the collating sequence associated with a function call. + + + User-defined functions can call the GetCollationSequence() method in this class and use it to compare strings and char arrays. + + + + + Obtains the collating sequence in effect for the given function. + + + + + + The type of user-defined function to declare + + + + + Scalar functions are designed to be called and return a result immediately. Examples include ABS(), Upper(), Lower(), etc. + + + + + Aggregate functions are designed to accumulate data until the end of a call and then return a result gleaned from the accumulated data. + Examples include SUM(), COUNT(), AVG(), etc. + + + + + Collation sequences are used to sort textual data in a custom manner, and appear in an ORDER BY clause. Typically text in an ORDER BY is + sorted using a straight case-insensitive comparison function. Custom collating sequences can be used to alter the behavior of text sorting + in a user-defined manner. + + + + + An internal callback delegate declaration. + + Raw native context pointer for the user function. + Total number of arguments to the user function. + Raw native pointer to the array of raw native argument pointers. + + + + An internal final callback delegate declaration. + + Raw context pointer for the user function + + + + Internal callback delegate for implementing collation sequences + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. + + + + The type of collating sequence + + + + + The built-in BINARY collating sequence + + + + + The built-in NOCASE collating sequence + + + + + The built-in REVERSE collating sequence + + + + + A custom user-defined collating sequence + + + + + The encoding type the collation sequence uses + + + + + The collation sequence is UTF8 + + + + + The collation sequence is UTF16 little-endian + + + + + The collation sequence is UTF16 big-endian + + + + + A struct describing the collating sequence a function is executing in + + + + + The name of the collating sequence + + + + + The type of collating sequence + + + + + The text encoding of the collation sequence + + + + + Context of the function that requested the collating sequence + + + + + Calls the base collating sequence to compare two strings + + The first string to compare + The second string to compare + -1 if s1 is less than s2, 0 if s1 is equal to s2, and 1 if s1 is greater than s2 + + + + Calls the base collating sequence to compare two character arrays + + The first array to compare + The second array to compare + -1 if c1 is less than c2, 0 if c1 is equal to c2, and 1 if c1 is greater than c2 + + + + A simple custom attribute to enable us to easily find user-defined functions in + the loaded assemblies and initialize them in SQLite as connections are made. + + + + + Default constructor, initializes the internal variables for the function. + + + + + Constructs an instance of this class. + + + The name of the function, as seen by the SQLite core library. + + + The number of arguments that the function will accept. + + + The type of function being declared. This will either be Scalar, + Aggregate, or Collation. + + + + + The function's name as it will be used in SQLite command text. + + + + + The number of arguments this function expects. -1 if the number of arguments is variable. + + + + + The type of function this implementation will be. + + + + + The object instance that describes the class + containing the implementation for the associated function. + + + + + This class provides key info for a given SQLite statement. + + Providing key information for a given statement is non-trivial :( + + + + + + This function does all the nasty work at determining what keys need to be returned for + a given statement. + + + + + + + + Make sure all the subqueries are open and ready and sync'd with the current rowid + of the table they're supporting + + + + + Release any readers on any subqueries + + + + + Append all the columns we've added to the original query to the schema + + + + + + How many additional columns of keyinfo we're holding + + + + + Used to support CommandBehavior.KeyInfo + + + + + A single sub-query for a given table/database. + + + + + Event data for logging event handlers. + + + + + The error code. The type of this object value should be + or . + + + + + SQL statement text as the statement first begins executing + + + + + Extra data associated with this event, if any. + + + + + Constructs the object. + + Should be null. + + The error code. The type of this object value should be + or . + + The error message, if any. + The extra data, if any. + + + + Raised when a log event occurs. + + The current connection + Event arguments of the trace + + + + Manages the SQLite custom logging functionality and the associated + callback for the whole process. + + + + + Object used to synchronize access to the static instance data + for this class. + + + + + Member variable to store the AppDomain.DomainUnload event handler. + + + + + The default log event handler. + + + + + The log callback passed to native SQLite engine. This must live + as long as the SQLite library has a pointer to it. + + + + + The base SQLite object to interop with. + + + + + This will be non-zero if logging is currently enabled. + + + + + Initializes the SQLite logging facilities. + + + + + Handles the AppDomain being unloaded. + + Should be null. + The data associated with this event. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The SQLite error code. + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The integer error code. + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + + The error code. The type of this object value should be + System.Int32 or SQLiteErrorCode. + + The message to be logged. + + + + Creates and initializes the default log event handler. + + + + + Adds the default log event handler to the list of handlers. + + + + + Removes the default log event handler from the list of handlers. + + + + + Internal proxy function that calls any registered application log + event handlers. + + WARNING: This method is used more-or-less directly by native code, + do not modify its type signature. + + + The extra data associated with this message, if any. + + + The error code associated with this message. + + + The message string to be logged. + + + + + Default logger. Currently, uses the Trace class (i.e. sends events + to the current trace listeners, if any). + + Should be null. + The data associated with this event. + + + + Member variable to store the application log handler to call. + + + + + This event is raised whenever SQLite raises a logging event. + Note that this should be set as one of the first things in the + application. + + + + + If this property is true, logging is enabled; otherwise, logging is + disabled. When logging is disabled, no logging events will fire. + + + + + MetaDataCollections specific to SQLite + + + + + Returns a list of databases attached to the connection + + + + + Returns column information for the specified table + + + + + Returns index information for the optionally-specified table + + + + + Returns base columns for the given index + + + + + Returns the tables in the given catalog + + + + + Returns user-defined views in the given catalog + + + + + Returns underlying column information on the given view + + + + + Returns foreign key information for the given catalog + + + + + Returns the triggers on the database + + + + + SQLite implementation of DbParameter. + + + + + The data type of the parameter + + + + + The version information for mapping the parameter + + + + + The value of the data in the parameter + + + + + The source column for the parameter + + + + + The column name + + + + + The data size, unused by SQLite + + + + + Default constructor + + + + + Constructs a named parameter given the specified parameter name + + The parameter name + + + + Constructs a named parameter given the specified parameter name and initial value + + The parameter name + The initial value of the parameter + + + + Constructs a named parameter of the specified type + + The parameter name + The datatype of the parameter + + + + Constructs a named parameter of the specified type and source column reference + + The parameter name + The data type + The source column + + + + Constructs a named parameter of the specified type, source column and row version + + The parameter name + The data type + The source column + The row version information + + + + Constructs an unnamed parameter of the specified data type + + The datatype of the parameter + + + + Constructs an unnamed parameter of the specified data type and sets the initial value + + The datatype of the parameter + The initial value of the parameter + + + + Constructs an unnamed parameter of the specified data type and source column + + The datatype of the parameter + The source column + + + + Constructs an unnamed parameter of the specified data type, source column and row version + + The data type + The source column + The row version information + + + + Constructs a named parameter of the specified type and size + + The parameter name + The data type + The size of the parameter + + + + Constructs a named parameter of the specified type, size and source column + + The name of the parameter + The data type + The size of the parameter + The source column + + + + Constructs a named parameter of the specified type, size, source column and row version + + The name of the parameter + The data type + The size of the parameter + The source column + The row version information + + + + Constructs a named parameter of the specified type, size, source column and row version + + The name of the parameter + The data type + The size of the parameter + Only input parameters are supported in SQLite + Ignored + Ignored + Ignored + The source column + The row version information + The initial value to assign the parameter + + + + Constructs a named parameter, yet another flavor + + The name of the parameter + The data type + The size of the parameter + Only input parameters are supported in SQLite + Ignored + Ignored + The source column + The row version information + Whether or not this parameter is for comparing NULL's + The intial value to assign the parameter + + + + Constructs an unnamed parameter of the specified type and size + + The data type + The size of the parameter + + + + Constructs an unnamed parameter of the specified type, size, and source column + + The data type + The size of the parameter + The source column + + + + Constructs an unnamed parameter of the specified type, size, source column and row version + + The data type + The size of the parameter + The source column + The row version information + + + + Resets the DbType of the parameter so it can be inferred from the value + + + + + Clones a parameter + + A new, unassociated SQLiteParameter + + + + Whether or not the parameter can contain a null value + + + + + Returns the datatype of the parameter + + + + + Supports only input parameters + + + + + Returns the parameter name + + + + + Returns the size of the parameter + + + + + Gets/sets the source column + + + + + Used by DbCommandBuilder to determine the mapping for nullable fields + + + + + Gets and sets the row version + + + + + Gets and sets the parameter value. If no datatype was specified, the datatype will assume the type from the value given. + + + + + SQLite implementation of DbParameterCollection. + + + + + The underlying command to which this collection belongs + + + + + The internal array of parameters in this collection + + + + + Determines whether or not all parameters have been bound to their statement(s) + + + + + Initializes the collection + + The command to which the collection belongs + + + + Retrieves an enumerator for the collection + + An enumerator for the underlying array + + + + Adds a parameter to the collection + + The parameter name + The data type + The size of the value + The source column + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter name + The data type + The size of the value + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter name + The data type + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter to add + A zero-based index of where the parameter is located in the array + + + + Adds a parameter to the collection + + The parameter to add + A zero-based index of where the parameter is located in the array + + + + Adds a named/unnamed parameter and its value to the parameter collection. + + Name of the parameter, or null to indicate an unnamed parameter + The initial value of the parameter + Returns the SQLiteParameter object created during the call. + + + + Adds an array of parameters to the collection + + The array of parameters to add + + + + Adds an array of parameters to the collection + + The array of parameters to add + + + + Clears the array and resets the collection + + + + + Determines if the named parameter exists in the collection + + The name of the parameter to check + True if the parameter is in the collection + + + + Determines if the parameter exists in the collection + + The SQLiteParameter to check + True if the parameter is in the collection + + + + Not implemented + + + + + + + Retrieve a parameter by name from the collection + + The name of the parameter to fetch + A DbParameter object + + + + Retrieves a parameter by its index in the collection + + The index of the parameter to retrieve + A DbParameter object + + + + Returns the index of a parameter given its name + + The name of the parameter to find + -1 if not found, otherwise a zero-based index of the parameter + + + + Returns the index of a parameter + + The parameter to find + -1 if not found, otherwise a zero-based index of the parameter + + + + Inserts a parameter into the array at the specified location + + The zero-based index to insert the parameter at + The parameter to insert + + + + Removes a parameter from the collection + + The parameter to remove + + + + Removes a parameter from the collection given its name + + The name of the parameter to remove + + + + Removes a parameter from the collection given its index + + The zero-based parameter index to remove + + + + Re-assign the named parameter to a new parameter object + + The name of the parameter to replace + The new parameter + + + + Re-assign a parameter at the specified index + + The zero-based index of the parameter to replace + The new parameter + + + + Un-binds all parameters from their statements + + + + + This function attempts to map all parameters in the collection to all statements in a Command. + Since named parameters may span multiple statements, this function makes sure all statements are bound + to the same named parameter. Unnamed parameters are bound in sequence. + + + + + Returns false + + + + + Returns false + + + + + Returns false + + + + + Returns null + + + + + Returns a count of parameters in the collection + + + + + Overloaded to specialize the return value of the default indexer + + Name of the parameter to get/set + The specified named SQLite parameter + + + + Overloaded to specialize the return value of the default indexer + + The index of the parameter to get/set + The specified SQLite parameter + + + + Represents a single SQL statement in SQLite. + + + + + The underlying SQLite object this statement is bound to + + + + + The command text of this SQL statement + + + + + The actual statement pointer + + + + + An index from which unnamed parameters begin + + + + + Names of the parameters as SQLite understands them to be + + + + + Parameters for this statement + + + + + Command this statement belongs to (if any) + + + + + The flags associated with the parent connection object. + + + + + Initializes the statement and attempts to get all information about parameters in the statement + + The base SQLite object + The flags associated with the parent connection object + The statement + The command text for this statement + The previous command in a multi-statement command + + + + Disposes and finalizes the statement + + + + + If the underlying database connection is open, fetches the number of changed rows + resulting from the most recent query; otherwise, does nothing. + + + The number of changes when true is returned. + Undefined if false is returned. + + Non-zero if the number of changed rows was fetched. + + + + Called by SQLiteParameterCollection, this function determines if the specified parameter name belongs to + this statement, and if so, keeps a reference to the parameter so it can be bound later. + + The parameter name to map + The parameter to assign it + + + + Bind all parameters, making sure the caller didn't miss any + + + + + Attempts to convert an arbitrary object to the Boolean data type. + Null object values are converted to false. Throws a SQLiteException + upon failure. + + The object value to convert. + The format provider to use. + The converted boolean value. + + + + Perform the bind operation for an individual parameter + + The index of the parameter to bind + The parameter we're binding + + + + SQLite implementation of DbTransaction. + + + + + The connection to which this transaction is bound + + + + + Constructs the transaction object, binding it to the supplied connection + + The connection to open a transaction on + TRUE to defer the writelock, or FALSE to lock immediately + + + + Disposes the transaction. If it is currently active, any changes are rolled back. + + + + + Commits the current transaction. + + + + + Rolls back the active transaction. + + + + + Returns the underlying connection to which this transaction applies. + + + + + Forwards to the local Connection property + + + + + Gets the isolation level of the transaction. SQLite only supports Serializable transactions. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to <?xml version="1.0" standalone="yes"?> + <DocumentElement> + <DataTypes> + <TypeName>smallint</TypeName> + <ProviderDbType>10</ProviderDbType> + <ColumnSize>5</ColumnSize> + <DataType>System.Int16</DataType> + <CreateFormat>smallint</CreateFormat> + <IsAutoIncrementable>false</IsAutoIncrementable> + <IsCaseSensitive>false</IsCaseSensitive> + <IsFixedLength>true</IsFixedLength> + <IsFixedPrecisionScale>true</IsFixedPrecisionScale> + <IsLong>false</IsLong> + <IsNullable>true</ [rest of string was truncated]";. + + + + + Looks up a localized string similar to ALL,ALTER,AND,AS,AUTOINCREMENT,BETWEEN,BY,CASE,CHECK,COLLATE,COMMIT,CONSTRAINT,CREATE,CROSS,DEFAULT,DEFERRABLE,DELETE,DISTINCT,DROP,ELSE,ESCAPE,EXCEPT,FOREIGN,FROM,FULL,GROUP,HAVING,IN,INDEX,INNER,INSERT,INTERSECT,INTO,IS,ISNULL,JOIN,LEFT,LIMIT,NATURAL,NOT,NOTNULL,NULL,ON,OR,ORDER,OUTER,PRIMARY,REFERENCES,RIGHT,ROLLBACK,SELECT,SET,TABLE,THEN,TO,TRANSACTION,UNION,UNIQUE,UPDATE,USING,VALUES,WHEN,WHERE. + + + + + Looks up a localized string similar to <?xml version="1.0" encoding="utf-8" ?> + <DocumentElement> + <MetaDataCollections> + <CollectionName>MetaDataCollections</CollectionName> + <NumberOfRestrictions>0</NumberOfRestrictions> + <NumberOfIdentifierParts>0</NumberOfIdentifierParts> + </MetaDataCollections> + <MetaDataCollections> + <CollectionName>DataSourceInformation</CollectionName> + <NumberOfRestrictions>0</NumberOfRestrictions> + <NumberOfIdentifierParts>0</NumberOfIdentifierParts> + </MetaDataCollections> + <MetaDataC [rest of string was truncated]";. + + + + + The name of the environment variable containing the processor + architecture of the current process. + + + + + This is the P/Invoke method that wraps the native Win32 LoadLibrary + function. See the MSDN documentation for full details on what it + does. + + + The name of the executable library. + + + The native module handle upon success -OR- IntPtr.Zero on failure. + + + + + This lock is used to protect the static _SQLiteModule and + processorArchitecturePlatforms fields, below. + + + + + Stores the mappings between processor architecture names and platform + names. + + + + + The native module handle for the native SQLite library or the value + IntPtr.Zero. + + + + + For now, this method simply calls the Initialize method. + + + + + Attempts to initialize this class by pre-loading the native SQLite + library for the processor architecture of the current process. + + + + + Queries and returns the base directory of the current application + domain. + + + The base directory for the current application domain -OR- null if it + cannot be determined. + + + + + Determines if the dynamic link library file name requires a suffix + and adds it if necessary. + + + The original dynamic link library file name to inspect. + + + The dynamic link library file name, possibly modified to include an + extension. + + + + + Queries and returns the processor architecture of the current + process. + + + The processor architecture of the current process -OR- null if it + cannot be determined. + + + + + Given the processor architecture, returns the name of the platform. + + + The processor architecture to be translated to a platform name. + + + The platform name for the specified processor architecture -OR- null + if it cannot be determined. + + + + + Attempts to load the native SQLite library based on the specified + directory and processor architecture. + + + The base directory to use, null for default (the base directory of + the current application domain). This directory should contain the + processor architecture specific sub-directories. + + + The requested processor architecture, null for default (the + processor architecture of the current process). This caller should + almost always specify null for this parameter. + + + The native module handle as returned by LoadLibrary -OR- IntPtr.Zero + if the loading fails for any reason. + + + + + This class represents a context from the SQLite core library that can + be passed to the sqlite3_result_*() and associated functions. + + + + + This interface represents a native handle provided by the SQLite core + library. + + + + + The native handle value. + + + + + The native context handle. + + + + + Constructs an instance of this class using the specified native + context handle. + + + The native context handle to use. + + + + + Sets the context result to NULL. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to the specified + value. + + + The value to use. This value will be + converted to the UTF-8 encoding prior to being used. + + + + + Sets the context result to the specified + value containing an error message. + + + The value containing the error message text. + This value will be converted to the UTF-8 encoding prior to being + used. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to contain the error code SQLITE_TOOBIG. + + + + + Sets the context result to contain the error code SQLITE_NOMEM. + + + + + Sets the context result to the specified array + value. + + + The array value to use. + + + + + Sets the context result to a BLOB of zeros of the specified size. + + + The number of zero bytes to use for the BLOB context result. + + + + + Sets the context result to the specified . + + + The to use. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + This class represents a value from the SQLite core library that can be + passed to the sqlite3_value_*() and associated functions. + + + + + The native value handle. + + + + + Constructs an instance of this class using the specified native + value handle. + + + The native value handle to use. + + + + + Invalidates the native value handle, thereby preventing further + access to it from this object instance. + + + + + Converts a logical array of native pointers to native sqlite3_value + structures into a managed array of + object instances. + + + The number of elements in the logical array of native sqlite3_value + structures. + + + The native pointer to the logical array of native sqlite3_value + structures to convert. + + + The managed array of object instances or + null upon failure. + + + + + Gets and returns the type affinity associated with this value. + + + The type affinity associated with this value. + + + + + Gets and returns the number of bytes associated with this value, if + it refers to a UTF-8 encoded string. + + + The number of bytes associated with this value. The returned value + may be zero. + + + + + Gets and returns the associated with this + value. + + + The associated with this value. + + + + + Gets and returns the associated with + this value. + + + The associated with this value. + + + + + Gets and returns the associated with this + value. + + + The associated with this value. + + + + + Gets and returns the associated with this + value. + + + The associated with this value. The value is + converted from the UTF-8 encoding prior to being returned. + + + + + Gets and returns the array associated with this + value. + + + The array associated with this value. + + + + + Uses the native value handle to obtain and store the managed value + for this object instance, thus saving it for later use. The type + of the managed value is determined by the type affinity of the + native value. If the type affinity is not recognized by this + method, no work is done and false is returned. + + + Non-zero if the native value was persisted successfully. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + Returns non-zero if the native SQLite value has been successfully + persisted as a managed value within this object instance (i.e. the + property may then be read successfully). + + + + + If the managed value for this object instance is available (i.e. it + has been previously persisted via the ) method, + that value is returned; otherwise, an exception is thrown. The + returned value may be null. + + + + + These are the allowed values for the operators that are part of a + constraint term in the WHERE clause of a query that uses a virtual + table. + + + + + This value represents the equality operator. + + + + + This value represents the greater than operator. + + + + + This value represents the less than or equal to operator. + + + + + This value represents the less than operator. + + + + + This value represents the greater than or equal to operator. + + + + + This value represents the MATCH operator. + + + + + This class represents the native sqlite3_index_constraint structure + from the SQLite core library. + + + + + Constructs an instance of this class using the specified native + sqlite3_index_constraint structure. + + + The native sqlite3_index_constraint structure to use. + + + + + Constructs an instance of this class using the specified field + values. + + + Column on left-hand side of constraint. + + + Constraint operator (). + + + True if this constraint is usable. + + + Used internally - + should ignore. + + + + + Column on left-hand side of constraint. + + + + + Constraint operator (). + + + + + True if this constraint is usable. + + + + + Used internally - + should ignore. + + + + + This class represents the native sqlite3_index_orderby structure from + the SQLite core library. + + + + + Constructs an instance of this class using the specified native + sqlite3_index_orderby structure. + + + The native sqlite3_index_orderby structure to use. + + + + + Constructs an instance of this class using the specified field + values. + + + Column number. + + + True for DESC. False for ASC. + + + + + Column number. + + + + + True for DESC. False for ASC. + + + + + This class represents the native sqlite3_index_constraint_usage + structure from the SQLite core library. + + + + + Constructs an instance of this class using the specified native + sqlite3_index_constraint_usage structure. + + + The native sqlite3_index_constraint_usage structure to use. + + + + + Constructs an instance of this class using the specified field + values. + + + If greater than 0, constraint is part of argv to xFilter. + + + Do not code a test for this constraint. + + + + + If greater than 0, constraint is part of argv to xFilter. + + + + + Do not code a test for this constraint. + + + + + This class represents the various inputs provided by the SQLite core + library to the method. + + + + + Constructs an instance of this class. + + + The number of instances to + pre-allocate space for. + + + The number of instances to + pre-allocate space for. + + + + + An array of object instances, + each containing information supplied by the SQLite core library. + + + + + An array of object instances, + each containing information supplied by the SQLite core library. + + + + + This class represents the various outputs provided to the SQLite core + library by the method. + + + + + Constructs an instance of this class. + + + The number of instances + to pre-allocate space for. + + + + + Determines if the native estimatedRows field can be used, based on + the available version of the SQLite core library. + + + Non-zero if the property is supported + by the SQLite core library. + + + + + An array of object + instances, each containing information to be supplied to the SQLite + core library. + + + + + Number used to help identify the selected index. This value will + later be provided to the + method. + + + + + String used to help identify the selected index. This value will + later be provided to the + method. + + + + + Non-zero if the index string must be freed by the SQLite core + library. + + + + + True if output is already ordered. + + + + + Estimated cost of using this index. Using a null value here + indicates that a default estimated cost value should be used. + + + + + Estimated number of rows returned. Using a null value here + indicates that a default estimated rows value should be used. + + + + + This class represents the various inputs and outputs used with the + method. + + + + + Constructs an instance of this class. + + + The number of (and + ) instances to + pre-allocate space for. + + + The number of instances to + pre-allocate space for. + + + + + Converts a native pointer to a native sqlite3_index_info structure + into a new object instance. + + + The native pointer to the native sqlite3_index_info structure to + convert. + + + Upon success, this parameter will be modified to contain the newly + created object instance. + + + + + Populates the outputs of a pre-allocated native sqlite3_index_info + structure using an existing object + instance. + + + The existing object instance containing + the output data to use. + + + The native pointer to the pre-allocated native sqlite3_index_info + structure. + + + + + The object instance containing + the inputs to the + method. + + + + + The object instance containing + the outputs from the + method. + + + + + This class represents a managed virtual table implementation. It is + not sealed and should be used as the base class for any user-defined + virtual table classes implemented in managed code. + + + + + The index within the array of strings provided to the + and + methods containing the + name of the module implementing this virtual table. + + + + + The index within the array of strings provided to the + and + methods containing the + name of the database containing this virtual table. + + + + + The index within the array of strings provided to the + and + methods containing the + name of the virtual table. + + + + + Constructs an instance of this class. + + + The original array of strings provided to the + and + methods. + + + + + This method should normally be used by the + method in order to + perform index selection based on the constraints provided by the + SQLite core library. + + + The object instance containing all the + data for the inputs and outputs relating to index selection. + + + Non-zero upon success. + + + + + Attempts to record the renaming of the virtual table associated + with this object instance. + + + The new name for the virtual table. + + + Non-zero upon success. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being called + from the finalizer. + + + + + Finalizes this object instance. + + + + + The original array of strings provided to the + and + methods. + + + + + The name of the module implementing this virtual table. + + + + + The name of the database containing this virtual table. + + + + + The name of the virtual table. + + + + + The object instance containing all the + data for the inputs and outputs relating to the most recent index + selection. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + This class represents a managed virtual table cursor implementation. + It is not sealed and should be used as the base class for any + user-defined virtual table cursor classes implemented in managed code. + + + + + This value represents an invalid integer row sequence number. + + + + + The field holds the integer row sequence number for the current row + pointed to by this cursor object instance. + + + + + Constructs an instance of this class. + + + The object instance associated + with this object instance. + + + + + Constructs an instance of this class. + + + + + Attempts to persist the specified object + instances in order to make them available after the + method returns. + + + The array of object instances to be + persisted. + + + The number of object instances that were + successfully persisted. + + + + + This method should normally be used by the + method in order to + perform filtering of the result rows and/or to record the filtering + criteria provided by the SQLite core library. + + + Number used to help identify the selected index. + + + String used to help identify the selected index. + + + The values corresponding to each column in the selected index. + + + + + Determines the integer row sequence number for the current row. + + + The integer row sequence number for the current row -OR- zero if + it cannot be determined. + + + + + Adjusts the integer row sequence number so that it refers to the + next row. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being called + from the finalizer. + + + + + Finalizes this object instance. + + + + + The object instance associated + with this object instance. + + + + + Number used to help identify the selected index. This value will + be set via the method. + + + + + String used to help identify the selected index. This value will + be set via the method. + + + + + The values used to filter the rows returned via this cursor object + instance. This value will be set via the + method. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + This interface represents a virtual table implementation written in + native code. + + + + + + This method is called to create a new instance of a virtual table + in response to a CREATE VIRTUAL TABLE statement. The db parameter + is a pointer to the SQLite database connection that is executing + the CREATE VIRTUAL TABLE statement. The pAux argument is the copy + of the client data pointer that was the fourth argument to the + sqlite3_create_module() or sqlite3_create_module_v2() call that + registered the virtual table module. The argv parameter is an + array of argc pointers to null terminated strings. The first + string, argv[0], is the name of the module being invoked. The + module name is the name provided as the second argument to + sqlite3_create_module() and as the argument to the USING clause of + the CREATE VIRTUAL TABLE statement that is running. The second, + argv[1], is the name of the database in which the new virtual table + is being created. The database name is "main" for the primary + database, or "temp" for TEMP database, or the name given at the + end of the ATTACH statement for attached databases. The third + element of the array, argv[2], is the name of the new virtual + table, as specified following the TABLE keyword in the CREATE + VIRTUAL TABLE statement. If present, the fourth and subsequent + strings in the argv[] array report the arguments to the module name + in the CREATE VIRTUAL TABLE statement. + + + The job of this method is to construct the new virtual table object + (an sqlite3_vtab object) and return a pointer to it in *ppVTab. + + + As part of the task of creating a new sqlite3_vtab structure, this + method must invoke sqlite3_declare_vtab() to tell the SQLite core + about the columns and datatypes in the virtual table. The + sqlite3_declare_vtab() API has the following prototype: + + + + int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable) + + + + The first argument to sqlite3_declare_vtab() must be the same + database connection pointer as the first parameter to this method. + The second argument to sqlite3_declare_vtab() must a + zero-terminated UTF-8 string that contains a well-formed CREATE + TABLE statement that defines the columns in the virtual table and + their data types. The name of the table in this CREATE TABLE + statement is ignored, as are all constraints. Only the column names + and datatypes matter. The CREATE TABLE statement string need not to + be held in persistent memory. The string can be deallocated and/or + reused as soon as the sqlite3_declare_vtab() routine returns. + + + + The native database connection handle. + + + The original native pointer value that was provided to the + sqlite3_create_module(), sqlite3_create_module_v2() or + sqlite3_create_disposable_module() functions. + + + The number of arguments from the CREATE VIRTUAL TABLE statement. + + + The array of string arguments from the CREATE VIRTUAL TABLE + statement. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab derived structure. + + + Upon failure, this parameter must be modified to point to the error + message, with the underlying memory having been obtained from the + sqlite3_malloc() function. + + + A standard SQLite return code. + + + + + + The xConnect method is very similar to xCreate. It has the same + parameters and constructs a new sqlite3_vtab structure just like + xCreate. And it must also call sqlite3_declare_vtab() like xCreate. + + + The difference is that xConnect is called to establish a new + connection to an existing virtual table whereas xCreate is called + to create a new virtual table from scratch. + + + The xCreate and xConnect methods are only different when the + virtual table has some kind of backing store that must be + initialized the first time the virtual table is created. The + xCreate method creates and initializes the backing store. The + xConnect method just connects to an existing backing store. + + + As an example, consider a virtual table implementation that + provides read-only access to existing comma-separated-value (CSV) + files on disk. There is no backing store that needs to be created + or initialized for such a virtual table (since the CSV files + already exist on disk) so the xCreate and xConnect methods will be + identical for that module. + + + Another example is a virtual table that implements a full-text + index. The xCreate method must create and initialize data + structures to hold the dictionary and posting lists for that index. + The xConnect method, on the other hand, only has to locate and use + an existing dictionary and posting lists that were created by a + prior xCreate call. + + + The xConnect method must return SQLITE_OK if it is successful in + creating the new virtual table, or SQLITE_ERROR if it is not + successful. If not successful, the sqlite3_vtab structure must not + be allocated. An error message may optionally be returned in *pzErr + if unsuccessful. Space to hold the error message string must be + allocated using an SQLite memory allocation function like + sqlite3_malloc() or sqlite3_mprintf() as the SQLite core will + attempt to free the space using sqlite3_free() after the error has + been reported up to the application. + + + The xConnect method is required for every virtual table + implementation, though the xCreate and xConnect pointers of the + sqlite3_module object may point to the same function the virtual + table does not need to initialize backing store. + + + + The native database connection handle. + + + The original native pointer value that was provided to the + sqlite3_create_module(), sqlite3_create_module_v2() or + sqlite3_create_disposable_module() functions. + + + The number of arguments from the CREATE VIRTUAL TABLE statement. + + + The array of string arguments from the CREATE VIRTUAL TABLE + statement. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab derived structure. + + + Upon failure, this parameter must be modified to point to the error + message, with the underlying memory having been obtained from the + sqlite3_malloc() function. + + + A standard SQLite return code. + + + + + + SQLite uses the xBestIndex method of a virtual table module to + determine the best way to access the virtual table. The xBestIndex + method has a prototype like this: + + + int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*); + + + The SQLite core communicates with the xBestIndex method by filling + in certain fields of the sqlite3_index_info structure and passing a + pointer to that structure into xBestIndex as the second parameter. + The xBestIndex method fills out other fields of this structure + which forms the reply. The sqlite3_index_info structure looks like + this: + + + struct sqlite3_index_info { + /* Inputs */ + const int nConstraint; /* Number of entries in aConstraint */ + const struct sqlite3_index_constraint { + int iColumn; /* Column on left-hand side of + * constraint */ + unsigned char op; /* Constraint operator */ + unsigned char usable; /* True if this constraint is usable */ + int iTermOffset; /* Used internally - xBestIndex should + * ignore */ + } *const aConstraint; /* Table of WHERE clause constraints */ + const int nOrderBy; /* Number of terms in the ORDER BY + * clause */ + const struct sqlite3_index_orderby { + int iColumn; /* Column number */ + unsigned char desc; /* True for DESC. False for ASC. */ + } *const aOrderBy; /* The ORDER BY clause */ + /* Outputs */ + struct sqlite3_index_constraint_usage { + int argvIndex; /* if greater than zero, constraint is + * part of argv to xFilter */ + unsigned char omit; /* Do not code a test for this + * constraint */ + } *const aConstraintUsage; + int idxNum; /* Number used to identify the index */ + char *idxStr; /* String, possibly obtained from + * sqlite3_malloc() */ + int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if + * true */ + int orderByConsumed; /* True if output is already ordered */ + double estimatedCost; /* Estimated cost of using this index */ + }; + + + In addition, there are some defined constants: + + + #define SQLITE_INDEX_CONSTRAINT_EQ 2 + #define SQLITE_INDEX_CONSTRAINT_GT 4 + #define SQLITE_INDEX_CONSTRAINT_LE 8 + #define SQLITE_INDEX_CONSTRAINT_LT 16 + #define SQLITE_INDEX_CONSTRAINT_GE 32 + #define SQLITE_INDEX_CONSTRAINT_MATCH 64 + + + The SQLite core calls the xBestIndex method when it is compiling a + query that involves a virtual table. In other words, SQLite calls + this method when it is running sqlite3_prepare() or the equivalent. + By calling this method, the SQLite core is saying to the virtual + table that it needs to access some subset of the rows in the + virtual table and it wants to know the most efficient way to do + that access. The xBestIndex method replies with information that + the SQLite core can then use to conduct an efficient search of the + virtual table. + + + While compiling a single SQL query, the SQLite core might call + xBestIndex multiple times with different settings in + sqlite3_index_info. The SQLite core will then select the + combination that appears to give the best performance. + + + Before calling this method, the SQLite core initializes an instance + of the sqlite3_index_info structure with information about the + query that it is currently trying to process. This information + derives mainly from the WHERE clause and ORDER BY or GROUP BY + clauses of the query, but also from any ON or USING clauses if the + query is a join. The information that the SQLite core provides to + the xBestIndex method is held in the part of the structure that is + marked as "Inputs". The "Outputs" section is initialized to zero. + + + The information in the sqlite3_index_info structure is ephemeral + and may be overwritten or deallocated as soon as the xBestIndex + method returns. If the xBestIndex method needs to remember any part + of the sqlite3_index_info structure, it should make a copy. Care + must be take to store the copy in a place where it will be + deallocated, such as in the idxStr field with needToFreeIdxStr set + to 1. + + + Note that xBestIndex will always be called before xFilter, since + the idxNum and idxStr outputs from xBestIndex are required inputs + to xFilter. However, there is no guarantee that xFilter will be + called following a successful xBestIndex. + + + The xBestIndex method is required for every virtual table + implementation. + + + 2.3.1 Inputs + + + The main thing that the SQLite core is trying to communicate to the + virtual table is the constraints that are available to limit the + number of rows that need to be searched. The aConstraint[] array + contains one entry for each constraint. There will be exactly + nConstraint entries in that array. + + + Each constraint will correspond to a term in the WHERE clause or in + a USING or ON clause that is of the form + + + column OP EXPR + + + Where "column" is a column in the virtual table, OP is an operator + like "=" or "<", and EXPR is an arbitrary expression. So, for + example, if the WHERE clause contained a term like this: + + + a = 5 + + + Then one of the constraints would be on the "a" column with + operator "=" and an expression of "5". Constraints need not have a + literal representation of the WHERE clause. The query optimizer + might make transformations to the WHERE clause in order to extract + as many constraints as it can. So, for example, if the WHERE clause + contained something like this: + + + x BETWEEN 10 AND 100 AND 999>y + + + The query optimizer might translate this into three separate + constraints: + + + x >= 10 + x <= 100 + y < 999 + + + For each constraint, the aConstraint[].iColumn field indicates + which column appears on the left-hand side of the constraint. The + first column of the virtual table is column 0. The rowid of the + virtual table is column -1. The aConstraint[].op field indicates + which operator is used. The SQLITE_INDEX_CONSTRAINT_* constants map + integer constants into operator values. Columns occur in the order + they were defined by the call to sqlite3_declare_vtab() in the + xCreate or xConnect method. Hidden columns are counted when + determining the column index. + + + The aConstraint[] array contains information about all constraints + that apply to the virtual table. But some of the constraints might + not be usable because of the way tables are ordered in a join. The + xBestIndex method must therefore only consider constraints that + have an aConstraint[].usable flag which is true. + + + In addition to WHERE clause constraints, the SQLite core also tells + the xBestIndex method about the ORDER BY clause. (In an aggregate + query, the SQLite core might put in GROUP BY clause information in + place of the ORDER BY clause information, but this fact should not + make any difference to the xBestIndex method.) If all terms of the + ORDER BY clause are columns in the virtual table, then nOrderBy + will be the number of terms in the ORDER BY clause and the + aOrderBy[] array will identify the column for each term in the + order by clause and whether or not that column is ASC or DESC. + + + 2.3.2 Outputs + + + Given all of the information above, the job of the xBestIndex + method it to figure out the best way to search the virtual table. + + + The xBestIndex method fills the idxNum and idxStr fields with + information that communicates an indexing strategy to the xFilter + method. The information in idxNum and idxStr is arbitrary as far as + the SQLite core is concerned. The SQLite core just copies the + information through to the xFilter method. Any desired meaning can + be assigned to idxNum and idxStr as long as xBestIndex and xFilter + agree on what that meaning is. + + + The idxStr value may be a string obtained from an SQLite memory + allocation function such as sqlite3_mprintf(). If this is the case, + then the needToFreeIdxStr flag must be set to true so that the + SQLite core will know to call sqlite3_free() on that string when it + has finished with it, and thus avoid a memory leak. + + + If the virtual table will output rows in the order specified by the + ORDER BY clause, then the orderByConsumed flag may be set to true. + If the output is not automatically in the correct order then + orderByConsumed must be left in its default false setting. This + will indicate to the SQLite core that it will need to do a separate + sorting pass over the data after it comes out of the virtual table. + + + The estimatedCost field should be set to the estimated number of + disk access operations required to execute this query against the + virtual table. The SQLite core will often call xBestIndex multiple + times with different constraints, obtain multiple cost estimates, + then choose the query plan that gives the lowest estimate. + + + The aConstraintUsage[] array contains one element for each of the + nConstraint constraints in the inputs section of the + sqlite3_index_info structure. The aConstraintUsage[] array is used + by xBestIndex to tell the core how it is using the constraints. + + + The xBestIndex method may set aConstraintUsage[].argvIndex entries + to values greater than one. Exactly one entry should be set to 1, + another to 2, another to 3, and so forth up to as many or as few as + the xBestIndex method wants. The EXPR of the corresponding + constraints will then be passed in as the argv[] parameters to + xFilter. + + + For example, if the aConstraint[3].argvIndex is set to 1, then when + xFilter is called, the argv[0] passed to xFilter will have the EXPR + value of the aConstraint[3] constraint. + + + By default, the SQLite core double checks all constraints on each + row of the virtual table that it receives. If such a check is + redundant, the xBestFilter method can suppress that double-check by + setting aConstraintUsage[].omit. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The native pointer to the sqlite3_index_info structure. + + + A standard SQLite return code. + + + + + + This method releases a connection to a virtual table. Only the + sqlite3_vtab object is destroyed. The virtual table is not + destroyed and any backing store associated with the virtual table + persists. This method undoes the work of xConnect. + + + This method is a destructor for a connection to the virtual table. + Contrast this method with xDestroy. The xDestroy is a destructor + for the entire virtual table. + + + The xDisconnect method is required for every virtual table + implementation, though it is acceptable for the xDisconnect and + xDestroy methods to be the same function if that makes sense for + the particular virtual table. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method releases a connection to a virtual table, just like the + xDisconnect method, and it also destroys the underlying table + implementation. This method undoes the work of xCreate. + + + The xDisconnect method is called whenever a database connection + that uses a virtual table is closed. The xDestroy method is only + called when a DROP TABLE statement is executed against the virtual + table. + + + The xDestroy method is required for every virtual table + implementation, though it is acceptable for the xDisconnect and + xDestroy methods to be the same function if that makes sense for + the particular virtual table. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + The xOpen method creates a new cursor used for accessing (read + and/or writing) a virtual table. A successful invocation of this + method will allocate the memory for the sqlite3_vtab_cursor (or a + subclass), initialize the new object, and make *ppCursor point to + the new object. The successful call then returns SQLITE_OK. + + + For every successful call to this method, the SQLite core will + later invoke the xClose method to destroy the allocated cursor. + + + The xOpen method need not initialize the pVtab field of the + sqlite3_vtab_cursor structure. The SQLite core will take care of + that chore automatically. + + + A virtual table implementation must be able to support an arbitrary + number of simultaneously open cursors. + + + When initially opened, the cursor is in an undefined state. The + SQLite core will invoke the xFilter method on the cursor prior to + any attempt to position or read from the cursor. + + + The xOpen method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab derived structure. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab_cursor derived structure. + + + A standard SQLite return code. + + + + + + The xClose method closes a cursor previously opened by xOpen. The + SQLite core will always call xClose once for each cursor opened + using xOpen. + + + This method must release all resources allocated by the + corresponding xOpen call. The routine will not be called again even + if it returns an error. The SQLite core will not use the + sqlite3_vtab_cursor again after it has been closed. + + + The xClose method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + A standard SQLite return code. + + + + + + This method begins a search of a virtual table. The first argument + is a cursor opened by xOpen. The next two argument define a + particular search index previously chosen by xBestIndex. The + specific meanings of idxNum and idxStr are unimportant as long as + xFilter and xBestIndex agree on what that meaning is. + + + The xBestIndex function may have requested the values of certain + expressions using the aConstraintUsage[].argvIndex values of the + sqlite3_index_info structure. Those values are passed to xFilter + using the argc and argv parameters. + + + If the virtual table contains one or more rows that match the + search criteria, then the cursor must be left point at the first + row. Subsequent calls to xEof must return false (zero). If there + are no rows match, then the cursor must be left in a state that + will cause the xEof to return true (non-zero). The SQLite engine + will use the xColumn and xRowid methods to access that row content. + The xNext method will be used to advance to the next row. + + + This method must return SQLITE_OK if successful, or an sqlite error + code if an error occurs. + + + The xFilter method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + Number used to help identify the selected index. + + + The native pointer to the UTF-8 encoded string containing the + string used to help identify the selected index. + + + The number of native pointers to sqlite3_value structures specified + in . + + + An array of native pointers to sqlite3_value structures containing + filtering criteria for the selected index. + + + A standard SQLite return code. + + + + + + The xNext method advances a virtual table cursor to the next row of + a result set initiated by xFilter. If the cursor is already + pointing at the last row when this routine is called, then the + cursor no longer points to valid data and a subsequent call to the + xEof method must return true (non-zero). If the cursor is + successfully advanced to another row of content, then subsequent + calls to xEof must return false (zero). + + + This method must return SQLITE_OK if successful, or an sqlite error + code if an error occurs. + + + The xNext method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + A standard SQLite return code. + + + + + + The xEof method must return false (zero) if the specified cursor + currently points to a valid row of data, or true (non-zero) + otherwise. This method is called by the SQL engine immediately + after each xFilter and xNext invocation. + + + The xEof method is required for every virtual table implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + Non-zero if no more rows are available; zero otherwise. + + + + + + The SQLite core invokes this method in order to find the value for + the N-th column of the current row. N is zero-based so the first + column is numbered 0. The xColumn method may return its result back + to SQLite using one of the following interface: + + + sqlite3_result_blob() + sqlite3_result_double() + sqlite3_result_int() + sqlite3_result_int64() + sqlite3_result_null() + sqlite3_result_text() + sqlite3_result_text16() + sqlite3_result_text16le() + sqlite3_result_text16be() + sqlite3_result_zeroblob() + + + If the xColumn method implementation calls none of the functions + above, then the value of the column defaults to an SQL NULL. + + + To raise an error, the xColumn method should use one of the + result_text() methods to set the error message text, then return an + appropriate error code. The xColumn method must return SQLITE_OK on + success. + + + The xColumn method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + The native pointer to the sqlite3_context structure to be used + for returning the specified column value to the SQLite core + library. + + + The zero-based index corresponding to the column containing the + value to be returned. + + + A standard SQLite return code. + + + + + + A successful invocation of this method will cause *pRowid to be + filled with the rowid of row that the virtual table cursor pCur is + currently pointing at. This method returns SQLITE_OK on success. It + returns an appropriate error code on failure. + + + The xRowid method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the current row for the specified cursor. + + + A standard SQLite return code. + + + + + + All changes to a virtual table are made using the xUpdate method. + This one method can be used to insert, delete, or update. + + + The argc parameter specifies the number of entries in the argv + array. The value of argc will be 1 for a pure delete operation or + N+2 for an insert or replace or update where N is the number of + columns in the table. In the previous sentence, N includes any + hidden columns. + + + Every argv entry will have a non-NULL value in C but may contain + the SQL value NULL. In other words, it is always true that + argv[i]!=0 for i between 0 and argc-1. However, it might be the + case that sqlite3_value_type(argv[i])==SQLITE_NULL. + + + The argv[0] parameter is the rowid of a row in the virtual table + to be deleted. If argv[0] is an SQL NULL, then no deletion occurs. + + + The argv[1] parameter is the rowid of a new row to be inserted into + the virtual table. If argv[1] is an SQL NULL, then the + implementation must choose a rowid for the newly inserted row. + Subsequent argv[] entries contain values of the columns of the + virtual table, in the order that the columns were declared. The + number of columns will match the table declaration that the + xConnect or xCreate method made using the sqlite3_declare_vtab() + call. All hidden columns are included. + + + When doing an insert without a rowid (argc>1, argv[1] is an SQL + NULL), the implementation must set *pRowid to the rowid of the + newly inserted row; this will become the value returned by the + sqlite3_last_insert_rowid() function. Setting this value in all the + other cases is a harmless no-op; the SQLite engine ignores the + *pRowid return value if argc==1 or argv[1] is not an SQL NULL. + + + Each call to xUpdate will fall into one of cases shown below. Note + that references to argv[i] mean the SQL value held within the + argv[i] object, not the argv[i] object itself. + + + argc = 1 + + + The single row with rowid equal to argv[0] is deleted. No + insert occurs. + + + argc > 1 + argv[0] = NULL + + + A new row is inserted with a rowid argv[1] and column + values in argv[2] and following. If argv[1] is an SQL NULL, + the a new unique rowid is generated automatically. + + + argc > 1 + argv[0] ? NULL + argv[0] = argv[1] + + + The row with rowid argv[0] is updated with new values in + argv[2] and following parameters. + + + argc > 1 + argv[0] ? NULL + argv[0] ? argv[1] + + + The row with rowid argv[0] is updated with rowid argv[1] + and new values in argv[2] and following parameters. This + will occur when an SQL statement updates a rowid, as in + the statement: + + + UPDATE table SET rowid=rowid+1 WHERE ...; + + + The xUpdate method must return SQLITE_OK if and only if it is + successful. If a failure occurs, the xUpdate must return an + appropriate error code. On a failure, the pVTab->zErrMsg element + may optionally be replaced with error message text stored in memory + allocated from SQLite using functions such as sqlite3_mprintf() or + sqlite3_malloc(). + + + If the xUpdate method violates some constraint of the virtual table + (including, but not limited to, attempting to store a value of the + wrong datatype, attempting to store a value that is too large or + too small, or attempting to change a read-only value) then the + xUpdate must fail with an appropriate error code. + + + There might be one or more sqlite3_vtab_cursor objects open and in + use on the virtual table instance and perhaps even on the row of + the virtual table when the xUpdate method is invoked. The + implementation of xUpdate must be prepared for attempts to delete + or modify rows of the table out from other existing cursors. If the + virtual table cannot accommodate such changes, the xUpdate method + must return an error code. + + + The xUpdate method is optional. If the xUpdate pointer in the + sqlite3_module for a virtual table is a NULL pointer, then the + virtual table is read-only. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The number of new or modified column values contained in + . + + + The array of native pointers to sqlite3_value structures containing + the new or modified column values, if any. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the row that was inserted, if any. + + + A standard SQLite return code. + + + + + + This method begins a transaction on a virtual table. This is method + is optional. The xBegin pointer of sqlite3_module may be NULL. + + + This method is always followed by one call to either the xCommit or + xRollback method. Virtual table transactions do not nest, so the + xBegin method will not be invoked more than once on a single + virtual table without an intervening call to either xCommit or + xRollback. Multiple calls to other methods can and likely will + occur in between the xBegin and the corresponding xCommit or + xRollback. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method signals the start of a two-phase commit on a virtual + table. This is method is optional. The xSync pointer of + sqlite3_module may be NULL. + + + This method is only invoked after call to the xBegin method and + prior to an xCommit or xRollback. In order to implement two-phase + commit, the xSync method on all virtual tables is invoked prior to + invoking the xCommit method on any virtual table. If any of the + xSync methods fail, the entire transaction is rolled back. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method causes a virtual table transaction to commit. This is + method is optional. The xCommit pointer of sqlite3_module may be + NULL. + + + A call to this method always follows a prior call to xBegin and + xSync. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method causes a virtual table transaction to rollback. This is + method is optional. The xRollback pointer of sqlite3_module may be + NULL. + + + A call to this method always follows a prior call to xBegin. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method provides notification that the virtual table + implementation that the virtual table will be given a new name. If + this method returns SQLITE_OK then SQLite renames the table. If + this method returns an error code then the renaming is prevented. + + + The xRename method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The number of arguments to the function being sought. + + + The name of the function being sought. + + + Upon success, this parameter must be modified to contain the + delegate responsible for implementing the specified function. + + + Upon success, this parameter must be modified to contain the + native user-data pointer associated with + . + + + Non-zero if the specified function was found; zero otherwise. + + + + + + This method provides notification that the virtual table + implementation that the virtual table will be given a new name. If + this method returns SQLITE_OK then SQLite renames the table. If + this method returns an error code then the renaming is prevented. + + + The xRename method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The native pointer to the UTF-8 encoded string containing the new + name for the virtual table. + + + A standard SQLite return code. + + + + + + These methods provide the virtual table implementation an + opportunity to implement nested transactions. They are always + optional and will only be called in SQLite version 3.7.7 and later. + + + When xSavepoint(X,N) is invoked, that is a signal to the virtual + table X that it should save its current state as savepoint N. A + subsequent call to xRollbackTo(X,R) means that the state of the + virtual table should return to what it was when xSavepoint(X,R) was + last called. The call to xRollbackTo(X,R) will invalidate all + savepoints with N>R; none of the invalided savepoints will be + rolled back or released without first being reinitialized by a call + to xSavepoint(). A call to xRelease(X,M) invalidates all savepoints + where N>=M. + + + None of the xSavepoint(), xRelease(), or xRollbackTo() methods will + ever be called except in between calls to xBegin() and either + xCommit() or xRollback(). + + + + The native pointer to the sqlite3_vtab derived structure. + + + This is an integer identifier under which the the current state of + the virtual table should be saved. + + + A standard SQLite return code. + + + + + + These methods provide the virtual table implementation an + opportunity to implement nested transactions. They are always + optional and will only be called in SQLite version 3.7.7 and later. + + + When xSavepoint(X,N) is invoked, that is a signal to the virtual + table X that it should save its current state as savepoint N. A + subsequent call to xRollbackTo(X,R) means that the state of the + virtual table should return to what it was when xSavepoint(X,R) was + last called. The call to xRollbackTo(X,R) will invalidate all + savepoints with N>R; none of the invalided savepoints will be + rolled back or released without first being reinitialized by a call + to xSavepoint(). A call to xRelease(X,M) invalidates all savepoints + where N>=M. + + + None of the xSavepoint(), xRelease(), or xRollbackTo() methods will + ever be called except in between calls to xBegin() and either + xCommit() or xRollback(). + + + + The native pointer to the sqlite3_vtab derived structure. + + + This is an integer used to indicate that any saved states with an + identifier greater than or equal to this should be deleted by the + virtual table. + + + A standard SQLite return code. + + + + + + These methods provide the virtual table implementation an + opportunity to implement nested transactions. They are always + optional and will only be called in SQLite version 3.7.7 and later. + + + When xSavepoint(X,N) is invoked, that is a signal to the virtual + table X that it should save its current state as savepoint N. A + subsequent call to xRollbackTo(X,R) means that the state of the + virtual table should return to what it was when xSavepoint(X,R) was + last called. The call to xRollbackTo(X,R) will invalidate all + savepoints with N>R; none of the invalided savepoints will be + rolled back or released without first being reinitialized by a call + to xSavepoint(). A call to xRelease(X,M) invalidates all savepoints + where N>=M. + + + None of the xSavepoint(), xRelease(), or xRollbackTo() methods will + ever be called except in between calls to xBegin() and either + xCommit() or xRollback(). + + + + The native pointer to the sqlite3_vtab derived structure. + + + This is an integer identifier used to specify a specific saved + state for the virtual table for it to restore itself back to, which + should also have the effect of deleting all saved states with an + integer identifier greater than this one. + + + A standard SQLite return code. + + + + + This interface represents a virtual table implementation written in + managed code. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The object instance containing all the + data for the inputs and outputs relating to index selection. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + Upon success, this parameter must be modified to contain the + object instance associated + with the newly opened virtual table cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Number used to help identify the selected index. + + + String used to help identify the selected index. + + + The values corresponding to each column in the selected index. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Non-zero if no more rows are available; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to be used for + returning the specified column value to the SQLite core library. + + + The zero-based index corresponding to the column containing the + value to be returned. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the current row for the specified cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The array of object instances containing + the new or modified column values, if any. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the row that was inserted, if any. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The number of arguments to the function being sought. + + + The name of the function being sought. + + + Upon success, this parameter must be modified to contain the + object instance responsible for + implementing the specified function. + + + Upon success, this parameter must be modified to contain the + native user-data pointer associated with + . + + + Non-zero if the specified function was found; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The new name for the virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier under which the the current state of + the virtual table should be saved. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer used to indicate that any saved states with an + identifier greater than or equal to this should be deleted by the + virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier used to specify a specific saved + state for the virtual table for it to restore itself back to, which + should also have the effect of deleting all saved states with an + integer identifier greater than this one. + + + A standard SQLite return code. + + + + + Returns non-zero if the schema for the virtual table has been + declared. + + + + + Returns the name of the module as it was registered with the SQLite + core library. + + + + + This class contains static methods that are used to allocate, + manipulate, and free native memory provided by the SQLite core library. + + + + + Allocates at least the specified number of bytes of native memory + via the SQLite core library sqlite3_malloc() function and returns + the resulting native pointer. + + + The number of bytes to allocate. + + + The native pointer that points to a block of memory of at least the + specified size -OR- if the memory could + not be allocated. + + + + + Gets and returns the actual size of the specified memory block that + was previously obtained from the method. + + + The native pointer to the memory block previously obtained from the + method. + + + The actual size, in bytes, of the memory block specified via the + native pointer. + + + + + Frees a memory block previously obtained from the + method. + + + The native pointer to the memory block previously obtained from the + method. + + + + + This class contains static methods that are used to deal with native + UTF-8 string pointers to be used with the SQLite core library. + + + + + This is the maximum possible length for the native UTF-8 encoded + strings used with the SQLite core library. + + + + + This is the object instance used to handle + conversions from/to UTF-8. + + + + + Converts the specified managed string into the UTF-8 encoding and + returns the array of bytes containing its representation in that + encoding. + + + The managed string to convert. + + + The array of bytes containing the representation of the managed + string in the UTF-8 encoding or null upon failure. + + + + + Converts the specified array of bytes representing a string in the + UTF-8 encoding and returns a managed string. + + + The array of bytes to convert. + + + The managed string or null upon failure. + + + + + Probes a native pointer to a string in the UTF-8 encoding for its + terminating NUL character, within the specified length limit. + + + The native NUL-terminated string pointer. + + + The maximum length of the native string, in bytes. + + + The length of the native string, in bytes -OR- zero if the length + could not be determined. + + + + + Converts the specified native NUL-terminated UTF-8 string pointer + into a managed string. + + + The native NUL-terminated UTF-8 string pointer. + + + The managed string or null upon failure. + + + + + Converts the specified native UTF-8 string pointer of the specified + length into a managed string. + + + The native UTF-8 string pointer. + + + The length of the native string, in bytes. + + + The managed string or null upon failure. + + + + + Converts the specified managed string into a native NUL-terminated + UTF-8 string pointer using memory obtained from the SQLite core + library. + + + The managed string to convert. + + + The native NUL-terminated UTF-8 string pointer or + upon failure. + + + + + Converts a logical array of native NUL-terminated UTF-8 string + pointers into an array of managed strings. + + + The number of elements in the logical array of native + NUL-terminated UTF-8 string pointers. + + + The native pointer to the logical array of native NUL-terminated + UTF-8 string pointers to convert. + + + The array of managed strings or null upon failure. + + + + + Converts an array of managed strings into an array of native + NUL-terminated UTF-8 string pointers. + + + The array of managed strings to convert. + + + The array of native NUL-terminated UTF-8 string pointers or null + upon failure. + + + + + This class contains static methods that are used to deal with native + pointers to memory blocks that logically contain arrays of bytes to be + used with the SQLite core library. + + + + + Converts a native pointer to a logical array of bytes of the + specified length into a managed byte array. + + + The native pointer to the logical array of bytes to convert. + + + The length, in bytes, of the logical array of bytes to convert. + + + The managed byte array or null upon failure. + + + + + Converts a managed byte array into a native pointer to a logical + array of bytes. + + + The managed byte array to convert. + + + The native pointer to a logical byte array or null upon failure. + + + + + This class contains static methods that are used to perform several + low-level data marshalling tasks between native and managed code. + + + + + Returns a new object instance based on the + specified object instance and an integer + offset. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location that the new + object instance should point to. + + + The new object instance. + + + + + Rounds up an integer size to the next multiple of the alignment. + + + The size, in bytes, to be rounded up. + + + The required alignment for the return value. + + + The size, in bytes, rounded up to the next multiple of the + alignment. This value may end up being the same as the original + size. + + + + + Determines the offset, in bytes, of the next structure member. + + + The offset, in bytes, of the current structure member. + + + The size, in bytes, of the current structure member. + + + The alignment, in bytes, of the next structure member. + + + The offset, in bytes, of the next structure member. + + + + + Reads a value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be read is located. + + + The value at the specified memory location. + + + + + Reads a value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + to be read is located. + + + The value at the specified memory location. + + + + + Reads an value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be read is located. + + + The value at the specified memory location. + + + + + Writes an value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Writes an value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Writes a value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Writes a value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + This class represents a managed virtual table module implementation. + It is not sealed and must be used as the base class for any + user-defined virtual table module classes implemented in managed code. + + + + + The default version of the native sqlite3_module structure in use. + + + + + This field is used to store the native sqlite3_module structure + associated with this object instance. + + + + + This field is used to store the destructor delegate to be passed to + the SQLite core library via the sqlite3_create_disposable_module() + function. + + + + + This field is used to store a pointer to the native sqlite3_module + structure returned by the sqlite3_create_disposable_module + function. + + + + + This field is used to store the virtual table instances associated + with this module. The native pointer to the sqlite3_vtab derived + structure is used to key into this collection. + + + + + This field is used to store the virtual table cursor instances + associated with this module. The native pointer to the + sqlite3_vtab_cursor derived structure is used to key into this + collection. + + + + + This field is used to store the virtual table function instances + associated with this module. The case-insensitive function name + and the number of arguments (with -1 meaning "any") are used to + construct the string that is used to key into this collection. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + + + Calls the native SQLite core library in order to create a new + disposable module containing the implementation of a virtual table. + + + The native database connection pointer to use. + + + Non-zero upon success. + + + + + This method is called by the SQLite core library when the native + module associated with this object instance is being destroyed due + to its parent connection being closed. It may also be called by + the "vtshim" module if/when the sqlite3_dispose_module() function + is called. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + + + Creates and returns the native sqlite_module structure using the + configured (or default) + interface implementation. + + + The native sqlite_module structure using the configured (or + default) interface + implementation. + + + + + Creates and returns the native sqlite_module structure using the + specified interface + implementation. + + + The interface implementation to + use. + + + The native sqlite_module structure using the specified + interface implementation. + + + + + Creates a copy of the specified + object instance, + using default implementations for the contained delegates when + necessary. + + + The object + instance to copy. + + + The new object + instance. + + + + + Calls one of the virtual table initialization methods. + + + Non-zero to call the + method; otherwise, the + method will be called. + + + The native database connection handle. + + + The original native pointer value that was provided to the + sqlite3_create_module(), sqlite3_create_module_v2() or + sqlite3_create_disposable_module() functions. + + + The number of arguments from the CREATE VIRTUAL TABLE statement. + + + The array of string arguments from the CREATE VIRTUAL TABLE + statement. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab derived structure. + + + Upon failure, this parameter must be modified to point to the error + message, with the underlying memory having been obtained from the + sqlite3_malloc() function. + + + A standard SQLite return code. + + + + + Calls one of the virtual table finalization methods. + + + Non-zero to call the + method; otherwise, the + method will be + called. + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The native pointer to the sqlite3_vtab derived structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The native pointer to the sqlite3_vtab_cursor derived structure + used to get the native pointer to the sqlite3_vtab derived + structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Gets and returns the interface + implementation to be used when creating the native sqlite3_module + structure. Derived classes may override this method to supply an + alternate implementation for the + interface. + + + The interface implementation to + be used when populating the native sqlite3_module structure. If + the returned value is null, the private methods provided by the + class and relating to the + interface will be used to + create the necessary delegates. + + + + + Creates and returns the + interface implementation corresponding to the current + object instance. + + + The interface implementation + corresponding to the current object + instance. + + + + + Allocates a native sqlite3_vtab derived structure and returns a + native pointer to it. + + + A native pointer to a native sqlite3_vtab derived structure. + + + + + Zeros out the fields of a native sqlite3_vtab derived structure. + + + The native pointer to the native sqlite3_vtab derived structure to + zero. + + + + + Frees a native sqlite3_vtab structure using the provided native + pointer to it. + + + A native pointer to a native sqlite3_vtab derived structure. + + + + + Allocates a native sqlite3_vtab_cursor derived structure and + returns a native pointer to it. + + + A native pointer to a native sqlite3_vtab_cursor derived structure. + + + + + Frees a native sqlite3_vtab_cursor structure using the provided + native pointer to it. + + + A native pointer to a native sqlite3_vtab_cursor derived structure. + + + + + Reads and returns the native pointer to the sqlite3_vtab derived + structure based on the native pointer to the sqlite3_vtab_cursor + derived structure. + + + The object instance to be used. + + + The native pointer to the sqlite3_vtab_cursor derived structure + from which to read the native pointer to the sqlite3_vtab derived + structure. + + + The native pointer to the sqlite3_vtab derived structure -OR- + if it cannot be determined. + + + + + Reads and returns the native pointer to the sqlite3_vtab derived + structure based on the native pointer to the sqlite3_vtab_cursor + derived structure. + + + The native pointer to the sqlite3_vtab_cursor derived structure + from which to read the native pointer to the sqlite3_vtab derived + structure. + + + The native pointer to the sqlite3_vtab derived structure -OR- + if it cannot be determined. + + + + + Looks up and returns the object + instance based on the native pointer to the sqlite3_vtab derived + structure. + + + The native pointer to the sqlite3_vtab derived structure. + + + The object instance or null if + the corresponding one cannot be found. + + + + + Allocates and returns a native pointer to a sqlite3_vtab derived + structure and creates an association between it and the specified + object instance. + + + The object instance to be used + when creating the association. + + + The native pointer to a sqlite3_vtab derived structure or + if the method fails for any reason. + + + + + Looks up and returns the + object instance based on the native pointer to the + sqlite3_vtab_cursor derived structure. + + + The native pointer to the sqlite3_vtab derived structure. + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + The object instance or null + if the corresponding one cannot be found. + + + + + Allocates and returns a native pointer to a sqlite3_vtab_cursor + derived structure and creates an association between it and the + specified object instance. + + + The object instance to be + used when creating the association. + + + The native pointer to a sqlite3_vtab_cursor derived structure or + if the method fails for any reason. + + + + + Deterimines the key that should be used to identify and store the + object instance for the virtual table + (i.e. to be returned via the + method). + + + The number of arguments to the virtual table function. + + + The name of the virtual table function. + + + The object instance associated with + this virtual table function. + + + The string that should be used to identify and store the virtual + table function instance. This method cannot return null. If null + is returned from this method, the behavior is undefined. + + + + + Attempts to declare the schema for the virtual table using the + specified database connection. + + + The object instance to use when + declaring the schema of the virtual table. This parameter may not + be null. + + + The string containing the CREATE TABLE statement that completely + describes the schema for the virtual table. This parameter may not + be null. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + Calls the native SQLite core library in order to declare a virtual + table function in response to a call into the + + or virtual table + methods. + + + The object instance to use when + declaring the schema of the virtual table. + + + The number of arguments to the function being declared. + + + The name of the function being declared. + + + Upon success, the contents of this parameter are undefined. Upon + failure, it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The native pointer to the sqlite3_vtab derived structure. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + The error message. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the specified estimated cost. + + + The object instance to modify. + + + The estimated cost value to use. Using a null value means that the + default value provided by the SQLite core library should be used. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the default estimated cost. + + + The object instance to modify. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the specified estimated rows. + + + The object instance to modify. + + + The estimated rows value to use. Using a null value means that the + default value provided by the SQLite core library should be used. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the default estimated rows. + + + The object instance to modify. + + + Non-zero upon success. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The object instance containing all the + data for the inputs and outputs relating to index selection. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + Upon success, this parameter must be modified to contain the + object instance associated + with the newly opened virtual table cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Number used to help identify the selected index. + + + String used to help identify the selected index. + + + The values corresponding to each column in the selected index. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Non-zero if no more rows are available; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to be used for + returning the specified column value to the SQLite core library. + + + The zero-based index corresponding to the column containing the + value to be returned. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the current row for the specified cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The array of object instances containing + the new or modified column values, if any. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the row that was inserted, if any. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The number of arguments to the function being sought. + + + The name of the function being sought. + + + Upon success, this parameter must be modified to contain the + object instance responsible for + implementing the specified function. + + + Upon success, this parameter must be modified to contain the + native user-data pointer associated with + . + + + Non-zero if the specified function was found; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The new name for the virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier under which the the current state of + the virtual table should be saved. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer used to indicate that any saved states with an + identifier greater than or equal to this should be deleted by the + virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier used to specify a specific saved + state for the virtual table for it to restore itself back to, which + should also have the effect of deleting all saved states with an + integer identifier greater than this one. + + + A standard SQLite return code. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being + called from the finalizer. + + + + + Finalizes this object instance. + + + + + Returns or sets a boolean value indicating whether virtual table + errors should be logged using the class. + + + + + Returns or sets a boolean value indicating whether exceptions + caught in the + method, + method, and the + method should be logged using the + class. + + + + + Returns or sets a boolean value indicating whether virtual table + errors should be logged using the class. + + + + + Returns or sets a boolean value indicating whether exceptions + caught in the + method, + method, and the + method should be logged using the + class. + + + + + Returns non-zero if the schema for the virtual table has been + declared. + + + + + Returns the name of the module as it was registered with the SQLite + core library. + + + + + This class implements the + interface by forwarding those method calls to the + object instance it contains. If the + contained object instance is null, all + the methods simply generate an + error. + + + + + This is the value that is always used for the "logErrors" + parameter to the various static error handling methods provided + by the class. + + + + + This is the error message text used when the contained + object instance is not available + for any reason. + + + + + The object instance used to provide + an implementation of the + interface. + + + + + Constructs an instance of this class. + + + The object instance used to provide + an implementation of the + interface. + + + + + Sets the table error message to one that indicates the native + module implementation is not available. + + + The native pointer to the sqlite3_vtab derived structure. + + + The value of . + + + + + Sets the table error message to one that indicates the native + module implementation is not available. + + + The native pointer to the sqlite3_vtab_cursor derived + structure. + + + The value of . + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being + called from the finalizer. + + + + + Finalizes this object instance. + + + + + This class represents a virtual table cursor to be used with the + class. It is not sealed and may + be used as the base class for any user-defined virtual table cursor + class that wraps an object instance. + + + + + The instance provided when this cursor + was created. + + + + + This value will be non-zero if false has been returned from the + method. + + + + + Constructs an instance of this class. + + + The object instance associated + with this object instance. + + + The instance to expose as a virtual + table cursor. + + + + + Advances to the next row of the virtual table cursor using the + method of the + object instance. + + + Non-zero if the current row is valid; zero otherwise. If zero is + returned, no further rows are available. + + + + + Resets the virtual table cursor position, also invalidating the + current row, using the method of + the object instance. + + + + + Closes the virtual table cursor. This method must not throw any + exceptions. + + + + + Throws an if the virtual + table cursor has been closed. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + Returns the value for the current row of the virtual table cursor + using the property of the + object instance. + + + + + Returns non-zero if the end of the virtual table cursor has been + seen (i.e. no more rows are available, including the current one). + + + + + Returns non-zero if the virtual table cursor is open. + + + + + This class implements a virtual table module that exposes an + object instance as a read-only virtual + table. It is not sealed and may be used as the base class for any + user-defined virtual table class that wraps an + object instance. The following short + example shows it being used to treat an array of strings as a table + data source: + + public static class Sample + { + public static void Main() + { + using (SQLiteConnection connection = new SQLiteConnection( + "Data Source=:memory:;")) + { + connection.Open(); + + connection.CreateModule(new SQLiteModuleEnumerable( + "sampleModule", new string[] { "one", "two", "three" })); + + using (SQLiteCommand command = connection.CreateCommand()) + { + command.CommandText = + "CREATE VIRTUAL TABLE t1 USING sampleModule;"; + + command.ExecuteNonQuery(); + } + + using (SQLiteCommand command = connection.CreateCommand()) + { + command.CommandText = "SELECT * FROM t1;"; + + using (SQLiteDataReader dataReader = command.ExecuteReader()) + { + while (dataReader.Read()) + Console.WriteLine(dataReader[0].ToString()); + } + } + + connection.Close(); + } + } + } + + + + + + This class implements a virtual table module that does nothing by + providing "empty" implementations for all of the + interface methods. The result + codes returned by these "empty" method implementations may be + controlled on a per-method basis by using and/or overriding the + , + , + , + , and + methods from within derived classes. + + + + + This field is used to store the + values to return, on a per-method basis, for all methods that are + part of the interface. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + + + Determines the default value to be + returned by methods of the + interface that lack an overridden implementation in all classes + derived from the class. + + + The value that should be returned + by all interface methods unless + a more specific result code has been set for that interface method. + + + + + Converts a value into a boolean + return value for use with the + method. + + + The value to convert. + + + The value. + + + + + Converts a value into a boolean + return value for use with the + method. + + + The value to convert. + + + The value. + + + + + Determines the value that should be + returned by the specified + interface method if it lack an overridden implementation. If no + specific value is available (or set) + for the specified method, the value + returned by the method will be + returned instead. + + + The name of the method. Currently, this method must be part of + the interface. + + + The value that should be returned + by the interface method. + + + + + Sets the value that should be + returned by the specified + interface method if it lack an overridden implementation. + + + The name of the method. Currently, this method must be part of + the interface. + + + The value that should be returned + by the interface method. + + + Non-zero upon success. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + The CREATE TABLE statement used to declare the schema for the + virtual table. + + + + + The instance containing the backing data + for the virtual table. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + The instance to expose as a virtual + table. This parameter cannot be null. + + + + + Determines the SQL statement used to declare the virtual table. + This method should be overridden in derived classes if they require + a custom virtual table schema. + + + The SQL statement used to declare the virtual table -OR- null if it + cannot be determined. + + + + + Sets the table error message to one that indicates the virtual + table cursor is of the wrong type. + + + The object instance. + + + The value of . + + + + + Sets the table error message to one that indicates the virtual + table cursor has no current row. + + + The object instance. + + + The value of . + + + + + Determines the string to return as the column value for the object + instance value. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to return a string representation for. + + + The string representation of the specified object instance or null + upon failure. + + + + + Constructs an unique row identifier from two + values. The first value + must contain the row sequence number for the current row and the + second value must contain the hash code of the enumerator value + for the current row. + + + The integer row sequence number for the current row. + + + The hash code of the enumerator value for the current row. + + + The unique row identifier or zero upon failure. + + + + + Determines the unique row identifier for the current row. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to return a unique row identifier for. + + + The unique row identifier or zero upon failure. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + This class represents a virtual table cursor to be used with the + class. It is not sealed and may + be used as the base class for any user-defined virtual table cursor + class that wraps an object instance. + + + + + The instance provided when this + cursor was created. + + + + + Constructs an instance of this class. + + + The object instance associated + with this object instance. + + + The instance to expose as a virtual + table cursor. + + + + + Closes the virtual table cursor. This method must not throw any + exceptions. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + Returns the value for the current row of the virtual table cursor + using the property of the + object instance. + + + + + This class implements a virtual table module that exposes an + object instance as a read-only virtual + table. It is not sealed and may be used as the base class for any + user-defined virtual table class that wraps an + object instance. + + + + + The instance containing the backing + data for the virtual table. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + The instance to expose as a virtual + table. This parameter cannot be null. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + +
+
diff --git a/packages/System.Data.SQLite.1.0.82.0/lib/net40/System.Data.SQLite.Linq.dll b/packages/System.Data.SQLite.1.0.90.0/lib/net451/System.Data.SQLite.Linq.dll similarity index 75% rename from packages/System.Data.SQLite.1.0.82.0/lib/net40/System.Data.SQLite.Linq.dll rename to packages/System.Data.SQLite.1.0.90.0/lib/net451/System.Data.SQLite.Linq.dll index b94dcba24..7c1f6f66d 100644 Binary files a/packages/System.Data.SQLite.1.0.82.0/lib/net40/System.Data.SQLite.Linq.dll and b/packages/System.Data.SQLite.1.0.90.0/lib/net451/System.Data.SQLite.Linq.dll differ diff --git a/packages/System.Data.SQLite.1.0.90.0/lib/net451/System.Data.SQLite.dll b/packages/System.Data.SQLite.1.0.90.0/lib/net451/System.Data.SQLite.dll new file mode 100644 index 000000000..0e2fc0ce1 Binary files /dev/null and b/packages/System.Data.SQLite.1.0.90.0/lib/net451/System.Data.SQLite.dll differ diff --git a/packages/System.Data.SQLite.1.0.90.0/lib/net451/System.Data.SQLite.xml b/packages/System.Data.SQLite.1.0.90.0/lib/net451/System.Data.SQLite.xml new file mode 100644 index 000000000..67db7df4c --- /dev/null +++ b/packages/System.Data.SQLite.1.0.90.0/lib/net451/System.Data.SQLite.xml @@ -0,0 +1,12758 @@ + + + + System.Data.SQLite + + + + + Defines a source code identifier custom attribute for an assembly + manifest. + + + + + Constructs an instance of this attribute class using the specified + source code identifier value. + + + The source code identifier value to use. + + + + + Gets the source code identifier value. + + + + + Defines a source code time-stamp custom attribute for an assembly + manifest. + + + + + Constructs an instance of this attribute class using the specified + source code time-stamp value. + + + The source code time-stamp value to use. + + + + + Gets the source code time-stamp value. + + + + + This is the method signature for the SQLite core library logging callback + function for use with sqlite3_log() and the SQLITE_CONFIG_LOG. + + WARNING: This delegate is used more-or-less directly by native code, do + not modify its type signature. + + + The extra data associated with this message, if any. + + + The error code associated with this message. + + + The message string to be logged. + + + + + This class implements SQLiteBase completely, and is the guts of the code that interop's SQLite with .NET + + + + + This internal class provides the foundation of SQLite support. It defines all the abstract members needed to implement + a SQLite data provider, and inherits from SQLiteConvert which allows for simple translations of string to and from SQLite. + + + + + This base class provides datatype conversion services for the SQLite provider. + + + + + The format string for DateTime values when using the InvariantCulture or CurrentCulture formats. + + + + + The value for the Unix epoch (e.g. January 1, 1970 at midnight, in UTC). + + + + + The value of the OLE Automation epoch represented as a Julian day. + + + + + An array of ISO-8601 DateTime formats that we support parsing. + + + + + The internal default format for UTC DateTime values when converting + to a string. + + + + + The internal default format for local DateTime values when converting + to a string. + + + + + An UTF-8 Encoding instance, so we can convert strings to and from UTF-8 + + + + + The default DateTime format for this instance. + + + + + The default DateTimeKind for this instance. + + + + + The default DateTime format string for this instance. + + + + + Initializes the conversion class + + The default date/time format to use for this instance + The DateTimeKind to use. + The DateTime format string to use. + + + + Converts a string to a UTF-8 encoded byte array sized to include a null-terminating character. + + The string to convert to UTF-8 + A byte array containing the converted string plus an extra 0 terminating byte at the end of the array. + + + + Convert a DateTime to a UTF-8 encoded, zero-terminated byte array. + + + This function is a convenience function, which first calls ToString() on the DateTime, and then calls ToUTF8() with the + string result. + + The DateTime to convert. + The UTF-8 encoded string, including a 0 terminating byte at the end of the array. + + + + Converts a UTF-8 encoded IntPtr of the specified length into a .NET string + + The pointer to the memory where the UTF-8 string is encoded + The number of bytes to decode + A string containing the translated character(s) + + + + Converts a UTF-8 encoded IntPtr of the specified length into a .NET string + + The pointer to the memory where the UTF-8 string is encoded + The number of bytes to decode + A string containing the translated character(s) + + + + Converts a string into a DateTime, using the DateTimeFormat, DateTimeKind, + and DateTimeFormatString specified for the connection when it was opened. + + + Acceptable ISO8601 DateTime formats are: + + THHmmssK + THHmmK + HH:mm:ss.FFFFFFFK + HH:mm:ssK + HH:mmK + yyyy-MM-dd HH:mm:ss.FFFFFFFK + yyyy-MM-dd HH:mm:ssK + yyyy-MM-dd HH:mmK + yyyy-MM-ddTHH:mm:ss.FFFFFFFK + yyyy-MM-ddTHH:mmK + yyyy-MM-ddTHH:mm:ssK + yyyyMMddHHmmssK + yyyyMMddHHmmK + yyyyMMddTHHmmssFFFFFFFK + THHmmss + THHmm + HH:mm:ss.FFFFFFF + HH:mm:ss + HH:mm + yyyy-MM-dd HH:mm:ss.FFFFFFF + yyyy-MM-dd HH:mm:ss + yyyy-MM-dd HH:mm + yyyy-MM-ddTHH:mm:ss.FFFFFFF + yyyy-MM-ddTHH:mm + yyyy-MM-ddTHH:mm:ss + yyyyMMddHHmmss + yyyyMMddHHmm + yyyyMMddTHHmmssFFFFFFF + yyyy-MM-dd + yyyyMMdd + yy-MM-dd + + If the string cannot be matched to one of the above formats -OR- + the DateTimeFormatString if one was provided, an exception will + be thrown. + + The string containing either a long integer number of 100-nanosecond units since + System.DateTime.MinValue, a Julian day double, an integer number of seconds since the Unix epoch, a + culture-independent formatted date and time string, a formatted date and time string in the current + culture, or an ISO8601-format string. + A DateTime value + + + + Converts a string into a DateTime, using the specified DateTimeFormat, + DateTimeKind and DateTimeFormatString. + + + Acceptable ISO8601 DateTime formats are: + + THHmmssK + THHmmK + HH:mm:ss.FFFFFFFK + HH:mm:ssK + HH:mmK + yyyy-MM-dd HH:mm:ss.FFFFFFFK + yyyy-MM-dd HH:mm:ssK + yyyy-MM-dd HH:mmK + yyyy-MM-ddTHH:mm:ss.FFFFFFFK + yyyy-MM-ddTHH:mmK + yyyy-MM-ddTHH:mm:ssK + yyyyMMddHHmmssK + yyyyMMddHHmmK + yyyyMMddTHHmmssFFFFFFFK + THHmmss + THHmm + HH:mm:ss.FFFFFFF + HH:mm:ss + HH:mm + yyyy-MM-dd HH:mm:ss.FFFFFFF + yyyy-MM-dd HH:mm:ss + yyyy-MM-dd HH:mm + yyyy-MM-ddTHH:mm:ss.FFFFFFF + yyyy-MM-ddTHH:mm + yyyy-MM-ddTHH:mm:ss + yyyyMMddHHmmss + yyyyMMddHHmm + yyyyMMddTHHmmssFFFFFFF + yyyy-MM-dd + yyyyMMdd + yy-MM-dd + + If the string cannot be matched to one of the above formats -OR- + the DateTimeFormatString if one was provided, an exception will + be thrown. + + The string containing either a long integer number of 100-nanosecond units since + System.DateTime.MinValue, a Julian day double, an integer number of seconds since the Unix epoch, a + culture-independent formatted date and time string, a formatted date and time string in the current + culture, or an ISO8601-format string. + The SQLiteDateFormats to use. + The DateTimeKind to use. + The DateTime format string to use. + A DateTime value + + + + Converts a julianday value into a DateTime + + The value to convert + A .NET DateTime + + + + Converts a julianday value into a DateTime + + The value to convert + The DateTimeKind to use. + A .NET DateTime + + + + Converts the specified number of seconds from the Unix epoch into a + value. + + + The number of whole seconds since the Unix epoch. + + + Either Utc or Local time. + + + The new value. + + + + + Converts the specified number of ticks since the epoch into a + value. + + + The number of whole ticks since the epoch. + + + Either Utc or Local time. + + + The new value. + + + + + Converts a DateTime struct to a JulianDay double + + The DateTime to convert + The JulianDay value the Datetime represents + + + + Converts a DateTime struct to the whole number of seconds since the + Unix epoch. + + The DateTime to convert + The whole number of seconds since the Unix epoch + + + + Returns the DateTime format string to use for the specified DateTimeKind. + If is not null, it will be returned verbatim. + + The DateTimeKind to use. + The DateTime format string to use. + + The DateTime format string to use for the specified DateTimeKind. + + + + + Converts a string into a DateTime, using the DateTimeFormat, DateTimeKind, + and DateTimeFormatString specified for the connection when it was opened. + + The DateTime value to convert + Either a string containing the long integer number of 100-nanosecond units since System.DateTime.MinValue, a + Julian day double, an integer number of seconds since the Unix epoch, a culture-independent formatted date and time + string, a formatted date and time string in the current culture, or an ISO8601-format date/time string. + + + + Internal function to convert a UTF-8 encoded IntPtr of the specified length to a DateTime. + + + This is a convenience function, which first calls ToString() on the IntPtr to convert it to a string, then calls + ToDateTime() on the string to return a DateTime. + + A pointer to the UTF-8 encoded string + The length in bytes of the string + The parsed DateTime value + + + + Smart method of splitting a string. Skips quoted elements, removes the quotes. + + + This split function works somewhat like the String.Split() function in that it breaks apart a string into + pieces and returns the pieces as an array. The primary differences are: + + Only one character can be provided as a separator character + Quoted text inside the string is skipped over when searching for the separator, and the quotes are removed. + + Thus, if splitting the following string looking for a comma:
+ One,Two, "Three, Four", Five
+
+ The resulting array would contain
+ [0] One
+ [1] Two
+ [2] Three, Four
+ [3] Five
+
+ Note that the leading and trailing spaces were removed from each item during the split. +
+ Source string to split apart + Separator character + A string array of the split up elements +
+ + + Splits the specified string into multiple strings based on a separator + and returns the result as an array of strings. + + + The string to split into pieces based on the separator character. If + this string is null, null will always be returned. If this string is + empty, an array of zero strings will always be returned. + + + The character used to divide the original string into sub-strings. + This character cannot be a backslash or a double-quote; otherwise, no + work will be performed and null will be returned. + + + If this parameter is non-zero, all double-quote characters will be + retained in the returned list of strings; otherwise, they will be + dropped. + + + Upon failure, this parameter will be modified to contain an appropriate + error message. + + + The new array of strings or null if the input string is null -OR- the + separator character is a backslash or a double-quote -OR- the string + contains an unbalanced backslash or double-quote character. + + + + + Convert a value to true or false. + + A string or number representing true or false + + + + + Convert a string to true or false. + + A string representing true or false + + + "yes", "no", "y", "n", "0", "1", "on", "off" as well as Boolean.FalseString and Boolean.TrueString will all be + converted to a proper boolean value. + + + + + Converts a SQLiteType to a .NET Type object + + The SQLiteType to convert + Returns a .NET Type object + + + + For a given intrinsic type, return a DbType + + The native type to convert + The corresponding (closest match) DbType + + + + Returns the ColumnSize for the given DbType + + The DbType to get the size of + + + + + Determines the type name for the given database value type. + + The database value type. + The flags associated with the parent connection object. + The type name or an empty string if it cannot be determined. + + + + Convert a DbType to a Type + + The DbType to convert from + The closest-match .NET type + + + + For a given type, return the closest-match SQLite TypeAffinity, which only understands a very limited subset of types. + + The type to evaluate + The SQLite type affinity for that type. + + + + Builds and returns a map containing the database column types + recognized by this provider. + + + A map containing the database column types recognized by this + provider. + + + + + For a given type name, return a closest-match .NET type + + The name of the type to match + The flags associated with the parent connection object. + The .NET DBType the text evaluates to. + + + + The error code used for logging exceptions caught in user-provided + code. + + + + + Sets the status of the memory usage tracking subsystem in the SQLite core library. By default, this is enabled. + If this is disabled, memory usage tracking will not be performed. This is not really a per-connection value, it is + global to the process. + + Non-zero to enable memory usage tracking, zero otherwise. + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Attempts to free as much heap memory as possible for the database connection. + + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Shutdown the SQLite engine so that it can be restarted with different config options. + We depend on auto initialization to recover. + + + + + Determines if the associated native connection handle is open. + + + Non-zero if a database connection is open. + + + + + Opens a database. + + + Implementers should call SQLiteFunction.BindFunctions() and save the array after opening a connection + to bind all attributed user-defined functions and collating sequences to the new connection. + + The filename of the database to open. SQLite automatically creates it if it doesn't exist. + The flags associated with the parent connection object + The open flags to use when creating the connection + The maximum size of the pool for the given filename + If true, the connection can be pulled from the connection pool + + + + Closes the currently-open database. + + + After the database has been closed implemeters should call SQLiteFunction.UnbindFunctions() to deallocate all interop allocated + memory associated with the user-defined functions and collating sequences tied to the closed connection. + + Non-zero if the operation is allowed to throw exceptions, zero otherwise. + + + + Sets the busy timeout on the connection. SQLiteCommand will call this before executing any command. + + The number of milliseconds to wait before returning SQLITE_BUSY + + + + Returns the text of the last error issued by SQLite + + + + + + Returns the text of the last error issued by SQLite -OR- the specified default error text if + none is available from the SQLite core library. + + + The error text to return in the event that one is not available from the SQLite core library. + + + The error text. + + + + + When pooling is enabled, force this connection to be disposed rather than returned to the pool + + + + + When pooling is enabled, returns the number of pool entries matching the current file name. + + The number of pool entries matching the current file name. + + + + Prepares a SQL statement for execution. + + The source connection preparing the command. Can be null for any caller except LINQ + The SQL command text to prepare + The previous statement in a multi-statement command, or null if no previous statement exists + The timeout to wait before aborting the prepare + The remainder of the statement that was not processed. Each call to prepare parses the + SQL up to to either the end of the text or to the first semi-colon delimiter. The remaining text is returned + here for a subsequent call to Prepare() until all the text has been processed. + Returns an initialized SQLiteStatement. + + + + Steps through a prepared statement. + + The SQLiteStatement to step through + True if a row was returned, False if not. + + + + Resets a prepared statement so it can be executed again. If the error returned is SQLITE_SCHEMA, + transparently attempt to rebuild the SQL statement and throw an error if that was not possible. + + The statement to reset + Returns -1 if the schema changed while resetting, 0 if the reset was sucessful or 6 (SQLITE_LOCKED) if the reset failed due to a lock + + + + Attempts to interrupt the query currently executing on the associated + native database connection. + + + + + This function binds a user-defined functions to the connection. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + + + + Calls the native SQLite core library in order to create a disposable + module containing the implementation of a virtual table. + + + The module object to be used when creating the native disposable module. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to cleanup the resources + associated with a module containing the implementation of a virtual table. + + + The module object previously passed to the + method. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to declare a virtual table + in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + being declared. + + + The string containing the SQL statement describing the virtual table to + be declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Calls the native SQLite core library in order to declare a virtual table + function in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + function being declared. + + + The number of arguments to the function being declared. + + + The name of the function being declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Enables or disabled extension loading by SQLite. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + + Enables or disabled extened result codes returned by SQLite + + true to enable extended result codes, false to disable. + + + + + Returns the numeric result code for the most recent failed SQLite API call + associated with the database connection. + + Result code + + + + Returns the extended numeric result code for the most recent failed SQLite API call + associated with the database connection. + + Extended result code + + + + Add a log message via the SQLite sqlite3_log interface. + + Error code to be logged with the message. + String to be logged. Unlike the SQLite sqlite3_log() + interface, this should be pre-formatted. Consider using the + String.Format() function. + + + + + Checks if the SQLite core library has been initialized in the current process. + + + Non-zero if the SQLite core library has been initialized in the current process, + zero otherwise. + + + + + Creates a new SQLite backup object based on the provided destination + database connection. The source database connection is the one + associated with this object. The source and destination database + connections cannot be the same. + + The destination database connection. + The destination database name. + The source database name. + The newly created backup object. + + + + Copies up to N pages from the source database to the destination + database associated with the specified backup object. + + The backup object to use. + + The number of pages to copy or negative to copy all remaining pages. + + + Set to true if the operation needs to be retried due to database + locking issues. + + + True if there are more pages to be copied, false otherwise. + + + + + Returns the number of pages remaining to be copied from the source + database to the destination database associated with the specified + backup object. + + The backup object to check. + The number of pages remaining to be copied. + + + + Returns the total number of pages in the source database associated + with the specified backup object. + + The backup object to check. + The total number of pages in the source database. + + + + Destroys the backup object, rolling back any backup that may be in + progess. + + The backup object to destroy. + + + + Returns the error message for the specified SQLite return code using + the internal static lookup table. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns the error message for the specified SQLite return code using + the sqlite3_errstr() function, falling back to the internal lookup + table if necessary. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns a string representing the active version of SQLite + + + + + Returns an integer representing the active version of SQLite + + + + + Returns the rowid of the most recent successful INSERT into the database from this connection. + + + + + Returns the number of changes the last executing insert/update caused. + + + + + Returns the amount of memory (in bytes) currently in use by the SQLite core library. This is not really a per-connection + value, it is global to the process. + + + + + Returns the maximum amount of memory (in bytes) used by the SQLite core library since the high-water mark was last reset. + This is not really a per-connection value, it is global to the process. + + + + + Returns non-zero if the underlying native connection handle is owned by this instance. + + + + + Returns non-zero if the given database connection is in autocommit mode. + Autocommit mode is on by default. Autocommit mode is disabled by a BEGIN + statement. Autocommit mode is re-enabled by a COMMIT or ROLLBACK. + + + + + The opaque pointer returned to us by the sqlite provider + + + + + The user-defined functions registered on this connection + + + + + The modules created using this connection. + + + + + Constructs the object used to interact with the SQLite core library + using the UTF-8 text encoding. + + + The DateTime format to be used when converting string values to a + DateTime and binding DateTime parameters. + + + The to be used when creating DateTime + values. + + + The format string to be used when parsing and formatting DateTime + values. + + + The native handle to be associated with the database connection. + + + The fully qualified file name associated with . + + + Non-zero if the newly created object instance will need to dispose + of when it is no longer needed. + + + + + This method attempts to dispose of all the derived + object instances currently associated with the native database connection. + + + + + Attempts to interrupt the query currently executing on the associated + native database connection. + + + + + This function binds a user-defined function to the connection. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + + + + Attempts to free as much heap memory as possible for the database connection. + + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Attempts to free N bytes of heap memory by deallocating non-essential memory + allocations held by the database library. Memory used to cache database pages + to improve performance is an example of non-essential memory. This is a no-op + returning zero if the SQLite core library was not compiled with the compile-time + option SQLITE_ENABLE_MEMORY_MANAGEMENT. Optionally, attempts to reset and/or + compact the Win32 native heap, if applicable. + + + The requested number of bytes to free. + + + Non-zero to attempt a heap reset. + + + Non-zero to attempt heap compaction. + + + The number of bytes actually freed. This value may be zero. + + + This value will be non-zero if the heap reset was successful. + + + The size of the largest committed free block in the heap, in bytes. + This value will be zero unless heap compaction is enabled. + + + A standard SQLite return code (i.e. zero for success and non-zero + for failure). + + + + + Shutdown the SQLite engine so that it can be restarted with different + configuration options. We depend on auto initialization to recover. + + Returns a standard SQLite result code. + + + + Shutdown the SQLite engine so that it can be restarted with different + configuration options. We depend on auto initialization to recover. + + + Non-zero to reset the database and temporary directories to their + default values, which should be null for both. This parameter has no + effect on non-Windows operating systems. + + Returns a standard SQLite result code. + + + + Determines if the associated native connection handle is open. + + + Non-zero if the associated native connection handle is open. + + + + + Calls the native SQLite core library in order to create a disposable + module containing the implementation of a virtual table. + + + The module object to be used when creating the native disposable module. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to cleanup the resources + associated with a module containing the implementation of a virtual table. + + + The module object previously passed to the + method. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to declare a virtual table + in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + being declared. + + + The string containing the SQL statement describing the virtual table to + be declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Calls the native SQLite core library in order to declare a virtual table + function in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + function being declared. + + + The number of arguments to the function being declared. + + + The name of the function being declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Enables or disabled extension loading by SQLite. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + Enables or disabled extended result codes returned by SQLite + + + Gets the last SQLite error code + + + Gets the last SQLite extended error code + + + Add a log message via the SQLite sqlite3_log interface. + + + Add a log message via the SQLite sqlite3_log interface. + + + + Allows the setting of a logging callback invoked by SQLite when a + log event occurs. Only one callback may be set. If NULL is passed, + the logging callback is unregistered. + + The callback function to invoke. + Returns a result code + + + + Creates a new SQLite backup object based on the provided destination + database connection. The source database connection is the one + associated with this object. The source and destination database + connections cannot be the same. + + The destination database connection. + The destination database name. + The source database name. + The newly created backup object. + + + + Copies up to N pages from the source database to the destination + database associated with the specified backup object. + + The backup object to use. + + The number of pages to copy, negative to copy all remaining pages. + + + Set to true if the operation needs to be retried due to database + locking issues; otherwise, set to false. + + + True if there are more pages to be copied, false otherwise. + + + + + Returns the number of pages remaining to be copied from the source + database to the destination database associated with the specified + backup object. + + The backup object to check. + The number of pages remaining to be copied. + + + + Returns the total number of pages in the source database associated + with the specified backup object. + + The backup object to check. + The total number of pages in the source database. + + + + Destroys the backup object, rolling back any backup that may be in + progess. + + The backup object to destroy. + + + + Determines if the SQLite core library has been initialized for the + current process. + + + A boolean indicating whether or not the SQLite core library has been + initialized for the current process. + + + + + Determines if the SQLite core library has been initialized for the + current process. + + + A boolean indicating whether or not the SQLite core library has been + initialized for the current process. + + + + + Helper function to retrieve a column of data from an active statement. + + The statement being step()'d through + The flags associated with the connection. + The column index to retrieve + The type of data contained in the column. If Uninitialized, this function will retrieve the datatype information. + Returns the data in the column + + + + Returns non-zero if the underlying native connection handle is owned + by this instance. + + + + + Alternate SQLite3 object, overriding many text behaviors to support UTF-16 (Unicode) + + + + + Constructs the object used to interact with the SQLite core library + using the UTF-8 text encoding. + + + The DateTime format to be used when converting string values to a + DateTime and binding DateTime parameters. + + + The to be used when creating DateTime + values. + + + The format string to be used when parsing and formatting DateTime + values. + + + The native handle to be associated with the database connection. + + + The fully qualified file name associated with . + + + Non-zero if the newly created object instance will need to dispose + of when it is no longer needed. + + + + + Overrides SQLiteConvert.ToString() to marshal UTF-16 strings instead of UTF-8 + + A pointer to a UTF-16 string + The length (IN BYTES) of the string + A .NET string + + + + Represents a single SQL backup in SQLite. + + + + + The underlying SQLite object this backup is bound to. + + + + + The actual backup handle. + + + + + The destination database for the backup. + + + + + The destination database name for the backup. + + + + + The source database for the backup. + + + + + The source database name for the backup. + + + + + The last result from the StepBackup method of the SQLite3 class. + This is used to determine if the call to the FinishBackup method of + the SQLite3 class should throw an exception when it receives a non-Ok + return code from the core SQLite library. + + + + + Initializes the backup. + + The base SQLite object. + The backup handle. + The destination database for the backup. + The destination database name for the backup. + The source database for the backup. + The source database name for the backup. + + + + Disposes and finalizes the backup. + + + + + The extra behavioral flags that can be applied to a connection. + + + + + No extra flags. + + + + + Enable logging of all SQL statements to be prepared. + + + + + Enable logging of all bound parameter types and raw values. + + + + + Enable logging of all bound parameter strongly typed values. + + + + + Enable logging of all exceptions caught from user-provided + managed code called from native code via delegates. + + + + + Enable logging of backup API errors. + + + + + Skip adding the extension functions provided by the native + interop assembly. + + + + + When binding parameter values with the + type, use the interop method that accepts an + value. + + + + + When binding parameter values, always bind them as though they were + plain text (i.e. no numeric, date/time, or other conversions should + be attempted). + + + + + When returning column values, always return them as though they were + plain text (i.e. no numeric, date/time, or other conversions should + be attempted). + + + + + Prevent this object instance from + loading extensions. + + + + + Prevent this object instance from + creating virtual table modules. + + + + + Skip binding any functions provided by other managed assemblies when + opening the connection. + + + + + Skip setting the logging related properties of the + object instance that was passed to + the method. + + + + + Enable logging of all virtual table module errors seen by the + method. + + + + + Enable logging of certain virtual table module exceptions that cannot + be easily discovered via other means. + + + + + Enable tracing of potentially important [non-fatal] error conditions + that cannot be easily reported through other means. + + + + + When binding and returning column values, always treat them as though + they were plain text (i.e. no numeric, date/time, or other conversions + should be attempted). + + + + + Enable all logging. + + + + + The default extra flags for new connections. + + + + + SQLite implementation of DbCommand. + + + + + The default connection string to be used when creating a temporary + connection to execute a command via the static + or + + methods. + + + + + The command text this command is based on + + + + + The connection the command is associated with + + + + + The version of the connection the command is associated with + + + + + Indicates whether or not a DataReader is active on the command. + + + + + The timeout for the command, kludged because SQLite doesn't support per-command timeout values + + + + + Designer support + + + + + Used by DbDataAdapter to determine updating behavior + + + + + The collection of parameters for the command + + + + + The SQL command text, broken into individual SQL statements as they are executed + + + + + Unprocessed SQL text that has not been executed + + + + + Transaction associated with this command + + + + + Constructs a new SQLiteCommand + + + Default constructor + + + + + Initializes the command with the given command text + + The SQL command text + + + + Initializes the command with the given SQL command text and attach the command to the specified + connection. + + The SQL command text + The connection to associate with the command + + + + Initializes the command and associates it with the specified connection. + + The connection to associate with the command + + + + Initializes a command with the given SQL, connection and transaction + + The SQL command text + The connection to associate with the command + The transaction the command should be associated with + + + + Disposes of the command and clears all member variables + + Whether or not the class is being explicitly or implicitly disposed + + + + This method attempts to query the flags associated with the database + connection in use. If the database connection is disposed, the default + flags will be returned. + + + The command containing the databse connection to query the flags from. + + + The connection flags value. + + + + + Clears and destroys all statements currently prepared + + + + + Builds an array of prepared statements for each complete SQL statement in the command text + + + + + Not implemented + + + + + Forwards to the local CreateParameter() function + + + + + + Create a new parameter + + + + + + This function ensures there are no active readers, that we have a valid connection, + that the connection is open, that all statements are prepared and all parameters are assigned + in preparation for allocating a data reader. + + + + + Creates a new SQLiteDataReader to execute/iterate the array of SQLite prepared statements + + The behavior the data reader should adopt + Returns a SQLiteDataReader object + + + + This method creates a new connection, executes the query using the given + execution type, closes the connection, and returns the results. If the + connection string is null, a temporary in-memory database connection will + be used. + + + The text of the command to be executed. + + + The execution type for the command. This is used to determine which method + of the command object to call, which then determines the type of results + returned, if any. + + + The connection string to the database to be opened, used, and closed. If + this parameter is null, a temporary in-memory databse will be used. + + + The SQL parameter values to be used when building the command object to be + executed, if any. + + + The results of the query -OR- null if no results were produced from the + given execution type. + + + + + This method creates a new connection, executes the query using the given + execution type and command behavior, closes the connection, and returns + the results. If the connection string is null, a temporary in-memory + database connection will be used. + + + The text of the command to be executed. + + + The execution type for the command. This is used to determine which method + of the command object to call, which then determines the type of results + returned, if any. + + + The command behavior flags for the command. + + + The connection string to the database to be opened, used, and closed. If + this parameter is null, a temporary in-memory databse will be used. + + + The SQL parameter values to be used when building the command object to be + executed, if any. + + + The results of the query -OR- null if no results were produced from the + given execution type. + + + + + Overrides the default behavior to return a SQLiteDataReader specialization class + + The flags to be associated with the reader. + A SQLiteDataReader + + + + Overrides the default behavior of DbDataReader to return a specialized SQLiteDataReader class + + A SQLiteDataReader + + + + Called by the SQLiteDataReader when the data reader is closed. + + + + + Execute the command and return the number of rows inserted/updated affected by it. + + The number of rows inserted/updated affected by it. + + + + Execute the command and return the number of rows inserted/updated affected by it. + + The flags to be associated with the reader. + The number of rows inserted/updated affected by it. + + + + Execute the command and return the first column of the first row of the resultset + (if present), or null if no resultset was returned. + + The first column of the first row of the first resultset from the query. + + + + Execute the command and return the first column of the first row of the resultset + (if present), or null if no resultset was returned. + + The flags to be associated with the reader. + The first column of the first row of the first resultset from the query. + + + + Does nothing. Commands are prepared as they are executed the first time, and kept in prepared state afterwards. + + + + + Clones a command, including all its parameters + + A new SQLiteCommand with the same commandtext, connection and parameters + + + + The SQL command text associated with the command + + + + + The amount of time to wait for the connection to become available before erroring out + + + + + The type of the command. SQLite only supports CommandType.Text + + + + + The connection associated with this command + + + + + Forwards to the local Connection property + + + + + Returns the SQLiteParameterCollection for the given command + + + + + Forwards to the local Parameters property + + + + + The transaction associated with this command. SQLite only supports one transaction per connection, so this property forwards to the + command's underlying connection. + + + + + Forwards to the local Transaction property + + + + + Sets the method the SQLiteCommandBuilder uses to determine how to update inserted or updated rows in a DataTable. + + + + + Determines if the command is visible at design time. Defaults to True. + + + + + SQLite implementation of DbCommandBuilder. + + + + + Default constructor + + + + + Initializes the command builder and associates it with the specified data adapter. + + + + + + Minimal amount of parameter processing. Primarily sets the DbType for the parameter equal to the provider type in the schema + + The parameter to use in applying custom behaviors to a row + The row to apply the parameter to + The type of statement + Whether the application of the parameter is part of a WHERE clause + + + + Returns a valid named parameter + + The name of the parameter + Error + + + + Returns a named parameter for the given ordinal + + The i of the parameter + Error + + + + Returns a placeholder character for the specified parameter i. + + The index of the parameter to provide a placeholder for + Returns a named parameter + + + + Sets the handler for receiving row updating events. Used by the DbCommandBuilder to autogenerate SQL + statements that may not have previously been generated. + + A data adapter to receive events on. + + + + Returns the automatically-generated SQLite command to delete rows from the database + + + + + + Returns the automatically-generated SQLite command to delete rows from the database + + + + + + + Returns the automatically-generated SQLite command to update rows in the database + + + + + + Returns the automatically-generated SQLite command to update rows in the database + + + + + + + Returns the automatically-generated SQLite command to insert rows into the database + + + + + + Returns the automatically-generated SQLite command to insert rows into the database + + + + + + + Places brackets around an identifier + + The identifier to quote + The bracketed identifier + + + + Removes brackets around an identifier + + The quoted (bracketed) identifier + The undecorated identifier + + + + Override helper, which can help the base command builder choose the right keys for the given query + + + + + + + Gets/sets the DataAdapter for this CommandBuilder + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Event data for connection event handlers. + + + + + The type of event being raised. + + + + + The associated with this event, if any. + + + + + The transaction associated with this event, if any. + + + + + The command associated with this event, if any. + + + + + The data reader associated with this event, if any. + + + + + The critical handle associated with this event, if any. + + + + + Command or message text associated with this event, if any. + + + + + Extra data associated with this event, if any. + + + + + Constructs the object. + + The type of event being raised. + The base associated + with this event, if any. + The transaction associated with this event, if any. + The command associated with this event, if any. + The data reader associated with this event, if any. + The critical handle associated with this event, if any. + The command or message text, if any. + The extra data, if any. + + + + Raised when an event pertaining to a connection occurs. + + The connection involved. + Extra information about the event. + + + + SQLite implentation of DbConnection. + + + The property can contain the following parameter(s), delimited with a semi-colon: + + + Parameter + Values + Required + Default + + + Data Source + + This may be a file name, the string ":memory:", or any supported URI (starting with SQLite 3.7.7). + Starting with release 1.0.86.0, in order to use more than one consecutive backslash (e.g. for a + UNC path), each of the adjoining backslash characters must be doubled (e.g. "\\Network\Share\test.db" + would become "\\\\Network\Share\test.db"). + + Y + + + + Version + 3 + N + 3 + + + UseUTF16Encoding + True
False
+ N + False +
+ + DateTimeFormat + + Ticks - Use the value of DateTime.Ticks.
+ ISO8601 - Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC + DateTime values and "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values).
+ JulianDay - The interval of time in days and fractions of a day since January 1, 4713 BC.
+ UnixEpoch - The whole number of seconds since the Unix epoch (January 1, 1970).
+ InvariantCulture - Any culture-independent string value that the .NET Framework can interpret as a valid DateTime.
+ CurrentCulture - Any string value that the .NET Framework can interpret as a valid DateTime using the current culture.
+ N + ISO8601 +
+ + DateTimeKind + Unspecified - Not specified as either UTC or local time.
Utc - The time represented is UTC.
Local - The time represented is local time.
+ N + Unspecified +
+ + DateTimeFormatString + The exact DateTime format string to use for all formatting and parsing of all DateTime + values for this connection. + N + null + + + BaseSchemaName + Some base data classes in the framework (e.g. those that build SQL queries dynamically) + assume that an ADO.NET provider cannot support an alternate catalog (i.e. database) without supporting + alternate schemas as well; however, SQLite does not fit into this model. Therefore, this value is used + as a placeholder and removed prior to preparing any SQL statements that may contain it. + N + sqlite_default_schema + + + BinaryGUID + True - Store GUID columns in binary form
False - Store GUID columns as text
+ N + True +
+ + Cache Size + {size in bytes} + N + 2000 + + + Synchronous + Normal - Normal file flushing behavior
Full - Full flushing after all writes
Off - Underlying OS flushes I/O's
+ N + Full +
+ + Page Size + {size in bytes} + N + 1024 + + + Password + {password} - Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + HexPassword + {hexPassword} - Must contain a sequence of zero or more hexadecimal encoded byte values without a leading "0x" prefix. Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + Enlist + Y - Automatically enlist in distributed transactions
N - No automatic enlistment
+ N + Y +
+ + Pooling + + True - Use connection pooling.
+ False - Do not use connection pooling.

+ WARNING: When using the default connection pool implementation, + setting this property to True should be avoided by applications that make + use of COM (either directly or indirectly) due to possible deadlocks that + can occur during the finalization of some COM objects. +
+ N + False +
+ + FailIfMissing + True - Don't create the database if it does not exist, throw an error instead
False - Automatically create the database if it does not exist
+ N + False +
+ + Max Page Count + {size in pages} - Limits the maximum number of pages (limits the size) of the database + N + 0 + + + Legacy Format + True - Use the more compatible legacy 3.x database format
False - Use the newer 3.3x database format which compresses numbers more effectively
+ N + False +
+ + Default Timeout + {time in seconds}
The default command timeout
+ N + 30 +
+ + Journal Mode + Delete - Delete the journal file after a commit
Persist - Zero out and leave the journal file on disk after a commit
Off - Disable the rollback journal entirely
+ N + Delete +
+ + Read Only + True - Open the database for read only access
False - Open the database for normal read/write access
+ N + False +
+ + Max Pool Size + The maximum number of connections for the given connection string that can be in the connection pool + N + 100 + + + Default IsolationLevel + The default transaciton isolation level + N + Serializable + + + Foreign Keys + Enable foreign key constraints + N + False + + + Flags + Extra behavioral flags for the connection. See the enumeration for possible values. + N + Default + + + SetDefaults + + True - Apply the default connection settings to the opened database.
+ False - Skip applying the default connection settings to the opened database. +
+ N + True +
+ + ToFullPath + + True - Attempt to expand the data source file name to a fully qualified path before opening.
+ False - Skip attempting to expand the data source file name to a fully qualified path before opening. +
+ N + True +
+
+
+
+ + + The default "stub" (i.e. placeholder) base schema name to use when + returning column schema information. Used as the initial value of + the BaseSchemaName property. This should start with "sqlite_*" + because those names are reserved for use by SQLite (i.e. they cannot + be confused with the names of user objects). + + + + + The managed assembly containing this type. + + + + + Object used to synchronize access to the static instance data + for this class. + + + + + State of the current connection + + + + + The connection string + + + + + Nesting level of the transactions open on the connection + + + + + If set, then the connection is currently being disposed. + + + + + The default isolation level for new transactions + + + + + Whether or not the connection is enlisted in a distrubuted transaction + + + + + The base SQLite object to interop with + + + + + The database filename minus path and extension + + + + + Temporary password storage, emptied after the database has been opened + + + + + The "stub" (i.e. placeholder) base schema name to use when returning + column schema information. + + + + + The extra behavioral flags for this connection, if any. See the + enumeration for a list of + possible values. + + + + + Default command timeout + + + + + Non-zero if the built-in (i.e. framework provided) connection string + parser should be used when opening the connection. + + + + + Constructs a new SQLiteConnection object + + + Default constructor + + + + + Initializes the connection with the specified connection string. + + The connection string to use. + + + + Initializes the connection with a pre-existing native connection handle. + This constructor overload is intended to be used only by the private + method. + + + The native connection handle to use. + + + The file name corresponding to the native connection handle. + + + Non-zero if this instance owns the native connection handle and + should dispose of it when it is no longer needed. + + + + + Initializes the connection with the specified connection string. + + + The connection string to use. + + + Non-zero to parse the connection string using the built-in (i.e. + framework provided) parser when opening the connection. + + + + + Clones the settings and connection string from an existing connection. If the existing connection is already open, this + function will open its own connection, enumerate any attached databases of the original connection, and automatically + attach to them. + + The connection to copy the settings from. + + + + Raises the event. + + + The connection associated with this event. If this parameter is not + null and the specified connection cannot raise events, then the + registered event handlers will not be invoked. + + + A that contains the event data. + + + + + Creates and returns a new managed database connection handle. This + method is intended to be used by implementations of the + interface only. In theory, it + could be used by other classes; however, that usage is not supported. + + + This must be a native database connection handle returned by the + SQLite core library and it must remain valid and open during the + entire duration of the calling method. + + + The new managed database connection handle or null if it cannot be + created. + + + + + Backs up the database, using the specified database connection as the + destination. + + The destination database connection. + The destination database name. + The source database name. + + The number of pages to copy or negative to copy all remaining pages. + + + The method to invoke between each step of the backup process. This + parameter may be null (i.e. no callbacks will be performed). + + + The number of milliseconds to sleep after encountering a locking error + during the backup process. A value less than zero means that no sleep + should be performed. + + + + + Attempts to bind the specified object + instance to this connection. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + + + Creates a clone of the connection. All attached databases and user-defined functions are cloned. If the existing connection is open, the cloned connection + will also be opened. + + + + + + Creates a database file. This just creates a zero-byte file which SQLite + will turn into a database when the file is opened properly. + + The file to create + + + + Raises the state change event when the state of the connection changes + + The new connection state. If this is different + from the previous state, the event is + raised. + The event data created for the raised event, if + it was actually raised. + + + + Determines and returns the fallback default isolation level when one cannot be + obtained from an existing connection instance. + + + The fallback default isolation level for this connection instance -OR- + if it cannot be determined. + + + + + Determines and returns the default isolation level for this connection instance. + + + The default isolation level for this connection instance -OR- + if it cannot be determined. + + + + + OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. + + This parameter is ignored. + When TRUE, SQLite defers obtaining a write lock until a write operation is requested. + When FALSE, a writelock is obtained immediately. The default is TRUE, but in a multi-threaded multi-writer + environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. + Returns a SQLiteTransaction object. + + + + OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. + + When TRUE, SQLite defers obtaining a write lock until a write operation is requested. + When FALSE, a writelock is obtained immediately. The default is false, but in a multi-threaded multi-writer + environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. + Returns a SQLiteTransaction object. + + + + Creates a new if one isn't already active on the connection. + + Supported isolation levels are Serializable, ReadCommitted and Unspecified. + + Unspecified will use the default isolation level specified in the connection string. If no isolation level is specified in the + connection string, Serializable is used. + Serializable transactions are the default. In this mode, the engine gets an immediate lock on the database, and no other threads + may begin a transaction. Other threads may read from the database, but not write. + With a ReadCommitted isolation level, locks are deferred and elevated as needed. It is possible for multiple threads to start + a transaction in ReadCommitted mode, but if a thread attempts to commit a transaction while another thread + has a ReadCommitted lock, it may timeout or cause a deadlock on both threads until both threads' CommandTimeout's are reached. + + Returns a SQLiteTransaction object. + + + + Creates a new if one isn't already + active on the connection. + + Returns the new transaction object. + + + + Forwards to the local function + + Supported isolation levels are Unspecified, Serializable, and ReadCommitted + + + + + This method is not implemented; however, the + event will still be raised. + + + + + + When the database connection is closed, all commands linked to this connection are automatically reset. + + + + + Clears the connection pool associated with the connection. Any other active connections using the same database file + will be discarded instead of returned to the pool when they are closed. + + + + + + Clears all connection pools. Any active connections will be discarded instead of sent to the pool when they are closed. + + + + + Create a new and associate it with this connection. + + Returns a new command object already assigned to this connection. + + + + Forwards to the local function. + + + + + + Parses the connection string into component parts using the custom + connection string parser. + + The connection string to parse + An array of key-value pairs representing each parameter of the connection string + + + + Parses a connection string using the built-in (i.e. framework provided) + connection string parser class and returns the key/value pairs. An + exception may be thrown if the connection string is invalid or cannot be + parsed. When compiled for the .NET Compact Framework, the custom + connection string parser is always used instead because the framework + provided one is unavailable there. + + + The connection string to parse. + + + Non-zero to throw an exception if any connection string values are not of + the type. + + The list of key/value pairs. + + + + Manual distributed transaction enlistment support + + The distributed transaction to enlist in + + + + Looks for a key in the array of key/values of the parameter string. If not found, return the specified default value + + The list to look in + The key to find + The default value to return if the key is not found + The value corresponding to the specified key, or the default value if not found. + + + + Attempts to convert the string value to an enumerated value of the specified type. + + The enumerated type to convert the string value to. + The string value to be converted. + Non-zero to make the conversion case-insensitive. + The enumerated value upon success or null upon error. + + + + Attempts to convert an input string into a byte value. + + + The string value to be converted. + + + The number styles to use for the conversion. + + + Upon sucess, this will contain the parsed byte value. + Upon failure, the value of this parameter is undefined. + + + Non-zero upon success; zero on failure. + + + + + Enables or disabled extension loading. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named dynamic link library file. + + + The name of the dynamic link library file containing the extension. + + + + + Loads a SQLite extension library from the named dynamic link library file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + + Creates a disposable module containing the implementation of a virtual + table. + + + The module object to be used when creating the disposable module. + + + + + Parses a string containing a sequence of zero or more hexadecimal + encoded byte values and returns the resulting byte array. The + "0x" prefix is not allowed on the input string. + + + The input string containing zero or more hexadecimal encoded byte + values. + + + A byte array containing the parsed byte values or null if an error + was encountered. + + + + + Creates and returns a string containing the hexadecimal encoded byte + values from the input array. + + + The input array of bytes. + + + The resulting string or null upon failure. + + + + + Parses a string containing a sequence of zero or more hexadecimal + encoded byte values and returns the resulting byte array. The + "0x" prefix is not allowed on the input string. + + + The input string containing zero or more hexadecimal encoded byte + values. + + + Upon failure, this will contain an appropriate error message. + + + A byte array containing the parsed byte values or null if an error + was encountered. + + + + + Opens the connection using the parameters found in the . + + + + + Opens the connection using the parameters found in the and then returns it. + + The current connection object. + + + + This method causes any pending database operation to abort and return at + its earliest opportunity. This routine is typically called in response + to a user action such as pressing "Cancel" or Ctrl-C where the user wants + a long query operation to halt immediately. It is safe to call this + routine from any thread. However, it is not safe to call this routine + with a database connection that is closed or might close before this method + returns. + + + + + Returns various global memory statistics for the SQLite core library via + a dictionary of key/value pairs. Currently, only the "MemoryUsed" and + "MemoryHighwater" keys are returned and they have values that correspond + to the values that could be obtained via the + and connection properties. + + + This dictionary will be populated with the global memory statistics. It + will be created if necessary. + + + + + Attempts to free as much heap memory as possible for this database connection. + + + + + Attempts to free N bytes of heap memory by deallocating non-essential memory + allocations held by the database library. Memory used to cache database pages + to improve performance is an example of non-essential memory. This is a no-op + returning zero if the SQLite core library was not compiled with the compile-time + option SQLITE_ENABLE_MEMORY_MANAGEMENT. Optionally, attempts to reset and/or + compact the Win32 native heap, if applicable. + + + The requested number of bytes to free. + + + Non-zero to attempt a heap reset. + + + Non-zero to attempt heap compaction. + + + The number of bytes actually freed. This value may be zero. + + + This value will be non-zero if the heap reset was successful. + + + The size of the largest committed free block in the heap, in bytes. + This value will be zero unless heap compaction is enabled. + + + A standard SQLite return code (i.e. zero for success and non-zero + for failure). + + + + + Sets the status of the memory usage tracking subsystem in the SQLite core library. By default, this is enabled. + If this is disabled, memory usage tracking will not be performed. This is not really a per-connection value, it is + global to the process. + + Non-zero to enable memory usage tracking, zero otherwise. + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Passes a shutdown request to the SQLite core library. Does not throw + an exception if the shutdown request fails. + + + A standard SQLite return code (i.e. zero for success and non-zero for + failure). + + + + + Passes a shutdown request to the SQLite core library. Throws an + exception if the shutdown request fails and the no-throw parameter + is non-zero. + + + Non-zero to reset the database and temporary directories to their + default values, which should be null for both. + + + When non-zero, throw an exception if the shutdown request fails. + + + + Enables or disabled extended result codes returned by SQLite + + + Enables or disabled extended result codes returned by SQLite + + + Enables or disabled extended result codes returned by SQLite + + + Add a log message via the SQLite sqlite3_log interface. + + + Add a log message via the SQLite sqlite3_log interface. + + + + Change the password (or assign a password) to an open database. + + + No readers or writers may be active for this process. The database must already be open + and if it already was password protected, the existing password must already have been supplied. + + The new password to assign to the database + + + + Change the password (or assign a password) to an open database. + + + No readers or writers may be active for this process. The database must already be open + and if it already was password protected, the existing password must already have been supplied. + + The new password to assign to the database + + + + Sets the password for a password-protected database. A password-protected database is + unusable for any operation until the password has been set. + + The password for the database + + + + Sets the password for a password-protected database. A password-protected database is + unusable for any operation until the password has been set. + + The password for the database + + + + Queries or modifies the number of retries or the retry interval (in milliseconds) for + certain I/O operations that may fail due to anti-virus software. + + The number of times to retry the I/O operation. A negative value + will cause the current count to be queried and replace that negative value. + The number of milliseconds to wait before retrying the I/O + operation. This number is multiplied by the number of retry attempts so far to come + up with the final number of milliseconds to wait. A negative value will cause the + current interval to be queried and replace that negative value. + Zero for success, non-zero for error. + + + + Removes one set of surrounding single -OR- double quotes from the string + value and returns the resulting string value. If the string is null, empty, + or contains quotes that are not balanced, nothing is done and the original + string value will be returned. + + The string value to process. + + The string value, modified to remove one set of surrounding single -OR- + double quotes, if applicable. + + + + + Expand the filename of the data source, resolving the |DataDirectory| + macro as appropriate. + + The database filename to expand + + Non-zero if the returned file name should be converted to a full path + (except when using the .NET Compact Framework). + + The expanded path and filename of the filename + + + + The following commands are used to extract schema information out of the database. Valid schema types are: + + + MetaDataCollections + + + DataSourceInformation + + + Catalogs + + + Columns + + + ForeignKeys + + + Indexes + + + IndexColumns + + + Tables + + + Views + + + ViewColumns + + + + + Returns the MetaDataCollections schema + + A DataTable of the MetaDataCollections schema + + + + Returns schema information of the specified collection + + The schema collection to retrieve + A DataTable of the specified collection + + + + Retrieves schema information using the specified constraint(s) for the specified collection + + The collection to retrieve + The restrictions to impose + A DataTable of the specified collection + + + + Builds a MetaDataCollections schema datatable + + DataTable + + + + Builds a DataSourceInformation datatable + + DataTable + + + + Build a Columns schema + + The catalog (attached database) to query, can be null + The table to retrieve schema information for, must not be null + The column to retrieve schema information for, can be null + DataTable + + + + Returns index information for the given database and catalog + + The catalog (attached database) to query, can be null + The name of the index to retrieve information for, can be null + The table to retrieve index information for, can be null + DataTable + + + + Retrieves table schema information for the database and catalog + + The catalog (attached database) to retrieve tables on + The table to retrieve, can be null + The table type, can be null + DataTable + + + + Retrieves view schema information for the database + + The catalog (attached database) to retrieve views on + The view name, can be null + DataTable + + + + Retrieves catalog (attached databases) schema information for the database + + The catalog to retrieve, can be null + DataTable + + + + Returns the base column information for indexes in a database + + The catalog to retrieve indexes for (can be null) + The table to restrict index information by (can be null) + The index to restrict index information by (can be null) + The source column to restrict index information by (can be null) + A DataTable containing the results + + + + Returns detailed column information for a specified view + + The catalog to retrieve columns for (can be null) + The view to restrict column information by (can be null) + The source column to restrict column information by (can be null) + A DataTable containing the results + + + + Retrieves foreign key information from the specified set of filters + + An optional catalog to restrict results on + An optional table to restrict results on + An optional foreign key name to restrict results on + A DataTable with the results of the query + + + + Static variable to store the connection event handlers to call. + + + + + This event is raised whenever the database is opened or closed. + + + + + This event is raised when events related to the lifecycle of a + SQLiteConnection object occur. + + + + + This property is used to obtain or set the custom connection pool + implementation to use, if any. Setting this property to null will + cause the default connection pool implementation to be used. + + + + + Returns the number of pool entries for the file name associated with this connection. + + + + + The connection string containing the parameters for the connection + + + + + Parameter + Values + Required + Default + + + Data Source + + This may be a file name, the string ":memory:", or any supported URI (starting with SQLite 3.7.7). + Starting with release 1.0.86.0, in order to use more than one consecutive backslash (e.g. for a + UNC path), each of the adjoining backslash characters must be doubled (e.g. "\\Network\Share\test.db" + would become "\\\\Network\Share\test.db"). + + Y + + + + Version + 3 + N + 3 + + + UseUTF16Encoding + True
False
+ N + False +
+ + DateTimeFormat + + Ticks - Use the value of DateTime.Ticks.
+ ISO8601 - Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC + DateTime values and "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values).
+ JulianDay - The interval of time in days and fractions of a day since January 1, 4713 BC.
+ UnixEpoch - The whole number of seconds since the Unix epoch (January 1, 1970).
+ InvariantCulture - Any culture-independent string value that the .NET Framework can interpret as a valid DateTime.
+ CurrentCulture - Any string value that the .NET Framework can interpret as a valid DateTime using the current culture.
+ N + ISO8601 +
+ + DateTimeKind + Unspecified - Not specified as either UTC or local time.
Utc - The time represented is UTC.
Local - The time represented is local time.
+ N + Unspecified +
+ + DateTimeFormatString + The exact DateTime format string to use for all formatting and parsing of all DateTime + values for this connection. + N + null + + + BaseSchemaName + Some base data classes in the framework (e.g. those that build SQL queries dynamically) + assume that an ADO.NET provider cannot support an alternate catalog (i.e. database) without supporting + alternate schemas as well; however, SQLite does not fit into this model. Therefore, this value is used + as a placeholder and removed prior to preparing any SQL statements that may contain it. + N + sqlite_default_schema + + + BinaryGUID + True - Store GUID columns in binary form
False - Store GUID columns as text
+ N + True +
+ + Cache Size + {size in bytes} + N + 2000 + + + Synchronous + Normal - Normal file flushing behavior
Full - Full flushing after all writes
Off - Underlying OS flushes I/O's
+ N + Full +
+ + Page Size + {size in bytes} + N + 1024 + + + Password + {password} - Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + HexPassword + {hexPassword} - Must contain a sequence of zero or more hexadecimal encoded byte values without a leading "0x" prefix. Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + Enlist + Y - Automatically enlist in distributed transactions
N - No automatic enlistment
+ N + Y +
+ + Pooling + + True - Use connection pooling.
+ False - Do not use connection pooling.

+ WARNING: When using the default connection pool implementation, + setting this property to True should be avoided by applications that + make use of COM (either directly or indirectly) due to possible + deadlocks that can occur during the finalization of some COM objects. +
+ N + False +
+ + FailIfMissing + True - Don't create the database if it does not exist, throw an error instead
False - Automatically create the database if it does not exist
+ N + False +
+ + Max Page Count + {size in pages} - Limits the maximum number of pages (limits the size) of the database + N + 0 + + + Legacy Format + True - Use the more compatible legacy 3.x database format
False - Use the newer 3.3x database format which compresses numbers more effectively
+ N + False +
+ + Default Timeout + {time in seconds}
The default command timeout
+ N + 30 +
+ + Journal Mode + Delete - Delete the journal file after a commit
Persist - Zero out and leave the journal file on disk after a commit
Off - Disable the rollback journal entirely
+ N + Delete +
+ + Read Only + True - Open the database for read only access
False - Open the database for normal read/write access
+ N + False +
+ + Max Pool Size + The maximum number of connections for the given connection string that can be in the connection pool + N + 100 + + + Default IsolationLevel + The default transaciton isolation level + N + Serializable + + + Foreign Keys + Enable foreign key constraints + N + False + + + Flags + Extra behavioral flags for the connection. See the enumeration for possible values. + N + Default + + + SetDefaults + + True - Apply the default connection settings to the opened database.
+ False - Skip applying the default connection settings to the opened database. +
+ N + True +
+ + ToFullPath + + True - Attempt to expand the data source file name to a fully qualified path before opening.
+ False - Skip attempting to expand the data source file name to a fully qualified path before opening. +
+ N + True +
+
+
+
+ + + Returns the data source file name without extension or path. + + + + + Returns the string "main". + + + + + Gets/sets the default command timeout for newly-created commands. This is especially useful for + commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. + This can also be set in the ConnectionString with "Default Timeout" + + + + + Non-zero if the built-in (i.e. framework provided) connection string + parser should be used when opening the connection. + + + + + Gets/sets the extra behavioral flags for this connection. See the + enumeration for a list of + possible values. + + + + + Returns non-zero if the underlying native connection handle is + owned by this instance. + + + + + Returns the version of the underlying SQLite database engine + + + + + Returns the rowid of the most recent successful INSERT into the database from this connection. + + + + + Returns the number of rows changed by the last INSERT, UPDATE, or DELETE statement executed on + this connection. + + + + + Returns non-zero if the given database connection is in autocommit mode. + Autocommit mode is on by default. Autocommit mode is disabled by a BEGIN + statement. Autocommit mode is re-enabled by a COMMIT or ROLLBACK. + + + + + Returns the amount of memory (in bytes) currently in use by the SQLite core library. + + + + + Returns the maximum amount of memory (in bytes) used by the SQLite core library since the high-water mark was last reset. + + + + + Returns a string containing the define constants (i.e. compile-time + options) used to compile the core managed assembly, delimited with + spaces. + + + + + Returns the version of the underlying SQLite core library. + + + + + This method returns the string whose value is the same as the + SQLITE_SOURCE_ID C preprocessor macro used when compiling the + SQLite core library. + + + + + This method returns the version of the interop SQLite assembly + used. If the SQLite interop assembly is not in use or the + necessary information cannot be obtained for any reason, a null + value may be returned. + + + + + This method returns the string whose value contains the unique + identifier for the source checkout used to build the interop + assembly. If the SQLite interop assembly is not in use or the + necessary information cannot be obtained for any reason, a null + value may be returned. + + + + + This method returns the version of the managed components used + to interact with the SQLite core library. If the necessary + information cannot be obtained for any reason, a null value may + be returned. + + + + + This method returns the string whose value contains the unique + identifier for the source checkout used to build the managed + components currently executing. If the necessary information + cannot be obtained for any reason, a null value may be returned. + + + + + Returns the state of the connection. + + + + + This event is raised whenever SQLite encounters an action covered by the + authorizer during query preparation. Changing the value of the + property will determine if + the specific action will be allowed, ignored, or denied. For the entire + duration of the event, the associated connection and statement objects + must not be modified, either directly or indirectly, by the called code. + + + + + This event is raised whenever SQLite makes an update/delete/insert into the database on + this connection. It only applies to the given connection. + + + + + This event is raised whenever SQLite is committing a transaction. + Return non-zero to trigger a rollback. + + + + + This event is raised whenever SQLite statement first begins executing on + this connection. It only applies to the given connection. + + + + + This event is raised whenever SQLite is rolling back a transaction. + + + + + Returns the instance. + + + + + The I/O file cache flushing behavior for the connection + + + + + Normal file flushing at critical sections of the code + + + + + Full file flushing after every write operation + + + + + Use the default operating system's file flushing, SQLite does not explicitly flush the file buffers after writing + + + + + Raised when authorization is required to perform an action contained + within a SQL query. + + The connection performing the action. + A that contains the + event data. + + + + Raised when a transaction is about to be committed. To roll back a transaction, set the + rollbackTrans boolean value to true. + + The connection committing the transaction + Event arguments on the transaction + + + + Raised when data is inserted, updated and deleted on a given connection + + The connection committing the transaction + The event parameters which triggered the event + + + + Raised when a statement first begins executing on a given connection + + The connection executing the statement + Event arguments of the trace + + + + Raised between each backup step. + + + The source database connection. + + + The source database name. + + + The destination database connection. + + + The destination database name. + + + The number of pages copied with each step. + + + The number of pages remaining to be copied. + + + The total number of pages in the source database. + + + Set to true if the operation needs to be retried due to database + locking issues; otherwise, set to false. + + + True to continue with the backup process or false to halt the backup + process, rolling back any changes that have been made so far. + + + + + The data associated with a call into the authorizer. + + + + + The user-defined native data associated with this event. Currently, + this will always contain the value of . + + + + + The action code responsible for the current call into the authorizer. + + + + + The first string argument for the current call into the authorizer. + The exact value will vary based on the action code, see the + enumeration for possible + values. + + + + + The second string argument for the current call into the authorizer. + The exact value will vary based on the action code, see the + enumeration for possible + values. + + + + + The database name for the current call into the authorizer, if + applicable. + + + + + The name of the inner-most trigger or view that is responsible for + the access attempt or a null value if this access attempt is directly + from top-level SQL code. + + + + + The return code for the current call into the authorizer. + + + + + Constructs an instance of this class with default property values. + + + + + Constructs an instance of this class with specific property values. + + + The user-defined native data associated with this event. + + + The authorizer action code. + + + The first authorizer argument. + + + The second authorizer argument. + + + The database name, if applicable. + + + The name of the inner-most trigger or view that is responsible for + the access attempt or a null value if this access attempt is directly + from top-level SQL code. + + + The authorizer return code. + + + + + Whenever an update event is triggered on a connection, this enum will indicate + exactly what type of operation is being performed. + + + + + A row is being deleted from the given database and table + + + + + A row is being inserted into the table. + + + + + A row is being updated in the table. + + + + + Passed during an Update callback, these event arguments detail the type of update operation being performed + on the given connection. + + + + + The name of the database being updated (usually "main" but can be any attached or temporary database) + + + + + The name of the table being updated + + + + + The type of update being performed (insert/update/delete) + + + + + The RowId affected by this update. + + + + + Event arguments raised when a transaction is being committed + + + + + Set to true to abort the transaction and trigger a rollback + + + + + Passed during an Trace callback, these event arguments contain the UTF-8 rendering of the SQL statement text + + + + + SQL statement text as the statement first begins executing + + + + + This interface represents a custom connection pool implementation + usable by System.Data.SQLite. + + + + + Counts the number of pool entries matching the specified file name. + + + The file name to match or null to match all files. + + + The pool entry counts for each matching file. + + + The total number of connections successfully opened from any pool. + + + The total number of connections successfully closed from any pool. + + + The total number of pool entries for all matching files. + + + + + Disposes of all pooled connections associated with the specified + database file name. + + + The database file name. + + + + + Disposes of all pooled connections. + + + + + Adds a connection to the pool of those associated with the + specified database file name. + + + The database file name. + + + The database connection handle. + + + The connection pool version at the point the database connection + handle was received from the connection pool. This is also the + connection pool version that the database connection handle was + created under. + + + + + Removes a connection from the pool of those associated with the + specified database file name with the intent of using it to + interact with the database. + + + The database file name. + + + The new maximum size of the connection pool for the specified + database file name. + + + The connection pool version associated with the returned database + connection handle, if any. + + + The database connection handle associated with the specified + database file name or null if it cannot be obtained. + + + + + This default method implementations in this class should not be used by + applications that make use of COM (either directly or indirectly) due + to possible deadlocks that can occur during finalization of some COM + objects. + + + + + This field is used to synchronize access to the private static data + in this class. + + + + + When this field is non-null, it will be used to provide the + implementation of all the connection pool methods; otherwise, + the default method implementations will be used. + + + + + The dictionary of connection pools, based on the normalized file + name of the SQLite database. + + + + + The default version number new pools will get. + + + + + The number of connections successfully opened from any pool. + This value is incremented by the Remove method. + + + + + The number of connections successfully closed from any pool. + This value is incremented by the Add method. + + + + + Counts the number of pool entries matching the specified file name. + + + The file name to match or null to match all files. + + + The pool entry counts for each matching file. + + + The total number of connections successfully opened from any pool. + + + The total number of connections successfully closed from any pool. + + + The total number of pool entries for all matching files. + + + + + Disposes of all pooled connections associated with the specified + database file name. + + + The database file name. + + + + + Disposes of all pooled connections. + + + + + Adds a connection to the pool of those associated with the + specified database file name. + + + The database file name. + + + The database connection handle. + + + The connection pool version at the point the database connection + handle was received from the connection pool. This is also the + connection pool version that the database connection handle was + created under. + + + + + Removes a connection from the pool of those associated with the + specified database file name with the intent of using it to + interact with the database. + + + The database file name. + + + The new maximum size of the connection pool for the specified + database file name. + + + The connection pool version associated with the returned database + connection handle, if any. + + + The database connection handle associated with the specified + database file name or null if it cannot be obtained. + + + + + This method is used to obtain a reference to the custom connection + pool implementation currently in use, if any. + + + The custom connection pool implementation or null if the default + connection pool implementation should be used. + + + + + This method is used to set the reference to the custom connection + pool implementation to use, if any. + + + The custom connection pool implementation to use or null if the + default connection pool implementation should be used. + + + + + We do not have to thread-lock anything in this function, because it + is only called by other functions above which already take the lock. + + + The pool queue to resize. + + + If a function intends to add to the pool, this is true, which + forces the resize to take one more than it needs from the pool. + + + + + Keeps track of connections made on a specified file. The PoolVersion + dictates whether old objects get returned to the pool or discarded + when no longer in use. + + + + + The queue of weak references to the actual database connection + handles. + + + + + This pool version associated with the database connection + handles in this pool queue. + + + + + The maximum size of this pool queue. + + + + + Constructs a connection pool queue using the specified version + and maximum size. Normally, all the database connection + handles in this pool are associated with a single database file + name. + + + The initial pool version for this connection pool queue. + + + The initial maximum size for this connection pool queue. + + + + + SQLite implementation of DbConnectionStringBuilder. + + + + + Properties of this class + + + + + Constructs a new instance of the class + + + Default constructor + + + + + Constructs a new instance of the class using the specified connection string. + + The connection string to parse + + + + Private initializer, which assigns the connection string and resets the builder + + The connection string to assign + + + + Helper function for retrieving values from the connectionstring + + The keyword to retrieve settings for + The resulting parameter value + Returns true if the value was found and returned + + + + Fallback method for MONO, which doesn't implement DbConnectionStringBuilder.GetProperties() + + The hashtable to fill with property descriptors + + + + Gets/Sets the default version of the SQLite engine to instantiate. Currently the only valid value is 3, indicating version 3 of the sqlite library. + + + + + Gets/Sets the synchronization mode (file flushing) of the connection string. Default is "Normal". + + + + + Gets/Sets the encoding for the connection string. The default is "False" which indicates UTF-8 encoding. + + + + + Gets/Sets whether or not to use connection pooling. The default is "False" + + + + + Gets/Sets whethor not to store GUID's in binary format. The default is True + which saves space in the database. + + + + + Gets/Sets the filename to open on the connection string. + + + + + An alternate to the data source property + + + + + An alternate to the data source property that uses the SQLite URI syntax. + + + + + Gets/sets the default command timeout for newly-created commands. This is especially useful for + commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. + + + + + Determines whether or not the connection will automatically participate + in the current distributed transaction (if one exists) + + + + + If set to true, will throw an exception if the database specified in the connection + string does not exist. If false, the database will be created automatically. + + + + + If enabled, uses the legacy 3.xx format for maximum compatibility, but results in larger + database sizes. + + + + + When enabled, the database will be opened for read-only access and writing will be disabled. + + + + + Gets/sets the database encryption password + + + + + Gets/sets the database encryption hexadecimal password + + + + + Gets/Sets the page size for the connection. + + + + + Gets/Sets the maximum number of pages the database may hold + + + + + Gets/Sets the cache size for the connection. + + + + + Gets/Sets the DateTime format for the connection. + + + + + Gets/Sets the DateTime kind for the connection. + + + + + Gets/sets the DateTime format string used for formatting + and parsing purposes. + + + + + Gets/Sets the placeholder base schema name used for + .NET Framework compatibility purposes. + + + + + Determines how SQLite handles the transaction journal file. + + + + + Sets the default isolation level for transactions on the connection. + + + + + If enabled, use foreign key constraints + + + + + Gets/Sets the extra behavioral flags. + + + + + If enabled, apply the default connection settings to opened databases. + + + + + If enabled, attempt to resolve the provided data source file name to a + full path before opening. + + + + + SQLite has very limited types, and is inherently text-based. The first 5 types below represent the sum of all types SQLite + understands. The DateTime extension to the spec is for internal use only. + + + + + Not used + + + + + All integers in SQLite default to Int64 + + + + + All floating point numbers in SQLite default to double + + + + + The default data type of SQLite is text + + + + + Typically blob types are only seen when returned from a function + + + + + Null types can be returned from functions + + + + + Used internally by this provider + + + + + Used internally by this provider + + + + + These are the event types associated with the + + delegate (and its corresponding event) and the + class. + + + + + Not used. + + + + + Not used. + + + + + The connection is being opened. + + + + + The connection string has been parsed. + + + + + The connection was opened. + + + + + The method was called on the + connection. + + + + + A transaction was created using the connection. + + + + + The connection was enlisted into a transaction. + + + + + A command was created using the connection. + + + + + A data reader was created using the connection. + + + + + An instance of a derived class has + been created to wrap a native resource. + + + + + The connection is being closed. + + + + + The connection was closed. + + + + + This implementation of SQLite for ADO.NET can process date/time fields in + databases in one of six formats. + + + ISO8601 format is more compatible, readable, fully-processable, but less + accurate as it does not provide time down to fractions of a second. + JulianDay is the numeric format the SQLite uses internally and is arguably + the most compatible with 3rd party tools. It is not readable as text + without post-processing. Ticks less compatible with 3rd party tools that + query the database, and renders the DateTime field unreadable as text + without post-processing. UnixEpoch is more compatible with Unix systems. + InvariantCulture allows the configured format for the invariant culture + format to be used and is human readable. CurrentCulture allows the + configured format for the current culture to be used and is also human + readable. + + The preferred order of choosing a DateTime format is JulianDay, ISO8601, + and then Ticks. Ticks is mainly present for legacy code support. + + + + + Use the value of DateTime.Ticks. This value is not recommended and is not well supported with LINQ. + + + + + Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC DateTime values and + "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values). + + + + + The interval of time in days and fractions of a day since January 1, 4713 BC. + + + + + The whole number of seconds since the Unix epoch (January 1, 1970). + + + + + Any culture-independent string value that the .NET Framework can interpret as a valid DateTime. + + + + + Any string value that the .NET Framework can interpret as a valid DateTime using the current culture. + + + + + The default format for this provider. + + + + + This enum determines how SQLite treats its journal file. + + + By default SQLite will create and delete the journal file when needed during a transaction. + However, for some computers running certain filesystem monitoring tools, the rapid + creation and deletion of the journal file can cause those programs to fail, or to interfere with SQLite. + + If a program or virus scanner is interfering with SQLite's journal file, you may receive errors like "unable to open database file" + when starting a transaction. If this is happening, you may want to change the default journal mode to Persist. + + + + + The default mode, this causes SQLite to use the existing journaling mode for the database. + + + + + SQLite will create and destroy the journal file as-needed. + + + + + When this is set, SQLite will keep the journal file even after a transaction has completed. It's contents will be erased, + and the journal re-used as often as needed. If it is deleted, it will be recreated the next time it is needed. + + + + + This option disables the rollback journal entirely. Interrupted transactions or a program crash can cause database + corruption in this mode! + + + + + SQLite will truncate the journal file to zero-length instead of deleting it. + + + + + SQLite will store the journal in volatile RAM. This saves disk I/O but at the expense of database safety and integrity. + If the application using SQLite crashes in the middle of a transaction when the MEMORY journaling mode is set, then the + database file will very likely go corrupt. + + + + + SQLite uses a write-ahead log instead of a rollback journal to implement transactions. The WAL journaling mode is persistent; + after being set it stays in effect across multiple database connections and after closing and reopening the database. A database + in WAL journaling mode can only be accessed by SQLite version 3.7.0 or later. + + + + + Possible values for the "synchronous" database setting. This setting determines + how often the database engine calls the xSync method of the VFS. + + + + + Use the default "synchronous" database setting. Currently, this should be + the same as using the FULL mode. + + + + + The database engine continues without syncing as soon as it has handed + data off to the operating system. If the application running SQLite + crashes, the data will be safe, but the database might become corrupted + if the operating system crashes or the computer loses power before that + data has been written to the disk surface. + + + + + The database engine will still sync at the most critical moments, but + less often than in FULL mode. There is a very small (though non-zero) + chance that a power failure at just the wrong time could corrupt the + database in NORMAL mode. + + + + + The database engine will use the xSync method of the VFS to ensure that + all content is safely written to the disk surface prior to continuing. + This ensures that an operating system crash or power failure will not + corrupt the database. FULL synchronous is very safe, but it is also + slower. + + + + + The requested command execution type. This controls which method of the + object will be called. + + + + + Do nothing. No method will be called. + + + + + The command is not expected to return a result -OR- the result is not + needed. The or + method + will be called. + + + + + The command is expected to return a scalar result -OR- the result should + be limited to a scalar result. The + or method will + be called. + + + + + The command is expected to return result. + The or + method will + be called. + + + + + Use the default command execution type. Using this value is the same + as using the value. + + + + + The action code responsible for the current call into the authorizer. + + + + + No action is being performed. This value should not be used from + external code. + + + + + No longer used. + + + + + An index will be created. The action-specific arguments are the + index name and the table name. + + + + + + A table will be created. The action-specific arguments are the + table name and a null value. + + + + + A temporary index will be created. The action-specific arguments + are the index name and the table name. + + + + + A temporary table will be created. The action-specific arguments + are the table name and a null value. + + + + + A temporary trigger will be created. The action-specific arguments + are the trigger name and the table name. + + + + + A temporary view will be created. The action-specific arguments are + the view name and a null value. + + + + + A trigger will be created. The action-specific arguments are the + trigger name and the table name. + + + + + A view will be created. The action-specific arguments are the view + name and a null value. + + + + + A DELETE statement will be executed. The action-specific arguments + are the table name and a null value. + + + + + An index will be dropped. The action-specific arguments are the + index name and the table name. + + + + + A table will be dropped. The action-specific arguments are the tables + name and a null value. + + + + + A temporary index will be dropped. The action-specific arguments are + the index name and the table name. + + + + + A temporary table will be dropped. The action-specific arguments are + the table name and a null value. + + + + + A temporary trigger will be dropped. The action-specific arguments + are the trigger name and the table name. + + + + + A temporary view will be dropped. The action-specific arguments are + the view name and a null value. + + + + + A trigger will be dropped. The action-specific arguments are the + trigger name and the table name. + + + + + A view will be dropped. The action-specific arguments are the view + name and a null value. + + + + + An INSERT statement will be executed. The action-specific arguments + are the table name and a null value. + + + + + A PRAGMA statement will be executed. The action-specific arguments + are the name of the PRAGMA and the new value or a null value. + + + + + A table column will be read. The action-specific arguments are the + table name and the column name. + + + + + A SELECT statement will be executed. The action-specific arguments + are both null values. + + + + + A transaction will be started, committed, or rolled back. The + action-specific arguments are the name of the operation (BEGIN, + COMMIT, or ROLLBACK) and a null value. + + + + + An UPDATE statement will be executed. The action-specific arguments + are the table name and the column name. + + + + + A database will be attached to the connection. The action-specific + arguments are the database file name and a null value. + + + + + A database will be detached from the connection. The action-specific + arguments are the database name and a null value. + + + + + The schema of a table will be altered. The action-specific arguments + are the database name and the table name. + + + + + An index will be deleted and then recreated. The action-specific + arguments are the index name and a null value. + + + + + A table will be analyzed to gathers statistics about it. The + action-specific arguments are the table name and a null value. + + + + + A virtual table will be created. The action-specific arguments are + the table name and the module name. + + + + + A virtual table will be dropped. The action-specific arguments are + the table name and the module name. + + + + + A SQL function will be called. The action-specific arguments are a + null value and the function name. + + + + + A savepoint will be created, released, or rolled back. The + action-specific arguments are the name of the operation (BEGIN, + RELEASE, or ROLLBACK) and the savepoint name. + + + + + The return code for the current call into the authorizer. + + + + + The action will be allowed. + + + + + The overall action will be disallowed and an error message will be + returned from the query preparation method. + + + + + The specific action will be disallowed; however, the overall action + will continue. The exact effects of this return code vary depending + on the specific action, please refer to the SQLite core library + documentation for futher details. + + + + + Class used internally to determine the datatype of a column in a resultset + + + + + The DbType of the column, or DbType.Object if it cannot be determined + + + + + The affinity of a column, used for expressions or when Type is DbType.Object + + + + + SQLite implementation of DbDataAdapter. + + + + + This class is just a shell around the DbDataAdapter. Nothing from + DbDataAdapter is overridden here, just a few constructors are defined. + + + Default constructor. + + + + + Constructs a data adapter using the specified select command. + + + The select command to associate with the adapter. + + + + + Constructs a data adapter with the supplied select command text and + associated with the specified connection. + + + The select command text to associate with the data adapter. + + + The connection to associate with the select command. + + + + + Constructs a data adapter with the specified select command text, + and using the specified database connection string. + + + The select command text to use to construct a select command. + + + A connection string suitable for passing to a new SQLiteConnection, + which is associated with the select command. + + + + + Constructs a data adapter with the specified select command text, + and using the specified database connection string. + + + The select command text to use to construct a select command. + + + A connection string suitable for passing to a new SQLiteConnection, + which is associated with the select command. + + + Non-zero to parse the connection string using the built-in (i.e. + framework provided) parser when opening the connection. + + + + + Raised by the underlying DbDataAdapter when a row is being updated + + The event's specifics + + + + Raised by DbDataAdapter after a row is updated + + The event's specifics + + + + Row updating event handler + + + + + Row updated event handler + + + + + Gets/sets the select command for this DataAdapter + + + + + Gets/sets the insert command for this DataAdapter + + + + + Gets/sets the update command for this DataAdapter + + + + + Gets/sets the delete command for this DataAdapter + + + + + SQLite implementation of DbDataReader. + + + + + Underlying command this reader is attached to + + + + + Index of the current statement in the command being processed + + + + + Current statement being Read() + + + + + State of the current statement being processed. + -1 = First Step() executed, so the first Read() will be ignored + 0 = Actively reading + 1 = Finished reading + 2 = Non-row-returning statement, no records + + + + + Number of records affected by the insert/update statements executed on the command + + + + + Count of fields (columns) in the row-returning statement currently being processed + + + + + Maps the field (column) names to their corresponding indexes within the results. + + + + + Datatypes of active fields (columns) in the current statement, used for type-restricting data + + + + + The behavior of the datareader + + + + + If set, then dispose of the command object when the reader is finished + + + + + If set, then raise an exception when the object is accessed after being disposed. + + + + + An array of rowid's for the active statement if CommandBehavior.KeyInfo is specified + + + + + Matches the version of the connection. + + + + + The "stub" (i.e. placeholder) base schema name to use when returning + column schema information. Matches the base schema name used by the + associated connection. + + + + + Internal constructor, initializes the datareader and sets up to begin executing statements + + The SQLiteCommand this data reader is for + The expected behavior of the data reader + + + + Dispose of all resources used by this datareader. + + + + + + Closes the datareader, potentially closing the connection as well if CommandBehavior.CloseConnection was specified. + + + + + Throw an error if the datareader is closed + + + + + Throw an error if a row is not loaded + + + + + Enumerator support + + Returns a DbEnumerator object. + + + + SQLite is inherently un-typed. All datatypes in SQLite are natively strings. The definition of the columns of a table + and the affinity of returned types are all we have to go on to type-restrict data in the reader. + + This function attempts to verify that the type of data being requested of a column matches the datatype of the column. In + the case of columns that are not backed into a table definition, we attempt to match up the affinity of a column (int, double, string or blob) + to a set of known types that closely match that affinity. It's not an exact science, but its the best we can do. + + + This function throws an InvalidTypeCast() exception if the requested type doesn't match the column's definition or affinity. + + The index of the column to type-check + The type we want to get out of the column + + + + Retrieves the column as a boolean value + + The index of the column to retrieve + bool + + + + Retrieves the column as a single byte value + + The index of the column to retrieve + byte + + + + Retrieves a column as an array of bytes (blob) + + The index of the column to retrieve + The zero-based index of where to begin reading the data + The buffer to write the bytes into + The zero-based index of where to begin writing into the array + The number of bytes to retrieve + The actual number of bytes written into the array + + To determine the number of bytes in the column, pass a null value for the buffer. The total length will be returned. + + + + + Returns the column as a single character + + The index of the column to retrieve + char + + + + Retrieves a column as an array of chars (blob) + + The index of the column to retrieve + The zero-based index of where to begin reading the data + The buffer to write the characters into + The zero-based index of where to begin writing into the array + The number of bytes to retrieve + The actual number of characters written into the array + + To determine the number of characters in the column, pass a null value for the buffer. The total length will be returned. + + + + + Retrieves the name of the back-end datatype of the column + + The index of the column to retrieve + string + + + + Retrieve the column as a date/time value + + The index of the column to retrieve + DateTime + + + + Retrieve the column as a decimal value + + The index of the column to retrieve + decimal + + + + Returns the column as a double + + The index of the column to retrieve + double + + + + Returns the .NET type of a given column + + The index of the column to retrieve + Type + + + + Returns a column as a float value + + The index of the column to retrieve + float + + + + Returns the column as a Guid + + The index of the column to retrieve + Guid + + + + Returns the column as a short + + The index of the column to retrieve + Int16 + + + + Retrieves the column as an int + + The index of the column to retrieve + Int32 + + + + Retrieves the column as a long + + The index of the column to retrieve + Int64 + + + + Retrieves the name of the column + + The index of the column to retrieve + string + + + + Retrieves the i of a column, given its name + + The name of the column to retrieve + The int i of the column + + + + Schema information in SQLite is difficult to map into .NET conventions, so a lot of work must be done + to gather the necessary information so it can be represented in an ADO.NET manner. + + Returns a DataTable containing the schema information for the active SELECT statement being processed. + + + + Retrieves the column as a string + + The index of the column to retrieve + string + + + + Retrieves the column as an object corresponding to the underlying datatype of the column + + The index of the column to retrieve + object + + + + Retreives the values of multiple columns, up to the size of the supplied array + + The array to fill with values from the columns in the current resultset + The number of columns retrieved + + + + Returns a collection containing all the column names and values for the + current row of data in the current resultset, if any. If there is no + current row or no current resultset, an exception may be thrown. + + + The collection containing the column name and value information for the + current row of data in the current resultset or null if this information + cannot be obtained. + + + + + Returns True if the specified column is null + + The index of the column to retrieve + True or False + + + + Moves to the next resultset in multiple row-returning SQL command. + + True if the command was successful and a new resultset is available, False otherwise. + + + + This method attempts to query the flags associated with the database + connection in use. If the database connection is disposed, the default + flags will be returned. + + + The data reader containing the databse connection to query the flags from. + + + The connection flags value. + + + + + Retrieves the SQLiteType for a given column, and caches it to avoid repetetive interop calls. + + The index of the column to retrieve + A SQLiteType structure + + + + Reads the next row from the resultset + + True if a new row was successfully loaded and is ready for processing + + + + Not implemented. Returns 0 + + + + + Returns the number of columns in the current resultset + + + + + Returns the number of visible fields in the current resultset + + + + + Returns True if the resultset has rows that can be fetched + + + + + Returns True if the data reader is closed + + + + + Retrieve the count of records affected by an update/insert command. Only valid once the data reader is closed! + + + + + Indexer to retrieve data from a column given its name + + The name of the column to retrieve data for + The value contained in the column + + + + Indexer to retrieve data from a column given its i + + The index of the column to retrieve + The value contained in the column + + + + SQLite exception class. + + + + + Private constructor for use with serialization. + + + Holds the serialized object data about the exception being thrown. + + + Contains contextual information about the source or destination. + + + + + Public constructor for generating a SQLite exception given the error + code and message. + + + The SQLite return code to report. + + + Message text to go along with the return code message text. + + + + + Public constructor that uses the base class constructor for the error + message. + + Error message text. + + + + Public constructor that uses the default base class constructor. + + + + + Public constructor that uses the base class constructor for the error + message and inner exception. + + Error message text. + The original (inner) exception. + + + + Adds extra information to the serialized object data specific to this + class type. This is only used for serialization. + + + Holds the serialized object data about the exception being thrown. + + + Contains contextual information about the source or destination. + + + + + Returns the error message for the specified SQLite return code. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns the composite error message based on the SQLite return code + and the optional detailed error message. + + The SQLite return code. + Optional detailed error message. + Error message text for the return code. + + + + Gets the associated SQLite result code for this exception as a + . This property returns the same + underlying value as the property. + + + + + Gets the associated SQLite return code for this exception as an + . For desktop versions of the .NET Framework, + this property overrides the property of the same name within the + + class. This property returns the same underlying value as the + property. + + + + + SQLite error codes. Actually, this enumeration represents a return code, + which may also indicate success in one of several ways (e.g. SQLITE_OK, + SQLITE_ROW, and SQLITE_DONE). Therefore, the name of this enumeration is + something of a misnomer. + + + + + The error code is unknown. This error code + is only used by the managed wrapper itself. + + + + + Successful result + + + + + SQL error or missing database + + + + + Internal logic error in SQLite + + + + + Access permission denied + + + + + Callback routine requested an abort + + + + + The database file is locked + + + + + A table in the database is locked + + + + + A malloc() failed + + + + + Attempt to write a readonly database + + + + + Operation terminated by sqlite3_interrupt() + + + + + Some kind of disk I/O error occurred + + + + + The database disk image is malformed + + + + + Unknown opcode in sqlite3_file_control() + + + + + Insertion failed because database is full + + + + + Unable to open the database file + + + + + Database lock protocol error + + + + + Database is empty + + + + + The database schema changed + + + + + String or BLOB exceeds size limit + + + + + Abort due to constraint violation + + + + + Data type mismatch + + + + + Library used incorrectly + + + + + Uses OS features not supported on host + + + + + Authorization denied + + + + + Auxiliary database format error + + + + + 2nd parameter to sqlite3_bind out of range + + + + + File opened that is not a database file + + + + + Notifications from sqlite3_log() + + + + + Warnings from sqlite3_log() + + + + + sqlite3_step() has another row ready + + + + + sqlite3_step() has finished executing + + + + + Used to mask off extended result codes + + + + + SQLite implementation of . + + + SQLite implementation of . + + + + + Constructs a new instance. + + + + + Static instance member which returns an instanced class. + + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Will provide a object in .NET 3.5. + + The class or interface type to query for. + + + + + This event is raised whenever SQLite raises a logging event. + Note that this should be set as one of the first things in the + application. This event is provided for backward compatibility only. + New code should use the class instead. + + + + + This abstract class is designed to handle user-defined functions easily. An instance of the derived class is made for each + connection to the database. + + + Although there is one instance of a class derived from SQLiteFunction per database connection, the derived class has no access + to the underlying connection. This is necessary to deter implementers from thinking it would be a good idea to make database + calls during processing. + + It is important to distinguish between a per-connection instance, and a per-SQL statement context. One instance of this class + services all SQL statements being stepped through on that connection, and there can be many. One should never store per-statement + information in member variables of user-defined function classes. + + For aggregate functions, always create and store your per-statement data in the contextData object on the 1st step. This data will + be automatically freed for you (and Dispose() called if the item supports IDisposable) when the statement completes. + + + + + The base connection this function is attached to + + + + + Internal array used to keep track of aggregate function context data + + + + + The connection flags associated with this object (this should be the + same value as the flags associated with the parent connection object). + + + + + Holds a reference to the callback function for user functions + + + + + Holds a reference to the callbakc function for stepping in an aggregate function + + + + + Holds a reference to the callback function for finalizing an aggregate function + + + + + Holds a reference to the callback function for collation sequences + + + + + Current context of the current callback. Only valid during a callback + + + + + This static list contains all the user-defined functions declared using the proper attributes. + + + + + Internal constructor, initializes the function's internal variables. + + + + + Constructs an instance of this class using the specified data-type + conversion parameters. + + + The DateTime format to be used when converting string values to a + DateTime and binding DateTime parameters. + + + The to be used when creating DateTime + values. + + + The format string to be used when parsing and formatting DateTime + values. + + + Non-zero to create a UTF-16 data-type conversion context; otherwise, + a UTF-8 data-type conversion context will be created. + + + + + Disposes of any active contextData variables that were not automatically cleaned up. Sometimes this can happen if + someone closes the connection while a DataReader is open. + + + + + Placeholder for a user-defined disposal routine + + True if the object is being disposed explicitly + + + + Scalar functions override this method to do their magic. + + + Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available + to force them into a certain type. Therefore the only types you will ever see as parameters are + DBNull.Value, Int64, Double, String or byte[] array. + + The arguments for the command to process + You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or + you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, + just return it! + + + + Aggregate functions override this method to do their magic. + + + Typically you'll be updating whatever you've placed in the contextData field and returning as quickly as possible. + + The arguments for the command to process + The 1-based step number. This is incrememted each time the step method is called. + A placeholder for implementers to store contextual data pertaining to the current context. + + + + Aggregate functions override this method to finish their aggregate processing. + + + If you implemented your aggregate function properly, + you've been recording and keeping track of your data in the contextData object provided, and now at this stage you should have + all the information you need in there to figure out what to return. + NOTE: It is possible to arrive here without receiving a previous call to Step(), in which case the contextData will + be null. This can happen when no rows were returned. You can either return null, or 0 or some other custom return value + if that is the case. + + Your own assigned contextData, provided for you so you can return your final results. + You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or + you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, + just return it! + + + + + User-defined collation sequences override this method to provide a custom string sorting algorithm. + + The first string to compare + The second strnig to compare + 1 if param1 is greater than param2, 0 if they are equal, or -1 if param1 is less than param2 + + + + Converts an IntPtr array of context arguments to an object array containing the resolved parameters the pointers point to. + + + Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available + to force them into a certain type. Therefore the only types you will ever see as parameters are + DBNull.Value, Int64, Double, String or byte[] array. + + The number of arguments + A pointer to the array of arguments + An object array of the arguments once they've been converted to .NET values + + + + Takes the return value from Invoke() and Final() and figures out how to return it to SQLite's context. + + The context the return value applies to + The parameter to return to SQLite + + + + Internal scalar callback function, which wraps the raw context pointer and calls the virtual Invoke() method. + WARNING: Must not throw exceptions. + + A raw context pointer + Number of arguments passed in + A pointer to the array of arguments + + + + Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function. + WARNING: Must not throw exceptions. + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. Returns 0 if an exception is caught. + + + + Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function. + WARNING: Must not throw exceptions. + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. Returns 0 if an exception is caught. + + + + The internal aggregate Step function callback, which wraps the raw context pointer and calls the virtual Step() method. + WARNING: Must not throw exceptions. + + + This function takes care of doing the lookups and getting the important information put together to call the Step() function. + That includes pulling out the user's contextData and updating it after the call is made. We use a sorted list for this so + binary searches can be done to find the data. + + A raw context pointer + Number of arguments passed in + A pointer to the array of arguments + + + + An internal aggregate Final function callback, which wraps the context pointer and calls the virtual Final() method. + WARNING: Must not throw exceptions. + + A raw context pointer + + + + Using reflection, enumerate all assemblies in the current appdomain looking for classes that + have a SQLiteFunctionAttribute attribute, and registering them accordingly. + + + + + Manual method of registering a function. The type must still have the SQLiteFunctionAttributes in order to work + properly, but this is a workaround for the Compact Framework where enumerating assemblies is not currently supported. + + The type of the function to register + + + + Called by SQLiteBase derived classes, this function binds all user-defined functions to a connection. + It is done this way so that all user-defined functions will access the database using the same encoding scheme + as the connection (UTF-8 or UTF-16). + + + The wrapper functions that interop with SQLite will create a unique cookie value, which internally is a pointer to + all the wrapped callback functions. The interop function uses it to map CDecl callbacks to StdCall callbacks. + + The base object on which the functions are to bind + The flags associated with the parent connection object + Returns a logical list of functions which the connection should retain until it is closed. + + + + This function binds a user-defined functions to a connection. + + + The object instance associated with the + that the function should be bound to. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + + + + Returns a reference to the underlying connection's SQLiteConvert class, which can be used to convert + strings and DateTime's into the current connection's encoding schema. + + + + + Extends SQLiteFunction and allows an inherited class to obtain the collating sequence associated with a function call. + + + User-defined functions can call the GetCollationSequence() method in this class and use it to compare strings and char arrays. + + + + + Obtains the collating sequence in effect for the given function. + + + + + + The type of user-defined function to declare + + + + + Scalar functions are designed to be called and return a result immediately. Examples include ABS(), Upper(), Lower(), etc. + + + + + Aggregate functions are designed to accumulate data until the end of a call and then return a result gleaned from the accumulated data. + Examples include SUM(), COUNT(), AVG(), etc. + + + + + Collation sequences are used to sort textual data in a custom manner, and appear in an ORDER BY clause. Typically text in an ORDER BY is + sorted using a straight case-insensitive comparison function. Custom collating sequences can be used to alter the behavior of text sorting + in a user-defined manner. + + + + + An internal callback delegate declaration. + + Raw native context pointer for the user function. + Total number of arguments to the user function. + Raw native pointer to the array of raw native argument pointers. + + + + An internal final callback delegate declaration. + + Raw context pointer for the user function + + + + Internal callback delegate for implementing collation sequences + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. + + + + The type of collating sequence + + + + + The built-in BINARY collating sequence + + + + + The built-in NOCASE collating sequence + + + + + The built-in REVERSE collating sequence + + + + + A custom user-defined collating sequence + + + + + The encoding type the collation sequence uses + + + + + The collation sequence is UTF8 + + + + + The collation sequence is UTF16 little-endian + + + + + The collation sequence is UTF16 big-endian + + + + + A struct describing the collating sequence a function is executing in + + + + + The name of the collating sequence + + + + + The type of collating sequence + + + + + The text encoding of the collation sequence + + + + + Context of the function that requested the collating sequence + + + + + Calls the base collating sequence to compare two strings + + The first string to compare + The second string to compare + -1 if s1 is less than s2, 0 if s1 is equal to s2, and 1 if s1 is greater than s2 + + + + Calls the base collating sequence to compare two character arrays + + The first array to compare + The second array to compare + -1 if c1 is less than c2, 0 if c1 is equal to c2, and 1 if c1 is greater than c2 + + + + A simple custom attribute to enable us to easily find user-defined functions in + the loaded assemblies and initialize them in SQLite as connections are made. + + + + + Default constructor, initializes the internal variables for the function. + + + + + Constructs an instance of this class. + + + The name of the function, as seen by the SQLite core library. + + + The number of arguments that the function will accept. + + + The type of function being declared. This will either be Scalar, + Aggregate, or Collation. + + + + + The function's name as it will be used in SQLite command text. + + + + + The number of arguments this function expects. -1 if the number of arguments is variable. + + + + + The type of function this implementation will be. + + + + + The object instance that describes the class + containing the implementation for the associated function. + + + + + This class provides key info for a given SQLite statement. + + Providing key information for a given statement is non-trivial :( + + + + + + This function does all the nasty work at determining what keys need to be returned for + a given statement. + + + + + + + + Make sure all the subqueries are open and ready and sync'd with the current rowid + of the table they're supporting + + + + + Release any readers on any subqueries + + + + + Append all the columns we've added to the original query to the schema + + + + + + How many additional columns of keyinfo we're holding + + + + + Used to support CommandBehavior.KeyInfo + + + + + A single sub-query for a given table/database. + + + + + Event data for logging event handlers. + + + + + The error code. The type of this object value should be + or . + + + + + SQL statement text as the statement first begins executing + + + + + Extra data associated with this event, if any. + + + + + Constructs the object. + + Should be null. + + The error code. The type of this object value should be + or . + + The error message, if any. + The extra data, if any. + + + + Raised when a log event occurs. + + The current connection + Event arguments of the trace + + + + Manages the SQLite custom logging functionality and the associated + callback for the whole process. + + + + + Object used to synchronize access to the static instance data + for this class. + + + + + Member variable to store the AppDomain.DomainUnload event handler. + + + + + The default log event handler. + + + + + The log callback passed to native SQLite engine. This must live + as long as the SQLite library has a pointer to it. + + + + + The base SQLite object to interop with. + + + + + This will be non-zero if logging is currently enabled. + + + + + Initializes the SQLite logging facilities. + + + + + Handles the AppDomain being unloaded. + + Should be null. + The data associated with this event. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The SQLite error code. + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The integer error code. + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + + The error code. The type of this object value should be + System.Int32 or SQLiteErrorCode. + + The message to be logged. + + + + Creates and initializes the default log event handler. + + + + + Adds the default log event handler to the list of handlers. + + + + + Removes the default log event handler from the list of handlers. + + + + + Internal proxy function that calls any registered application log + event handlers. + + WARNING: This method is used more-or-less directly by native code, + do not modify its type signature. + + + The extra data associated with this message, if any. + + + The error code associated with this message. + + + The message string to be logged. + + + + + Default logger. Currently, uses the Trace class (i.e. sends events + to the current trace listeners, if any). + + Should be null. + The data associated with this event. + + + + Member variable to store the application log handler to call. + + + + + This event is raised whenever SQLite raises a logging event. + Note that this should be set as one of the first things in the + application. + + + + + If this property is true, logging is enabled; otherwise, logging is + disabled. When logging is disabled, no logging events will fire. + + + + + MetaDataCollections specific to SQLite + + + + + Returns a list of databases attached to the connection + + + + + Returns column information for the specified table + + + + + Returns index information for the optionally-specified table + + + + + Returns base columns for the given index + + + + + Returns the tables in the given catalog + + + + + Returns user-defined views in the given catalog + + + + + Returns underlying column information on the given view + + + + + Returns foreign key information for the given catalog + + + + + Returns the triggers on the database + + + + + SQLite implementation of DbParameter. + + + + + The data type of the parameter + + + + + The version information for mapping the parameter + + + + + The value of the data in the parameter + + + + + The source column for the parameter + + + + + The column name + + + + + The data size, unused by SQLite + + + + + Default constructor + + + + + Constructs a named parameter given the specified parameter name + + The parameter name + + + + Constructs a named parameter given the specified parameter name and initial value + + The parameter name + The initial value of the parameter + + + + Constructs a named parameter of the specified type + + The parameter name + The datatype of the parameter + + + + Constructs a named parameter of the specified type and source column reference + + The parameter name + The data type + The source column + + + + Constructs a named parameter of the specified type, source column and row version + + The parameter name + The data type + The source column + The row version information + + + + Constructs an unnamed parameter of the specified data type + + The datatype of the parameter + + + + Constructs an unnamed parameter of the specified data type and sets the initial value + + The datatype of the parameter + The initial value of the parameter + + + + Constructs an unnamed parameter of the specified data type and source column + + The datatype of the parameter + The source column + + + + Constructs an unnamed parameter of the specified data type, source column and row version + + The data type + The source column + The row version information + + + + Constructs a named parameter of the specified type and size + + The parameter name + The data type + The size of the parameter + + + + Constructs a named parameter of the specified type, size and source column + + The name of the parameter + The data type + The size of the parameter + The source column + + + + Constructs a named parameter of the specified type, size, source column and row version + + The name of the parameter + The data type + The size of the parameter + The source column + The row version information + + + + Constructs a named parameter of the specified type, size, source column and row version + + The name of the parameter + The data type + The size of the parameter + Only input parameters are supported in SQLite + Ignored + Ignored + Ignored + The source column + The row version information + The initial value to assign the parameter + + + + Constructs a named parameter, yet another flavor + + The name of the parameter + The data type + The size of the parameter + Only input parameters are supported in SQLite + Ignored + Ignored + The source column + The row version information + Whether or not this parameter is for comparing NULL's + The intial value to assign the parameter + + + + Constructs an unnamed parameter of the specified type and size + + The data type + The size of the parameter + + + + Constructs an unnamed parameter of the specified type, size, and source column + + The data type + The size of the parameter + The source column + + + + Constructs an unnamed parameter of the specified type, size, source column and row version + + The data type + The size of the parameter + The source column + The row version information + + + + Resets the DbType of the parameter so it can be inferred from the value + + + + + Clones a parameter + + A new, unassociated SQLiteParameter + + + + Whether or not the parameter can contain a null value + + + + + Returns the datatype of the parameter + + + + + Supports only input parameters + + + + + Returns the parameter name + + + + + Returns the size of the parameter + + + + + Gets/sets the source column + + + + + Used by DbCommandBuilder to determine the mapping for nullable fields + + + + + Gets and sets the row version + + + + + Gets and sets the parameter value. If no datatype was specified, the datatype will assume the type from the value given. + + + + + SQLite implementation of DbParameterCollection. + + + + + The underlying command to which this collection belongs + + + + + The internal array of parameters in this collection + + + + + Determines whether or not all parameters have been bound to their statement(s) + + + + + Initializes the collection + + The command to which the collection belongs + + + + Retrieves an enumerator for the collection + + An enumerator for the underlying array + + + + Adds a parameter to the collection + + The parameter name + The data type + The size of the value + The source column + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter name + The data type + The size of the value + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter name + The data type + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter to add + A zero-based index of where the parameter is located in the array + + + + Adds a parameter to the collection + + The parameter to add + A zero-based index of where the parameter is located in the array + + + + Adds a named/unnamed parameter and its value to the parameter collection. + + Name of the parameter, or null to indicate an unnamed parameter + The initial value of the parameter + Returns the SQLiteParameter object created during the call. + + + + Adds an array of parameters to the collection + + The array of parameters to add + + + + Adds an array of parameters to the collection + + The array of parameters to add + + + + Clears the array and resets the collection + + + + + Determines if the named parameter exists in the collection + + The name of the parameter to check + True if the parameter is in the collection + + + + Determines if the parameter exists in the collection + + The SQLiteParameter to check + True if the parameter is in the collection + + + + Not implemented + + + + + + + Retrieve a parameter by name from the collection + + The name of the parameter to fetch + A DbParameter object + + + + Retrieves a parameter by its index in the collection + + The index of the parameter to retrieve + A DbParameter object + + + + Returns the index of a parameter given its name + + The name of the parameter to find + -1 if not found, otherwise a zero-based index of the parameter + + + + Returns the index of a parameter + + The parameter to find + -1 if not found, otherwise a zero-based index of the parameter + + + + Inserts a parameter into the array at the specified location + + The zero-based index to insert the parameter at + The parameter to insert + + + + Removes a parameter from the collection + + The parameter to remove + + + + Removes a parameter from the collection given its name + + The name of the parameter to remove + + + + Removes a parameter from the collection given its index + + The zero-based parameter index to remove + + + + Re-assign the named parameter to a new parameter object + + The name of the parameter to replace + The new parameter + + + + Re-assign a parameter at the specified index + + The zero-based index of the parameter to replace + The new parameter + + + + Un-binds all parameters from their statements + + + + + This function attempts to map all parameters in the collection to all statements in a Command. + Since named parameters may span multiple statements, this function makes sure all statements are bound + to the same named parameter. Unnamed parameters are bound in sequence. + + + + + Returns false + + + + + Returns false + + + + + Returns false + + + + + Returns null + + + + + Returns a count of parameters in the collection + + + + + Overloaded to specialize the return value of the default indexer + + Name of the parameter to get/set + The specified named SQLite parameter + + + + Overloaded to specialize the return value of the default indexer + + The index of the parameter to get/set + The specified SQLite parameter + + + + Represents a single SQL statement in SQLite. + + + + + The underlying SQLite object this statement is bound to + + + + + The command text of this SQL statement + + + + + The actual statement pointer + + + + + An index from which unnamed parameters begin + + + + + Names of the parameters as SQLite understands them to be + + + + + Parameters for this statement + + + + + Command this statement belongs to (if any) + + + + + The flags associated with the parent connection object. + + + + + Initializes the statement and attempts to get all information about parameters in the statement + + The base SQLite object + The flags associated with the parent connection object + The statement + The command text for this statement + The previous command in a multi-statement command + + + + Disposes and finalizes the statement + + + + + If the underlying database connection is open, fetches the number of changed rows + resulting from the most recent query; otherwise, does nothing. + + + The number of changes when true is returned. + Undefined if false is returned. + + Non-zero if the number of changed rows was fetched. + + + + Called by SQLiteParameterCollection, this function determines if the specified parameter name belongs to + this statement, and if so, keeps a reference to the parameter so it can be bound later. + + The parameter name to map + The parameter to assign it + + + + Bind all parameters, making sure the caller didn't miss any + + + + + Attempts to convert an arbitrary object to the Boolean data type. + Null object values are converted to false. Throws a SQLiteException + upon failure. + + The object value to convert. + The format provider to use. + The converted boolean value. + + + + Perform the bind operation for an individual parameter + + The index of the parameter to bind + The parameter we're binding + + + + SQLite implementation of DbTransaction. + + + + + The connection to which this transaction is bound + + + + + Constructs the transaction object, binding it to the supplied connection + + The connection to open a transaction on + TRUE to defer the writelock, or FALSE to lock immediately + + + + Disposes the transaction. If it is currently active, any changes are rolled back. + + + + + Commits the current transaction. + + + + + Rolls back the active transaction. + + + + + Returns the underlying connection to which this transaction applies. + + + + + Forwards to the local Connection property + + + + + Gets the isolation level of the transaction. SQLite only supports Serializable transactions. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to <?xml version="1.0" standalone="yes"?> + <DocumentElement> + <DataTypes> + <TypeName>smallint</TypeName> + <ProviderDbType>10</ProviderDbType> + <ColumnSize>5</ColumnSize> + <DataType>System.Int16</DataType> + <CreateFormat>smallint</CreateFormat> + <IsAutoIncrementable>false</IsAutoIncrementable> + <IsCaseSensitive>false</IsCaseSensitive> + <IsFixedLength>true</IsFixedLength> + <IsFixedPrecisionScale>true</IsFixedPrecisionScale> + <IsLong>false</IsLong> + <IsNullable>true</ [rest of string was truncated]";. + + + + + Looks up a localized string similar to ALL,ALTER,AND,AS,AUTOINCREMENT,BETWEEN,BY,CASE,CHECK,COLLATE,COMMIT,CONSTRAINT,CREATE,CROSS,DEFAULT,DEFERRABLE,DELETE,DISTINCT,DROP,ELSE,ESCAPE,EXCEPT,FOREIGN,FROM,FULL,GROUP,HAVING,IN,INDEX,INNER,INSERT,INTERSECT,INTO,IS,ISNULL,JOIN,LEFT,LIMIT,NATURAL,NOT,NOTNULL,NULL,ON,OR,ORDER,OUTER,PRIMARY,REFERENCES,RIGHT,ROLLBACK,SELECT,SET,TABLE,THEN,TO,TRANSACTION,UNION,UNIQUE,UPDATE,USING,VALUES,WHEN,WHERE. + + + + + Looks up a localized string similar to <?xml version="1.0" encoding="utf-8" ?> + <DocumentElement> + <MetaDataCollections> + <CollectionName>MetaDataCollections</CollectionName> + <NumberOfRestrictions>0</NumberOfRestrictions> + <NumberOfIdentifierParts>0</NumberOfIdentifierParts> + </MetaDataCollections> + <MetaDataCollections> + <CollectionName>DataSourceInformation</CollectionName> + <NumberOfRestrictions>0</NumberOfRestrictions> + <NumberOfIdentifierParts>0</NumberOfIdentifierParts> + </MetaDataCollections> + <MetaDataC [rest of string was truncated]";. + + + + + The name of the environment variable containing the processor + architecture of the current process. + + + + + This is the P/Invoke method that wraps the native Win32 LoadLibrary + function. See the MSDN documentation for full details on what it + does. + + + The name of the executable library. + + + The native module handle upon success -OR- IntPtr.Zero on failure. + + + + + This lock is used to protect the static _SQLiteModule and + processorArchitecturePlatforms fields, below. + + + + + Stores the mappings between processor architecture names and platform + names. + + + + + The native module handle for the native SQLite library or the value + IntPtr.Zero. + + + + + For now, this method simply calls the Initialize method. + + + + + Attempts to initialize this class by pre-loading the native SQLite + library for the processor architecture of the current process. + + + + + Queries and returns the base directory of the current application + domain. + + + The base directory for the current application domain -OR- null if it + cannot be determined. + + + + + Determines if the dynamic link library file name requires a suffix + and adds it if necessary. + + + The original dynamic link library file name to inspect. + + + The dynamic link library file name, possibly modified to include an + extension. + + + + + Queries and returns the processor architecture of the current + process. + + + The processor architecture of the current process -OR- null if it + cannot be determined. + + + + + Given the processor architecture, returns the name of the platform. + + + The processor architecture to be translated to a platform name. + + + The platform name for the specified processor architecture -OR- null + if it cannot be determined. + + + + + Attempts to load the native SQLite library based on the specified + directory and processor architecture. + + + The base directory to use, null for default (the base directory of + the current application domain). This directory should contain the + processor architecture specific sub-directories. + + + The requested processor architecture, null for default (the + processor architecture of the current process). This caller should + almost always specify null for this parameter. + + + The native module handle as returned by LoadLibrary -OR- IntPtr.Zero + if the loading fails for any reason. + + + + + This class represents a context from the SQLite core library that can + be passed to the sqlite3_result_*() and associated functions. + + + + + This interface represents a native handle provided by the SQLite core + library. + + + + + The native handle value. + + + + + The native context handle. + + + + + Constructs an instance of this class using the specified native + context handle. + + + The native context handle to use. + + + + + Sets the context result to NULL. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to the specified + value. + + + The value to use. This value will be + converted to the UTF-8 encoding prior to being used. + + + + + Sets the context result to the specified + value containing an error message. + + + The value containing the error message text. + This value will be converted to the UTF-8 encoding prior to being + used. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to contain the error code SQLITE_TOOBIG. + + + + + Sets the context result to contain the error code SQLITE_NOMEM. + + + + + Sets the context result to the specified array + value. + + + The array value to use. + + + + + Sets the context result to a BLOB of zeros of the specified size. + + + The number of zero bytes to use for the BLOB context result. + + + + + Sets the context result to the specified . + + + The to use. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + This class represents a value from the SQLite core library that can be + passed to the sqlite3_value_*() and associated functions. + + + + + The native value handle. + + + + + Constructs an instance of this class using the specified native + value handle. + + + The native value handle to use. + + + + + Invalidates the native value handle, thereby preventing further + access to it from this object instance. + + + + + Converts a logical array of native pointers to native sqlite3_value + structures into a managed array of + object instances. + + + The number of elements in the logical array of native sqlite3_value + structures. + + + The native pointer to the logical array of native sqlite3_value + structures to convert. + + + The managed array of object instances or + null upon failure. + + + + + Gets and returns the type affinity associated with this value. + + + The type affinity associated with this value. + + + + + Gets and returns the number of bytes associated with this value, if + it refers to a UTF-8 encoded string. + + + The number of bytes associated with this value. The returned value + may be zero. + + + + + Gets and returns the associated with this + value. + + + The associated with this value. + + + + + Gets and returns the associated with + this value. + + + The associated with this value. + + + + + Gets and returns the associated with this + value. + + + The associated with this value. + + + + + Gets and returns the associated with this + value. + + + The associated with this value. The value is + converted from the UTF-8 encoding prior to being returned. + + + + + Gets and returns the array associated with this + value. + + + The array associated with this value. + + + + + Uses the native value handle to obtain and store the managed value + for this object instance, thus saving it for later use. The type + of the managed value is determined by the type affinity of the + native value. If the type affinity is not recognized by this + method, no work is done and false is returned. + + + Non-zero if the native value was persisted successfully. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + Returns non-zero if the native SQLite value has been successfully + persisted as a managed value within this object instance (i.e. the + property may then be read successfully). + + + + + If the managed value for this object instance is available (i.e. it + has been previously persisted via the ) method, + that value is returned; otherwise, an exception is thrown. The + returned value may be null. + + + + + These are the allowed values for the operators that are part of a + constraint term in the WHERE clause of a query that uses a virtual + table. + + + + + This value represents the equality operator. + + + + + This value represents the greater than operator. + + + + + This value represents the less than or equal to operator. + + + + + This value represents the less than operator. + + + + + This value represents the greater than or equal to operator. + + + + + This value represents the MATCH operator. + + + + + This class represents the native sqlite3_index_constraint structure + from the SQLite core library. + + + + + Constructs an instance of this class using the specified native + sqlite3_index_constraint structure. + + + The native sqlite3_index_constraint structure to use. + + + + + Constructs an instance of this class using the specified field + values. + + + Column on left-hand side of constraint. + + + Constraint operator (). + + + True if this constraint is usable. + + + Used internally - + should ignore. + + + + + Column on left-hand side of constraint. + + + + + Constraint operator (). + + + + + True if this constraint is usable. + + + + + Used internally - + should ignore. + + + + + This class represents the native sqlite3_index_orderby structure from + the SQLite core library. + + + + + Constructs an instance of this class using the specified native + sqlite3_index_orderby structure. + + + The native sqlite3_index_orderby structure to use. + + + + + Constructs an instance of this class using the specified field + values. + + + Column number. + + + True for DESC. False for ASC. + + + + + Column number. + + + + + True for DESC. False for ASC. + + + + + This class represents the native sqlite3_index_constraint_usage + structure from the SQLite core library. + + + + + Constructs an instance of this class using the specified native + sqlite3_index_constraint_usage structure. + + + The native sqlite3_index_constraint_usage structure to use. + + + + + Constructs an instance of this class using the specified field + values. + + + If greater than 0, constraint is part of argv to xFilter. + + + Do not code a test for this constraint. + + + + + If greater than 0, constraint is part of argv to xFilter. + + + + + Do not code a test for this constraint. + + + + + This class represents the various inputs provided by the SQLite core + library to the method. + + + + + Constructs an instance of this class. + + + The number of instances to + pre-allocate space for. + + + The number of instances to + pre-allocate space for. + + + + + An array of object instances, + each containing information supplied by the SQLite core library. + + + + + An array of object instances, + each containing information supplied by the SQLite core library. + + + + + This class represents the various outputs provided to the SQLite core + library by the method. + + + + + Constructs an instance of this class. + + + The number of instances + to pre-allocate space for. + + + + + Determines if the native estimatedRows field can be used, based on + the available version of the SQLite core library. + + + Non-zero if the property is supported + by the SQLite core library. + + + + + An array of object + instances, each containing information to be supplied to the SQLite + core library. + + + + + Number used to help identify the selected index. This value will + later be provided to the + method. + + + + + String used to help identify the selected index. This value will + later be provided to the + method. + + + + + Non-zero if the index string must be freed by the SQLite core + library. + + + + + True if output is already ordered. + + + + + Estimated cost of using this index. Using a null value here + indicates that a default estimated cost value should be used. + + + + + Estimated number of rows returned. Using a null value here + indicates that a default estimated rows value should be used. + + + + + This class represents the various inputs and outputs used with the + method. + + + + + Constructs an instance of this class. + + + The number of (and + ) instances to + pre-allocate space for. + + + The number of instances to + pre-allocate space for. + + + + + Converts a native pointer to a native sqlite3_index_info structure + into a new object instance. + + + The native pointer to the native sqlite3_index_info structure to + convert. + + + Upon success, this parameter will be modified to contain the newly + created object instance. + + + + + Populates the outputs of a pre-allocated native sqlite3_index_info + structure using an existing object + instance. + + + The existing object instance containing + the output data to use. + + + The native pointer to the pre-allocated native sqlite3_index_info + structure. + + + + + The object instance containing + the inputs to the + method. + + + + + The object instance containing + the outputs from the + method. + + + + + This class represents a managed virtual table implementation. It is + not sealed and should be used as the base class for any user-defined + virtual table classes implemented in managed code. + + + + + The index within the array of strings provided to the + and + methods containing the + name of the module implementing this virtual table. + + + + + The index within the array of strings provided to the + and + methods containing the + name of the database containing this virtual table. + + + + + The index within the array of strings provided to the + and + methods containing the + name of the virtual table. + + + + + Constructs an instance of this class. + + + The original array of strings provided to the + and + methods. + + + + + This method should normally be used by the + method in order to + perform index selection based on the constraints provided by the + SQLite core library. + + + The object instance containing all the + data for the inputs and outputs relating to index selection. + + + Non-zero upon success. + + + + + Attempts to record the renaming of the virtual table associated + with this object instance. + + + The new name for the virtual table. + + + Non-zero upon success. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being called + from the finalizer. + + + + + Finalizes this object instance. + + + + + The original array of strings provided to the + and + methods. + + + + + The name of the module implementing this virtual table. + + + + + The name of the database containing this virtual table. + + + + + The name of the virtual table. + + + + + The object instance containing all the + data for the inputs and outputs relating to the most recent index + selection. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + This class represents a managed virtual table cursor implementation. + It is not sealed and should be used as the base class for any + user-defined virtual table cursor classes implemented in managed code. + + + + + This value represents an invalid integer row sequence number. + + + + + The field holds the integer row sequence number for the current row + pointed to by this cursor object instance. + + + + + Constructs an instance of this class. + + + The object instance associated + with this object instance. + + + + + Constructs an instance of this class. + + + + + Attempts to persist the specified object + instances in order to make them available after the + method returns. + + + The array of object instances to be + persisted. + + + The number of object instances that were + successfully persisted. + + + + + This method should normally be used by the + method in order to + perform filtering of the result rows and/or to record the filtering + criteria provided by the SQLite core library. + + + Number used to help identify the selected index. + + + String used to help identify the selected index. + + + The values corresponding to each column in the selected index. + + + + + Determines the integer row sequence number for the current row. + + + The integer row sequence number for the current row -OR- zero if + it cannot be determined. + + + + + Adjusts the integer row sequence number so that it refers to the + next row. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being called + from the finalizer. + + + + + Finalizes this object instance. + + + + + The object instance associated + with this object instance. + + + + + Number used to help identify the selected index. This value will + be set via the method. + + + + + String used to help identify the selected index. This value will + be set via the method. + + + + + The values used to filter the rows returned via this cursor object + instance. This value will be set via the + method. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + This interface represents a virtual table implementation written in + native code. + + + + + + This method is called to create a new instance of a virtual table + in response to a CREATE VIRTUAL TABLE statement. The db parameter + is a pointer to the SQLite database connection that is executing + the CREATE VIRTUAL TABLE statement. The pAux argument is the copy + of the client data pointer that was the fourth argument to the + sqlite3_create_module() or sqlite3_create_module_v2() call that + registered the virtual table module. The argv parameter is an + array of argc pointers to null terminated strings. The first + string, argv[0], is the name of the module being invoked. The + module name is the name provided as the second argument to + sqlite3_create_module() and as the argument to the USING clause of + the CREATE VIRTUAL TABLE statement that is running. The second, + argv[1], is the name of the database in which the new virtual table + is being created. The database name is "main" for the primary + database, or "temp" for TEMP database, or the name given at the + end of the ATTACH statement for attached databases. The third + element of the array, argv[2], is the name of the new virtual + table, as specified following the TABLE keyword in the CREATE + VIRTUAL TABLE statement. If present, the fourth and subsequent + strings in the argv[] array report the arguments to the module name + in the CREATE VIRTUAL TABLE statement. + + + The job of this method is to construct the new virtual table object + (an sqlite3_vtab object) and return a pointer to it in *ppVTab. + + + As part of the task of creating a new sqlite3_vtab structure, this + method must invoke sqlite3_declare_vtab() to tell the SQLite core + about the columns and datatypes in the virtual table. The + sqlite3_declare_vtab() API has the following prototype: + + + + int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable) + + + + The first argument to sqlite3_declare_vtab() must be the same + database connection pointer as the first parameter to this method. + The second argument to sqlite3_declare_vtab() must a + zero-terminated UTF-8 string that contains a well-formed CREATE + TABLE statement that defines the columns in the virtual table and + their data types. The name of the table in this CREATE TABLE + statement is ignored, as are all constraints. Only the column names + and datatypes matter. The CREATE TABLE statement string need not to + be held in persistent memory. The string can be deallocated and/or + reused as soon as the sqlite3_declare_vtab() routine returns. + + + + The native database connection handle. + + + The original native pointer value that was provided to the + sqlite3_create_module(), sqlite3_create_module_v2() or + sqlite3_create_disposable_module() functions. + + + The number of arguments from the CREATE VIRTUAL TABLE statement. + + + The array of string arguments from the CREATE VIRTUAL TABLE + statement. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab derived structure. + + + Upon failure, this parameter must be modified to point to the error + message, with the underlying memory having been obtained from the + sqlite3_malloc() function. + + + A standard SQLite return code. + + + + + + The xConnect method is very similar to xCreate. It has the same + parameters and constructs a new sqlite3_vtab structure just like + xCreate. And it must also call sqlite3_declare_vtab() like xCreate. + + + The difference is that xConnect is called to establish a new + connection to an existing virtual table whereas xCreate is called + to create a new virtual table from scratch. + + + The xCreate and xConnect methods are only different when the + virtual table has some kind of backing store that must be + initialized the first time the virtual table is created. The + xCreate method creates and initializes the backing store. The + xConnect method just connects to an existing backing store. + + + As an example, consider a virtual table implementation that + provides read-only access to existing comma-separated-value (CSV) + files on disk. There is no backing store that needs to be created + or initialized for such a virtual table (since the CSV files + already exist on disk) so the xCreate and xConnect methods will be + identical for that module. + + + Another example is a virtual table that implements a full-text + index. The xCreate method must create and initialize data + structures to hold the dictionary and posting lists for that index. + The xConnect method, on the other hand, only has to locate and use + an existing dictionary and posting lists that were created by a + prior xCreate call. + + + The xConnect method must return SQLITE_OK if it is successful in + creating the new virtual table, or SQLITE_ERROR if it is not + successful. If not successful, the sqlite3_vtab structure must not + be allocated. An error message may optionally be returned in *pzErr + if unsuccessful. Space to hold the error message string must be + allocated using an SQLite memory allocation function like + sqlite3_malloc() or sqlite3_mprintf() as the SQLite core will + attempt to free the space using sqlite3_free() after the error has + been reported up to the application. + + + The xConnect method is required for every virtual table + implementation, though the xCreate and xConnect pointers of the + sqlite3_module object may point to the same function the virtual + table does not need to initialize backing store. + + + + The native database connection handle. + + + The original native pointer value that was provided to the + sqlite3_create_module(), sqlite3_create_module_v2() or + sqlite3_create_disposable_module() functions. + + + The number of arguments from the CREATE VIRTUAL TABLE statement. + + + The array of string arguments from the CREATE VIRTUAL TABLE + statement. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab derived structure. + + + Upon failure, this parameter must be modified to point to the error + message, with the underlying memory having been obtained from the + sqlite3_malloc() function. + + + A standard SQLite return code. + + + + + + SQLite uses the xBestIndex method of a virtual table module to + determine the best way to access the virtual table. The xBestIndex + method has a prototype like this: + + + int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*); + + + The SQLite core communicates with the xBestIndex method by filling + in certain fields of the sqlite3_index_info structure and passing a + pointer to that structure into xBestIndex as the second parameter. + The xBestIndex method fills out other fields of this structure + which forms the reply. The sqlite3_index_info structure looks like + this: + + + struct sqlite3_index_info { + /* Inputs */ + const int nConstraint; /* Number of entries in aConstraint */ + const struct sqlite3_index_constraint { + int iColumn; /* Column on left-hand side of + * constraint */ + unsigned char op; /* Constraint operator */ + unsigned char usable; /* True if this constraint is usable */ + int iTermOffset; /* Used internally - xBestIndex should + * ignore */ + } *const aConstraint; /* Table of WHERE clause constraints */ + const int nOrderBy; /* Number of terms in the ORDER BY + * clause */ + const struct sqlite3_index_orderby { + int iColumn; /* Column number */ + unsigned char desc; /* True for DESC. False for ASC. */ + } *const aOrderBy; /* The ORDER BY clause */ + /* Outputs */ + struct sqlite3_index_constraint_usage { + int argvIndex; /* if greater than zero, constraint is + * part of argv to xFilter */ + unsigned char omit; /* Do not code a test for this + * constraint */ + } *const aConstraintUsage; + int idxNum; /* Number used to identify the index */ + char *idxStr; /* String, possibly obtained from + * sqlite3_malloc() */ + int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if + * true */ + int orderByConsumed; /* True if output is already ordered */ + double estimatedCost; /* Estimated cost of using this index */ + }; + + + In addition, there are some defined constants: + + + #define SQLITE_INDEX_CONSTRAINT_EQ 2 + #define SQLITE_INDEX_CONSTRAINT_GT 4 + #define SQLITE_INDEX_CONSTRAINT_LE 8 + #define SQLITE_INDEX_CONSTRAINT_LT 16 + #define SQLITE_INDEX_CONSTRAINT_GE 32 + #define SQLITE_INDEX_CONSTRAINT_MATCH 64 + + + The SQLite core calls the xBestIndex method when it is compiling a + query that involves a virtual table. In other words, SQLite calls + this method when it is running sqlite3_prepare() or the equivalent. + By calling this method, the SQLite core is saying to the virtual + table that it needs to access some subset of the rows in the + virtual table and it wants to know the most efficient way to do + that access. The xBestIndex method replies with information that + the SQLite core can then use to conduct an efficient search of the + virtual table. + + + While compiling a single SQL query, the SQLite core might call + xBestIndex multiple times with different settings in + sqlite3_index_info. The SQLite core will then select the + combination that appears to give the best performance. + + + Before calling this method, the SQLite core initializes an instance + of the sqlite3_index_info structure with information about the + query that it is currently trying to process. This information + derives mainly from the WHERE clause and ORDER BY or GROUP BY + clauses of the query, but also from any ON or USING clauses if the + query is a join. The information that the SQLite core provides to + the xBestIndex method is held in the part of the structure that is + marked as "Inputs". The "Outputs" section is initialized to zero. + + + The information in the sqlite3_index_info structure is ephemeral + and may be overwritten or deallocated as soon as the xBestIndex + method returns. If the xBestIndex method needs to remember any part + of the sqlite3_index_info structure, it should make a copy. Care + must be take to store the copy in a place where it will be + deallocated, such as in the idxStr field with needToFreeIdxStr set + to 1. + + + Note that xBestIndex will always be called before xFilter, since + the idxNum and idxStr outputs from xBestIndex are required inputs + to xFilter. However, there is no guarantee that xFilter will be + called following a successful xBestIndex. + + + The xBestIndex method is required for every virtual table + implementation. + + + 2.3.1 Inputs + + + The main thing that the SQLite core is trying to communicate to the + virtual table is the constraints that are available to limit the + number of rows that need to be searched. The aConstraint[] array + contains one entry for each constraint. There will be exactly + nConstraint entries in that array. + + + Each constraint will correspond to a term in the WHERE clause or in + a USING or ON clause that is of the form + + + column OP EXPR + + + Where "column" is a column in the virtual table, OP is an operator + like "=" or "<", and EXPR is an arbitrary expression. So, for + example, if the WHERE clause contained a term like this: + + + a = 5 + + + Then one of the constraints would be on the "a" column with + operator "=" and an expression of "5". Constraints need not have a + literal representation of the WHERE clause. The query optimizer + might make transformations to the WHERE clause in order to extract + as many constraints as it can. So, for example, if the WHERE clause + contained something like this: + + + x BETWEEN 10 AND 100 AND 999>y + + + The query optimizer might translate this into three separate + constraints: + + + x >= 10 + x <= 100 + y < 999 + + + For each constraint, the aConstraint[].iColumn field indicates + which column appears on the left-hand side of the constraint. The + first column of the virtual table is column 0. The rowid of the + virtual table is column -1. The aConstraint[].op field indicates + which operator is used. The SQLITE_INDEX_CONSTRAINT_* constants map + integer constants into operator values. Columns occur in the order + they were defined by the call to sqlite3_declare_vtab() in the + xCreate or xConnect method. Hidden columns are counted when + determining the column index. + + + The aConstraint[] array contains information about all constraints + that apply to the virtual table. But some of the constraints might + not be usable because of the way tables are ordered in a join. The + xBestIndex method must therefore only consider constraints that + have an aConstraint[].usable flag which is true. + + + In addition to WHERE clause constraints, the SQLite core also tells + the xBestIndex method about the ORDER BY clause. (In an aggregate + query, the SQLite core might put in GROUP BY clause information in + place of the ORDER BY clause information, but this fact should not + make any difference to the xBestIndex method.) If all terms of the + ORDER BY clause are columns in the virtual table, then nOrderBy + will be the number of terms in the ORDER BY clause and the + aOrderBy[] array will identify the column for each term in the + order by clause and whether or not that column is ASC or DESC. + + + 2.3.2 Outputs + + + Given all of the information above, the job of the xBestIndex + method it to figure out the best way to search the virtual table. + + + The xBestIndex method fills the idxNum and idxStr fields with + information that communicates an indexing strategy to the xFilter + method. The information in idxNum and idxStr is arbitrary as far as + the SQLite core is concerned. The SQLite core just copies the + information through to the xFilter method. Any desired meaning can + be assigned to idxNum and idxStr as long as xBestIndex and xFilter + agree on what that meaning is. + + + The idxStr value may be a string obtained from an SQLite memory + allocation function such as sqlite3_mprintf(). If this is the case, + then the needToFreeIdxStr flag must be set to true so that the + SQLite core will know to call sqlite3_free() on that string when it + has finished with it, and thus avoid a memory leak. + + + If the virtual table will output rows in the order specified by the + ORDER BY clause, then the orderByConsumed flag may be set to true. + If the output is not automatically in the correct order then + orderByConsumed must be left in its default false setting. This + will indicate to the SQLite core that it will need to do a separate + sorting pass over the data after it comes out of the virtual table. + + + The estimatedCost field should be set to the estimated number of + disk access operations required to execute this query against the + virtual table. The SQLite core will often call xBestIndex multiple + times with different constraints, obtain multiple cost estimates, + then choose the query plan that gives the lowest estimate. + + + The aConstraintUsage[] array contains one element for each of the + nConstraint constraints in the inputs section of the + sqlite3_index_info structure. The aConstraintUsage[] array is used + by xBestIndex to tell the core how it is using the constraints. + + + The xBestIndex method may set aConstraintUsage[].argvIndex entries + to values greater than one. Exactly one entry should be set to 1, + another to 2, another to 3, and so forth up to as many or as few as + the xBestIndex method wants. The EXPR of the corresponding + constraints will then be passed in as the argv[] parameters to + xFilter. + + + For example, if the aConstraint[3].argvIndex is set to 1, then when + xFilter is called, the argv[0] passed to xFilter will have the EXPR + value of the aConstraint[3] constraint. + + + By default, the SQLite core double checks all constraints on each + row of the virtual table that it receives. If such a check is + redundant, the xBestFilter method can suppress that double-check by + setting aConstraintUsage[].omit. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The native pointer to the sqlite3_index_info structure. + + + A standard SQLite return code. + + + + + + This method releases a connection to a virtual table. Only the + sqlite3_vtab object is destroyed. The virtual table is not + destroyed and any backing store associated with the virtual table + persists. This method undoes the work of xConnect. + + + This method is a destructor for a connection to the virtual table. + Contrast this method with xDestroy. The xDestroy is a destructor + for the entire virtual table. + + + The xDisconnect method is required for every virtual table + implementation, though it is acceptable for the xDisconnect and + xDestroy methods to be the same function if that makes sense for + the particular virtual table. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method releases a connection to a virtual table, just like the + xDisconnect method, and it also destroys the underlying table + implementation. This method undoes the work of xCreate. + + + The xDisconnect method is called whenever a database connection + that uses a virtual table is closed. The xDestroy method is only + called when a DROP TABLE statement is executed against the virtual + table. + + + The xDestroy method is required for every virtual table + implementation, though it is acceptable for the xDisconnect and + xDestroy methods to be the same function if that makes sense for + the particular virtual table. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + The xOpen method creates a new cursor used for accessing (read + and/or writing) a virtual table. A successful invocation of this + method will allocate the memory for the sqlite3_vtab_cursor (or a + subclass), initialize the new object, and make *ppCursor point to + the new object. The successful call then returns SQLITE_OK. + + + For every successful call to this method, the SQLite core will + later invoke the xClose method to destroy the allocated cursor. + + + The xOpen method need not initialize the pVtab field of the + sqlite3_vtab_cursor structure. The SQLite core will take care of + that chore automatically. + + + A virtual table implementation must be able to support an arbitrary + number of simultaneously open cursors. + + + When initially opened, the cursor is in an undefined state. The + SQLite core will invoke the xFilter method on the cursor prior to + any attempt to position or read from the cursor. + + + The xOpen method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab derived structure. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab_cursor derived structure. + + + A standard SQLite return code. + + + + + + The xClose method closes a cursor previously opened by xOpen. The + SQLite core will always call xClose once for each cursor opened + using xOpen. + + + This method must release all resources allocated by the + corresponding xOpen call. The routine will not be called again even + if it returns an error. The SQLite core will not use the + sqlite3_vtab_cursor again after it has been closed. + + + The xClose method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + A standard SQLite return code. + + + + + + This method begins a search of a virtual table. The first argument + is a cursor opened by xOpen. The next two argument define a + particular search index previously chosen by xBestIndex. The + specific meanings of idxNum and idxStr are unimportant as long as + xFilter and xBestIndex agree on what that meaning is. + + + The xBestIndex function may have requested the values of certain + expressions using the aConstraintUsage[].argvIndex values of the + sqlite3_index_info structure. Those values are passed to xFilter + using the argc and argv parameters. + + + If the virtual table contains one or more rows that match the + search criteria, then the cursor must be left point at the first + row. Subsequent calls to xEof must return false (zero). If there + are no rows match, then the cursor must be left in a state that + will cause the xEof to return true (non-zero). The SQLite engine + will use the xColumn and xRowid methods to access that row content. + The xNext method will be used to advance to the next row. + + + This method must return SQLITE_OK if successful, or an sqlite error + code if an error occurs. + + + The xFilter method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + Number used to help identify the selected index. + + + The native pointer to the UTF-8 encoded string containing the + string used to help identify the selected index. + + + The number of native pointers to sqlite3_value structures specified + in . + + + An array of native pointers to sqlite3_value structures containing + filtering criteria for the selected index. + + + A standard SQLite return code. + + + + + + The xNext method advances a virtual table cursor to the next row of + a result set initiated by xFilter. If the cursor is already + pointing at the last row when this routine is called, then the + cursor no longer points to valid data and a subsequent call to the + xEof method must return true (non-zero). If the cursor is + successfully advanced to another row of content, then subsequent + calls to xEof must return false (zero). + + + This method must return SQLITE_OK if successful, or an sqlite error + code if an error occurs. + + + The xNext method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + A standard SQLite return code. + + + + + + The xEof method must return false (zero) if the specified cursor + currently points to a valid row of data, or true (non-zero) + otherwise. This method is called by the SQL engine immediately + after each xFilter and xNext invocation. + + + The xEof method is required for every virtual table implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + Non-zero if no more rows are available; zero otherwise. + + + + + + The SQLite core invokes this method in order to find the value for + the N-th column of the current row. N is zero-based so the first + column is numbered 0. The xColumn method may return its result back + to SQLite using one of the following interface: + + + sqlite3_result_blob() + sqlite3_result_double() + sqlite3_result_int() + sqlite3_result_int64() + sqlite3_result_null() + sqlite3_result_text() + sqlite3_result_text16() + sqlite3_result_text16le() + sqlite3_result_text16be() + sqlite3_result_zeroblob() + + + If the xColumn method implementation calls none of the functions + above, then the value of the column defaults to an SQL NULL. + + + To raise an error, the xColumn method should use one of the + result_text() methods to set the error message text, then return an + appropriate error code. The xColumn method must return SQLITE_OK on + success. + + + The xColumn method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + The native pointer to the sqlite3_context structure to be used + for returning the specified column value to the SQLite core + library. + + + The zero-based index corresponding to the column containing the + value to be returned. + + + A standard SQLite return code. + + + + + + A successful invocation of this method will cause *pRowid to be + filled with the rowid of row that the virtual table cursor pCur is + currently pointing at. This method returns SQLITE_OK on success. It + returns an appropriate error code on failure. + + + The xRowid method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the current row for the specified cursor. + + + A standard SQLite return code. + + + + + + All changes to a virtual table are made using the xUpdate method. + This one method can be used to insert, delete, or update. + + + The argc parameter specifies the number of entries in the argv + array. The value of argc will be 1 for a pure delete operation or + N+2 for an insert or replace or update where N is the number of + columns in the table. In the previous sentence, N includes any + hidden columns. + + + Every argv entry will have a non-NULL value in C but may contain + the SQL value NULL. In other words, it is always true that + argv[i]!=0 for i between 0 and argc-1. However, it might be the + case that sqlite3_value_type(argv[i])==SQLITE_NULL. + + + The argv[0] parameter is the rowid of a row in the virtual table + to be deleted. If argv[0] is an SQL NULL, then no deletion occurs. + + + The argv[1] parameter is the rowid of a new row to be inserted into + the virtual table. If argv[1] is an SQL NULL, then the + implementation must choose a rowid for the newly inserted row. + Subsequent argv[] entries contain values of the columns of the + virtual table, in the order that the columns were declared. The + number of columns will match the table declaration that the + xConnect or xCreate method made using the sqlite3_declare_vtab() + call. All hidden columns are included. + + + When doing an insert without a rowid (argc>1, argv[1] is an SQL + NULL), the implementation must set *pRowid to the rowid of the + newly inserted row; this will become the value returned by the + sqlite3_last_insert_rowid() function. Setting this value in all the + other cases is a harmless no-op; the SQLite engine ignores the + *pRowid return value if argc==1 or argv[1] is not an SQL NULL. + + + Each call to xUpdate will fall into one of cases shown below. Note + that references to argv[i] mean the SQL value held within the + argv[i] object, not the argv[i] object itself. + + + argc = 1 + + + The single row with rowid equal to argv[0] is deleted. No + insert occurs. + + + argc > 1 + argv[0] = NULL + + + A new row is inserted with a rowid argv[1] and column + values in argv[2] and following. If argv[1] is an SQL NULL, + the a new unique rowid is generated automatically. + + + argc > 1 + argv[0] ? NULL + argv[0] = argv[1] + + + The row with rowid argv[0] is updated with new values in + argv[2] and following parameters. + + + argc > 1 + argv[0] ? NULL + argv[0] ? argv[1] + + + The row with rowid argv[0] is updated with rowid argv[1] + and new values in argv[2] and following parameters. This + will occur when an SQL statement updates a rowid, as in + the statement: + + + UPDATE table SET rowid=rowid+1 WHERE ...; + + + The xUpdate method must return SQLITE_OK if and only if it is + successful. If a failure occurs, the xUpdate must return an + appropriate error code. On a failure, the pVTab->zErrMsg element + may optionally be replaced with error message text stored in memory + allocated from SQLite using functions such as sqlite3_mprintf() or + sqlite3_malloc(). + + + If the xUpdate method violates some constraint of the virtual table + (including, but not limited to, attempting to store a value of the + wrong datatype, attempting to store a value that is too large or + too small, or attempting to change a read-only value) then the + xUpdate must fail with an appropriate error code. + + + There might be one or more sqlite3_vtab_cursor objects open and in + use on the virtual table instance and perhaps even on the row of + the virtual table when the xUpdate method is invoked. The + implementation of xUpdate must be prepared for attempts to delete + or modify rows of the table out from other existing cursors. If the + virtual table cannot accommodate such changes, the xUpdate method + must return an error code. + + + The xUpdate method is optional. If the xUpdate pointer in the + sqlite3_module for a virtual table is a NULL pointer, then the + virtual table is read-only. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The number of new or modified column values contained in + . + + + The array of native pointers to sqlite3_value structures containing + the new or modified column values, if any. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the row that was inserted, if any. + + + A standard SQLite return code. + + + + + + This method begins a transaction on a virtual table. This is method + is optional. The xBegin pointer of sqlite3_module may be NULL. + + + This method is always followed by one call to either the xCommit or + xRollback method. Virtual table transactions do not nest, so the + xBegin method will not be invoked more than once on a single + virtual table without an intervening call to either xCommit or + xRollback. Multiple calls to other methods can and likely will + occur in between the xBegin and the corresponding xCommit or + xRollback. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method signals the start of a two-phase commit on a virtual + table. This is method is optional. The xSync pointer of + sqlite3_module may be NULL. + + + This method is only invoked after call to the xBegin method and + prior to an xCommit or xRollback. In order to implement two-phase + commit, the xSync method on all virtual tables is invoked prior to + invoking the xCommit method on any virtual table. If any of the + xSync methods fail, the entire transaction is rolled back. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method causes a virtual table transaction to commit. This is + method is optional. The xCommit pointer of sqlite3_module may be + NULL. + + + A call to this method always follows a prior call to xBegin and + xSync. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method causes a virtual table transaction to rollback. This is + method is optional. The xRollback pointer of sqlite3_module may be + NULL. + + + A call to this method always follows a prior call to xBegin. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + This method provides notification that the virtual table + implementation that the virtual table will be given a new name. If + this method returns SQLITE_OK then SQLite renames the table. If + this method returns an error code then the renaming is prevented. + + + The xRename method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The number of arguments to the function being sought. + + + The name of the function being sought. + + + Upon success, this parameter must be modified to contain the + delegate responsible for implementing the specified function. + + + Upon success, this parameter must be modified to contain the + native user-data pointer associated with + . + + + Non-zero if the specified function was found; zero otherwise. + + + + + + This method provides notification that the virtual table + implementation that the virtual table will be given a new name. If + this method returns SQLITE_OK then SQLite renames the table. If + this method returns an error code then the renaming is prevented. + + + The xRename method is required for every virtual table + implementation. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The native pointer to the UTF-8 encoded string containing the new + name for the virtual table. + + + A standard SQLite return code. + + + + + + These methods provide the virtual table implementation an + opportunity to implement nested transactions. They are always + optional and will only be called in SQLite version 3.7.7 and later. + + + When xSavepoint(X,N) is invoked, that is a signal to the virtual + table X that it should save its current state as savepoint N. A + subsequent call to xRollbackTo(X,R) means that the state of the + virtual table should return to what it was when xSavepoint(X,R) was + last called. The call to xRollbackTo(X,R) will invalidate all + savepoints with N>R; none of the invalided savepoints will be + rolled back or released without first being reinitialized by a call + to xSavepoint(). A call to xRelease(X,M) invalidates all savepoints + where N>=M. + + + None of the xSavepoint(), xRelease(), or xRollbackTo() methods will + ever be called except in between calls to xBegin() and either + xCommit() or xRollback(). + + + + The native pointer to the sqlite3_vtab derived structure. + + + This is an integer identifier under which the the current state of + the virtual table should be saved. + + + A standard SQLite return code. + + + + + + These methods provide the virtual table implementation an + opportunity to implement nested transactions. They are always + optional and will only be called in SQLite version 3.7.7 and later. + + + When xSavepoint(X,N) is invoked, that is a signal to the virtual + table X that it should save its current state as savepoint N. A + subsequent call to xRollbackTo(X,R) means that the state of the + virtual table should return to what it was when xSavepoint(X,R) was + last called. The call to xRollbackTo(X,R) will invalidate all + savepoints with N>R; none of the invalided savepoints will be + rolled back or released without first being reinitialized by a call + to xSavepoint(). A call to xRelease(X,M) invalidates all savepoints + where N>=M. + + + None of the xSavepoint(), xRelease(), or xRollbackTo() methods will + ever be called except in between calls to xBegin() and either + xCommit() or xRollback(). + + + + The native pointer to the sqlite3_vtab derived structure. + + + This is an integer used to indicate that any saved states with an + identifier greater than or equal to this should be deleted by the + virtual table. + + + A standard SQLite return code. + + + + + + These methods provide the virtual table implementation an + opportunity to implement nested transactions. They are always + optional and will only be called in SQLite version 3.7.7 and later. + + + When xSavepoint(X,N) is invoked, that is a signal to the virtual + table X that it should save its current state as savepoint N. A + subsequent call to xRollbackTo(X,R) means that the state of the + virtual table should return to what it was when xSavepoint(X,R) was + last called. The call to xRollbackTo(X,R) will invalidate all + savepoints with N>R; none of the invalided savepoints will be + rolled back or released without first being reinitialized by a call + to xSavepoint(). A call to xRelease(X,M) invalidates all savepoints + where N>=M. + + + None of the xSavepoint(), xRelease(), or xRollbackTo() methods will + ever be called except in between calls to xBegin() and either + xCommit() or xRollback(). + + + + The native pointer to the sqlite3_vtab derived structure. + + + This is an integer identifier used to specify a specific saved + state for the virtual table for it to restore itself back to, which + should also have the effect of deleting all saved states with an + integer identifier greater than this one. + + + A standard SQLite return code. + + + + + This interface represents a virtual table implementation written in + managed code. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The object instance containing all the + data for the inputs and outputs relating to index selection. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + Upon success, this parameter must be modified to contain the + object instance associated + with the newly opened virtual table cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Number used to help identify the selected index. + + + String used to help identify the selected index. + + + The values corresponding to each column in the selected index. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Non-zero if no more rows are available; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to be used for + returning the specified column value to the SQLite core library. + + + The zero-based index corresponding to the column containing the + value to be returned. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the current row for the specified cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The array of object instances containing + the new or modified column values, if any. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the row that was inserted, if any. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The number of arguments to the function being sought. + + + The name of the function being sought. + + + Upon success, this parameter must be modified to contain the + object instance responsible for + implementing the specified function. + + + Upon success, this parameter must be modified to contain the + native user-data pointer associated with + . + + + Non-zero if the specified function was found; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The new name for the virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier under which the the current state of + the virtual table should be saved. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer used to indicate that any saved states with an + identifier greater than or equal to this should be deleted by the + virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier used to specify a specific saved + state for the virtual table for it to restore itself back to, which + should also have the effect of deleting all saved states with an + integer identifier greater than this one. + + + A standard SQLite return code. + + + + + Returns non-zero if the schema for the virtual table has been + declared. + + + + + Returns the name of the module as it was registered with the SQLite + core library. + + + + + This class contains static methods that are used to allocate, + manipulate, and free native memory provided by the SQLite core library. + + + + + Allocates at least the specified number of bytes of native memory + via the SQLite core library sqlite3_malloc() function and returns + the resulting native pointer. + + + The number of bytes to allocate. + + + The native pointer that points to a block of memory of at least the + specified size -OR- if the memory could + not be allocated. + + + + + Gets and returns the actual size of the specified memory block that + was previously obtained from the method. + + + The native pointer to the memory block previously obtained from the + method. + + + The actual size, in bytes, of the memory block specified via the + native pointer. + + + + + Frees a memory block previously obtained from the + method. + + + The native pointer to the memory block previously obtained from the + method. + + + + + This class contains static methods that are used to deal with native + UTF-8 string pointers to be used with the SQLite core library. + + + + + This is the maximum possible length for the native UTF-8 encoded + strings used with the SQLite core library. + + + + + This is the object instance used to handle + conversions from/to UTF-8. + + + + + Converts the specified managed string into the UTF-8 encoding and + returns the array of bytes containing its representation in that + encoding. + + + The managed string to convert. + + + The array of bytes containing the representation of the managed + string in the UTF-8 encoding or null upon failure. + + + + + Converts the specified array of bytes representing a string in the + UTF-8 encoding and returns a managed string. + + + The array of bytes to convert. + + + The managed string or null upon failure. + + + + + Probes a native pointer to a string in the UTF-8 encoding for its + terminating NUL character, within the specified length limit. + + + The native NUL-terminated string pointer. + + + The maximum length of the native string, in bytes. + + + The length of the native string, in bytes -OR- zero if the length + could not be determined. + + + + + Converts the specified native NUL-terminated UTF-8 string pointer + into a managed string. + + + The native NUL-terminated UTF-8 string pointer. + + + The managed string or null upon failure. + + + + + Converts the specified native UTF-8 string pointer of the specified + length into a managed string. + + + The native UTF-8 string pointer. + + + The length of the native string, in bytes. + + + The managed string or null upon failure. + + + + + Converts the specified managed string into a native NUL-terminated + UTF-8 string pointer using memory obtained from the SQLite core + library. + + + The managed string to convert. + + + The native NUL-terminated UTF-8 string pointer or + upon failure. + + + + + Converts a logical array of native NUL-terminated UTF-8 string + pointers into an array of managed strings. + + + The number of elements in the logical array of native + NUL-terminated UTF-8 string pointers. + + + The native pointer to the logical array of native NUL-terminated + UTF-8 string pointers to convert. + + + The array of managed strings or null upon failure. + + + + + Converts an array of managed strings into an array of native + NUL-terminated UTF-8 string pointers. + + + The array of managed strings to convert. + + + The array of native NUL-terminated UTF-8 string pointers or null + upon failure. + + + + + This class contains static methods that are used to deal with native + pointers to memory blocks that logically contain arrays of bytes to be + used with the SQLite core library. + + + + + Converts a native pointer to a logical array of bytes of the + specified length into a managed byte array. + + + The native pointer to the logical array of bytes to convert. + + + The length, in bytes, of the logical array of bytes to convert. + + + The managed byte array or null upon failure. + + + + + Converts a managed byte array into a native pointer to a logical + array of bytes. + + + The managed byte array to convert. + + + The native pointer to a logical byte array or null upon failure. + + + + + This class contains static methods that are used to perform several + low-level data marshalling tasks between native and managed code. + + + + + Returns a new object instance based on the + specified object instance and an integer + offset. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location that the new + object instance should point to. + + + The new object instance. + + + + + Rounds up an integer size to the next multiple of the alignment. + + + The size, in bytes, to be rounded up. + + + The required alignment for the return value. + + + The size, in bytes, rounded up to the next multiple of the + alignment. This value may end up being the same as the original + size. + + + + + Determines the offset, in bytes, of the next structure member. + + + The offset, in bytes, of the current structure member. + + + The size, in bytes, of the current structure member. + + + The alignment, in bytes, of the next structure member. + + + The offset, in bytes, of the next structure member. + + + + + Reads a value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be read is located. + + + The value at the specified memory location. + + + + + Reads a value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + to be read is located. + + + The value at the specified memory location. + + + + + Reads an value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be read is located. + + + The value at the specified memory location. + + + + + Writes an value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Writes an value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Writes a value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Writes a value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + This class represents a managed virtual table module implementation. + It is not sealed and must be used as the base class for any + user-defined virtual table module classes implemented in managed code. + + + + + The default version of the native sqlite3_module structure in use. + + + + + This field is used to store the native sqlite3_module structure + associated with this object instance. + + + + + This field is used to store the destructor delegate to be passed to + the SQLite core library via the sqlite3_create_disposable_module() + function. + + + + + This field is used to store a pointer to the native sqlite3_module + structure returned by the sqlite3_create_disposable_module + function. + + + + + This field is used to store the virtual table instances associated + with this module. The native pointer to the sqlite3_vtab derived + structure is used to key into this collection. + + + + + This field is used to store the virtual table cursor instances + associated with this module. The native pointer to the + sqlite3_vtab_cursor derived structure is used to key into this + collection. + + + + + This field is used to store the virtual table function instances + associated with this module. The case-insensitive function name + and the number of arguments (with -1 meaning "any") are used to + construct the string that is used to key into this collection. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + + + Calls the native SQLite core library in order to create a new + disposable module containing the implementation of a virtual table. + + + The native database connection pointer to use. + + + Non-zero upon success. + + + + + This method is called by the SQLite core library when the native + module associated with this object instance is being destroyed due + to its parent connection being closed. It may also be called by + the "vtshim" module if/when the sqlite3_dispose_module() function + is called. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + + + Creates and returns the native sqlite_module structure using the + configured (or default) + interface implementation. + + + The native sqlite_module structure using the configured (or + default) interface + implementation. + + + + + Creates and returns the native sqlite_module structure using the + specified interface + implementation. + + + The interface implementation to + use. + + + The native sqlite_module structure using the specified + interface implementation. + + + + + Creates a copy of the specified + object instance, + using default implementations for the contained delegates when + necessary. + + + The object + instance to copy. + + + The new object + instance. + + + + + Calls one of the virtual table initialization methods. + + + Non-zero to call the + method; otherwise, the + method will be called. + + + The native database connection handle. + + + The original native pointer value that was provided to the + sqlite3_create_module(), sqlite3_create_module_v2() or + sqlite3_create_disposable_module() functions. + + + The number of arguments from the CREATE VIRTUAL TABLE statement. + + + The array of string arguments from the CREATE VIRTUAL TABLE + statement. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab derived structure. + + + Upon failure, this parameter must be modified to point to the error + message, with the underlying memory having been obtained from the + sqlite3_malloc() function. + + + A standard SQLite return code. + + + + + Calls one of the virtual table finalization methods. + + + Non-zero to call the + method; otherwise, the + method will be + called. + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The native pointer to the sqlite3_vtab derived structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The native pointer to the sqlite3_vtab_cursor derived structure + used to get the native pointer to the sqlite3_vtab derived + structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + Non-zero if this error message should also be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Gets and returns the interface + implementation to be used when creating the native sqlite3_module + structure. Derived classes may override this method to supply an + alternate implementation for the + interface. + + + The interface implementation to + be used when populating the native sqlite3_module structure. If + the returned value is null, the private methods provided by the + class and relating to the + interface will be used to + create the necessary delegates. + + + + + Creates and returns the + interface implementation corresponding to the current + object instance. + + + The interface implementation + corresponding to the current object + instance. + + + + + Allocates a native sqlite3_vtab derived structure and returns a + native pointer to it. + + + A native pointer to a native sqlite3_vtab derived structure. + + + + + Zeros out the fields of a native sqlite3_vtab derived structure. + + + The native pointer to the native sqlite3_vtab derived structure to + zero. + + + + + Frees a native sqlite3_vtab structure using the provided native + pointer to it. + + + A native pointer to a native sqlite3_vtab derived structure. + + + + + Allocates a native sqlite3_vtab_cursor derived structure and + returns a native pointer to it. + + + A native pointer to a native sqlite3_vtab_cursor derived structure. + + + + + Frees a native sqlite3_vtab_cursor structure using the provided + native pointer to it. + + + A native pointer to a native sqlite3_vtab_cursor derived structure. + + + + + Reads and returns the native pointer to the sqlite3_vtab derived + structure based on the native pointer to the sqlite3_vtab_cursor + derived structure. + + + The object instance to be used. + + + The native pointer to the sqlite3_vtab_cursor derived structure + from which to read the native pointer to the sqlite3_vtab derived + structure. + + + The native pointer to the sqlite3_vtab derived structure -OR- + if it cannot be determined. + + + + + Reads and returns the native pointer to the sqlite3_vtab derived + structure based on the native pointer to the sqlite3_vtab_cursor + derived structure. + + + The native pointer to the sqlite3_vtab_cursor derived structure + from which to read the native pointer to the sqlite3_vtab derived + structure. + + + The native pointer to the sqlite3_vtab derived structure -OR- + if it cannot be determined. + + + + + Looks up and returns the object + instance based on the native pointer to the sqlite3_vtab derived + structure. + + + The native pointer to the sqlite3_vtab derived structure. + + + The object instance or null if + the corresponding one cannot be found. + + + + + Allocates and returns a native pointer to a sqlite3_vtab derived + structure and creates an association between it and the specified + object instance. + + + The object instance to be used + when creating the association. + + + The native pointer to a sqlite3_vtab derived structure or + if the method fails for any reason. + + + + + Looks up and returns the + object instance based on the native pointer to the + sqlite3_vtab_cursor derived structure. + + + The native pointer to the sqlite3_vtab derived structure. + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + The object instance or null + if the corresponding one cannot be found. + + + + + Allocates and returns a native pointer to a sqlite3_vtab_cursor + derived structure and creates an association between it and the + specified object instance. + + + The object instance to be + used when creating the association. + + + The native pointer to a sqlite3_vtab_cursor derived structure or + if the method fails for any reason. + + + + + Deterimines the key that should be used to identify and store the + object instance for the virtual table + (i.e. to be returned via the + method). + + + The number of arguments to the virtual table function. + + + The name of the virtual table function. + + + The object instance associated with + this virtual table function. + + + The string that should be used to identify and store the virtual + table function instance. This method cannot return null. If null + is returned from this method, the behavior is undefined. + + + + + Attempts to declare the schema for the virtual table using the + specified database connection. + + + The object instance to use when + declaring the schema of the virtual table. This parameter may not + be null. + + + The string containing the CREATE TABLE statement that completely + describes the schema for the virtual table. This parameter may not + be null. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + Calls the native SQLite core library in order to declare a virtual + table function in response to a call into the + + or virtual table + methods. + + + The object instance to use when + declaring the schema of the virtual table. + + + The number of arguments to the function being declared. + + + The name of the function being declared. + + + Upon success, the contents of this parameter are undefined. Upon + failure, it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The native pointer to the sqlite3_vtab derived structure. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + The error message. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the specified estimated cost. + + + The object instance to modify. + + + The estimated cost value to use. Using a null value means that the + default value provided by the SQLite core library should be used. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the default estimated cost. + + + The object instance to modify. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the specified estimated rows. + + + The object instance to modify. + + + The estimated rows value to use. Using a null value means that the + default value provided by the SQLite core library should be used. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the default estimated rows. + + + The object instance to modify. + + + Non-zero upon success. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The object instance containing all the + data for the inputs and outputs relating to index selection. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + Upon success, this parameter must be modified to contain the + object instance associated + with the newly opened virtual table cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Number used to help identify the selected index. + + + String used to help identify the selected index. + + + The values corresponding to each column in the selected index. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Non-zero if no more rows are available; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to be used for + returning the specified column value to the SQLite core library. + + + The zero-based index corresponding to the column containing the + value to be returned. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the current row for the specified cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The array of object instances containing + the new or modified column values, if any. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the row that was inserted, if any. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The number of arguments to the function being sought. + + + The name of the function being sought. + + + Upon success, this parameter must be modified to contain the + object instance responsible for + implementing the specified function. + + + Upon success, this parameter must be modified to contain the + native user-data pointer associated with + . + + + Non-zero if the specified function was found; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The new name for the virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier under which the the current state of + the virtual table should be saved. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer used to indicate that any saved states with an + identifier greater than or equal to this should be deleted by the + virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier used to specify a specific saved + state for the virtual table for it to restore itself back to, which + should also have the effect of deleting all saved states with an + integer identifier greater than this one. + + + A standard SQLite return code. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being + called from the finalizer. + + + + + Finalizes this object instance. + + + + + Returns or sets a boolean value indicating whether virtual table + errors should be logged using the class. + + + + + Returns or sets a boolean value indicating whether exceptions + caught in the + method, + method, and the + method should be logged using the + class. + + + + + Returns or sets a boolean value indicating whether virtual table + errors should be logged using the class. + + + + + Returns or sets a boolean value indicating whether exceptions + caught in the + method, + method, and the + method should be logged using the + class. + + + + + Returns non-zero if the schema for the virtual table has been + declared. + + + + + Returns the name of the module as it was registered with the SQLite + core library. + + + + + This class implements the + interface by forwarding those method calls to the + object instance it contains. If the + contained object instance is null, all + the methods simply generate an + error. + + + + + This is the value that is always used for the "logErrors" + parameter to the various static error handling methods provided + by the class. + + + + + This is the error message text used when the contained + object instance is not available + for any reason. + + + + + The object instance used to provide + an implementation of the + interface. + + + + + Constructs an instance of this class. + + + The object instance used to provide + an implementation of the + interface. + + + + + Sets the table error message to one that indicates the native + module implementation is not available. + + + The native pointer to the sqlite3_vtab derived structure. + + + The value of . + + + + + Sets the table error message to one that indicates the native + module implementation is not available. + + + The native pointer to the sqlite3_vtab_cursor derived + structure. + + + The value of . + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being + called from the finalizer. + + + + + Finalizes this object instance. + + + + + This class represents a virtual table cursor to be used with the + class. It is not sealed and may + be used as the base class for any user-defined virtual table cursor + class that wraps an object instance. + + + + + The instance provided when this cursor + was created. + + + + + This value will be non-zero if false has been returned from the + method. + + + + + Constructs an instance of this class. + + + The object instance associated + with this object instance. + + + The instance to expose as a virtual + table cursor. + + + + + Advances to the next row of the virtual table cursor using the + method of the + object instance. + + + Non-zero if the current row is valid; zero otherwise. If zero is + returned, no further rows are available. + + + + + Resets the virtual table cursor position, also invalidating the + current row, using the method of + the object instance. + + + + + Closes the virtual table cursor. This method must not throw any + exceptions. + + + + + Throws an if the virtual + table cursor has been closed. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + Returns the value for the current row of the virtual table cursor + using the property of the + object instance. + + + + + Returns non-zero if the end of the virtual table cursor has been + seen (i.e. no more rows are available, including the current one). + + + + + Returns non-zero if the virtual table cursor is open. + + + + + This class implements a virtual table module that exposes an + object instance as a read-only virtual + table. It is not sealed and may be used as the base class for any + user-defined virtual table class that wraps an + object instance. The following short + example shows it being used to treat an array of strings as a table + data source: + + public static class Sample + { + public static void Main() + { + using (SQLiteConnection connection = new SQLiteConnection( + "Data Source=:memory:;")) + { + connection.Open(); + + connection.CreateModule(new SQLiteModuleEnumerable( + "sampleModule", new string[] { "one", "two", "three" })); + + using (SQLiteCommand command = connection.CreateCommand()) + { + command.CommandText = + "CREATE VIRTUAL TABLE t1 USING sampleModule;"; + + command.ExecuteNonQuery(); + } + + using (SQLiteCommand command = connection.CreateCommand()) + { + command.CommandText = "SELECT * FROM t1;"; + + using (SQLiteDataReader dataReader = command.ExecuteReader()) + { + while (dataReader.Read()) + Console.WriteLine(dataReader[0].ToString()); + } + } + + connection.Close(); + } + } + } + + + + + + This class implements a virtual table module that does nothing by + providing "empty" implementations for all of the + interface methods. The result + codes returned by these "empty" method implementations may be + controlled on a per-method basis by using and/or overriding the + , + , + , + , and + methods from within derived classes. + + + + + This field is used to store the + values to return, on a per-method basis, for all methods that are + part of the interface. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + + + Determines the default value to be + returned by methods of the + interface that lack an overridden implementation in all classes + derived from the class. + + + The value that should be returned + by all interface methods unless + a more specific result code has been set for that interface method. + + + + + Converts a value into a boolean + return value for use with the + method. + + + The value to convert. + + + The value. + + + + + Converts a value into a boolean + return value for use with the + method. + + + The value to convert. + + + The value. + + + + + Determines the value that should be + returned by the specified + interface method if it lack an overridden implementation. If no + specific value is available (or set) + for the specified method, the value + returned by the method will be + returned instead. + + + The name of the method. Currently, this method must be part of + the interface. + + + The value that should be returned + by the interface method. + + + + + Sets the value that should be + returned by the specified + interface method if it lack an overridden implementation. + + + The name of the method. Currently, this method must be part of + the interface. + + + The value that should be returned + by the interface method. + + + Non-zero upon success. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + The CREATE TABLE statement used to declare the schema for the + virtual table. + + + + + The instance containing the backing data + for the virtual table. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + The instance to expose as a virtual + table. This parameter cannot be null. + + + + + Determines the SQL statement used to declare the virtual table. + This method should be overridden in derived classes if they require + a custom virtual table schema. + + + The SQL statement used to declare the virtual table -OR- null if it + cannot be determined. + + + + + Sets the table error message to one that indicates the virtual + table cursor is of the wrong type. + + + The object instance. + + + The value of . + + + + + Sets the table error message to one that indicates the virtual + table cursor has no current row. + + + The object instance. + + + The value of . + + + + + Determines the string to return as the column value for the object + instance value. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to return a string representation for. + + + The string representation of the specified object instance or null + upon failure. + + + + + Constructs an unique row identifier from two + values. The first value + must contain the row sequence number for the current row and the + second value must contain the hash code of the enumerator value + for the current row. + + + The integer row sequence number for the current row. + + + The hash code of the enumerator value for the current row. + + + The unique row identifier or zero upon failure. + + + + + Determines the unique row identifier for the current row. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to return a unique row identifier for. + + + The unique row identifier or zero upon failure. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + This class represents a virtual table cursor to be used with the + class. It is not sealed and may + be used as the base class for any user-defined virtual table cursor + class that wraps an object instance. + + + + + The instance provided when this + cursor was created. + + + + + Constructs an instance of this class. + + + The object instance associated + with this object instance. + + + The instance to expose as a virtual + table cursor. + + + + + Closes the virtual table cursor. This method must not throw any + exceptions. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + Returns the value for the current row of the virtual table cursor + using the property of the + object instance. + + + + + This class implements a virtual table module that exposes an + object instance as a read-only virtual + table. It is not sealed and may be used as the base class for any + user-defined virtual table class that wraps an + object instance. + + + + + The instance containing the backing + data for the virtual table. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + The instance to expose as a virtual + table. This parameter cannot be null. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + +
+
diff --git a/packages/System.Data.SQLite.1.0.82.0/tools/install.ps1 b/packages/System.Data.SQLite.1.0.90.0/tools/install.ps1 similarity index 100% rename from packages/System.Data.SQLite.1.0.82.0/tools/install.ps1 rename to packages/System.Data.SQLite.1.0.90.0/tools/install.ps1 diff --git a/packages/dotConnect.Express.for.Oracle.8.1.36/content/app.config.transform b/packages/dotConnect.Express.for.Oracle.8.1.36/content/app.config.transform new file mode 100644 index 000000000..0386e6489 --- /dev/null +++ b/packages/dotConnect.Express.for.Oracle.8.1.36/content/app.config.transform @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/packages/dotConnect.Express.for.Oracle.8.1.36/content/web.config.transform b/packages/dotConnect.Express.for.Oracle.8.1.36/content/web.config.transform new file mode 100644 index 000000000..3a3a1a7a9 --- /dev/null +++ b/packages/dotConnect.Express.for.Oracle.8.1.36/content/web.config.transform @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/packages/dotConnect.Express.for.Oracle.8.1.36/dotConnect.Express.for.Oracle.8.1.36.nupkg b/packages/dotConnect.Express.for.Oracle.8.1.36/dotConnect.Express.for.Oracle.8.1.36.nupkg new file mode 100644 index 000000000..b065b14cc Binary files /dev/null and b/packages/dotConnect.Express.for.Oracle.8.1.36/dotConnect.Express.for.Oracle.8.1.36.nupkg differ diff --git a/packages/dotConnect.Express.for.Oracle.8.1.36/dotConnect.Express.for.Oracle.8.1.36.nuspec b/packages/dotConnect.Express.for.Oracle.8.1.36/dotConnect.Express.for.Oracle.8.1.36.nuspec new file mode 100644 index 000000000..e8e7527f4 --- /dev/null +++ b/packages/dotConnect.Express.for.Oracle.8.1.36/dotConnect.Express.for.Oracle.8.1.36.nuspec @@ -0,0 +1,18 @@ + + + + dotConnect.Express.for.Oracle + 8.1.36 + dotConnect Express for Oracle + Devart Software + Devart Software + http://www.devart.com/dotconnect/oracle + http://www.devart.com/content/images/logos/dcoracle-white_fb.png + false + dotConnect Express for Oracle is a free of charge enhanced database connectivity solution built over ADO.NET architecture and a development framework with a number of innovative technologies. dotConnect offers a complete solution for developing database-related applications and web sites. It introduces new approaches for designing applications and boosts productivity of database application development. + dotConnect Express for Oracle is a free of charge enhanced database connectivity solution built over ADO.NET architecture and a development framework with a number of innovative technologies. + Copyright � 1998 - 2013 Devart + en-US + Oracle ADO.NET provider Database + + \ No newline at end of file diff --git a/packages/dotConnect.Express.for.Oracle.8.1.36/lib/Devart.Data.Oracle.dll b/packages/dotConnect.Express.for.Oracle.8.1.36/lib/Devart.Data.Oracle.dll new file mode 100644 index 000000000..ae380c162 Binary files /dev/null and b/packages/dotConnect.Express.for.Oracle.8.1.36/lib/Devart.Data.Oracle.dll differ diff --git a/packages/dotConnect.Express.for.Oracle.8.1.36/lib/Devart.Data.dll b/packages/dotConnect.Express.for.Oracle.8.1.36/lib/Devart.Data.dll new file mode 100644 index 000000000..bacf8ca57 Binary files /dev/null and b/packages/dotConnect.Express.for.Oracle.8.1.36/lib/Devart.Data.dll differ diff --git a/Redist/Oracle/Oracle.ManagedDataAccess.dll b/packages/odp.net.managed.121.1.1/lib/net40/Oracle.ManagedDataAccess.dll similarity index 78% rename from Redist/Oracle/Oracle.ManagedDataAccess.dll rename to packages/odp.net.managed.121.1.1/lib/net40/Oracle.ManagedDataAccess.dll index 699035e15..8cf6d1eed 100644 Binary files a/Redist/Oracle/Oracle.ManagedDataAccess.dll and b/packages/odp.net.managed.121.1.1/lib/net40/Oracle.ManagedDataAccess.dll differ diff --git a/packages/odp.net.managed.121.1.1/odp.net.managed.121.1.1.nupkg b/packages/odp.net.managed.121.1.1/odp.net.managed.121.1.1.nupkg new file mode 100644 index 000000000..0f1b407ea Binary files /dev/null and b/packages/odp.net.managed.121.1.1/odp.net.managed.121.1.1.nupkg differ diff --git a/packages/odp.net.managed.121.1.1/odp.net.managed.121.1.1.nuspec b/packages/odp.net.managed.121.1.1/odp.net.managed.121.1.1.nuspec new file mode 100644 index 000000000..e0c6a4832 --- /dev/null +++ b/packages/odp.net.managed.121.1.1/odp.net.managed.121.1.1.nuspec @@ -0,0 +1,17 @@ + + + + odp.net.managed + 121.1.1 + Oracle Data Provider for .NET (ODP.NET) Managed Driver + Oracle + Oracle + http://www.oracle.com/technetwork/licenses/ea-license-noexhibits-1938914.html + http://www.oracle.com/technetwork/topics/dotnet/index-085163.html + true + This package contains Oracle Data Provider for .NET (ODP.NET), Managed driver, i.e. Oracle.ManagedDataAccess.dll. Note, this package does not include support for distributed transactions, i.e. Oracle.ManagedDataAccessDTC.dll, as this support is architecture dependent, and only needed at runtime. + ODP.NET Managed Driver 12c Release 1 - released August 13, 2013. + Copyright (c) Oracle Corporation 1998-2013 + Oracle ODP.NET + + \ No newline at end of file diff --git a/packages/odp.net.x86.112.3.20/lib/net20/Oracle.DataAccess.dll b/packages/odp.net.x86.112.3.20/lib/net20/Oracle.DataAccess.dll new file mode 100644 index 000000000..b4f68bb7a Binary files /dev/null and b/packages/odp.net.x86.112.3.20/lib/net20/Oracle.DataAccess.dll differ diff --git a/packages/odp.net.x86.112.3.20/lib/net40/Oracle.DataAccess.dll b/packages/odp.net.x86.112.3.20/lib/net40/Oracle.DataAccess.dll new file mode 100644 index 000000000..32543d0f0 Binary files /dev/null and b/packages/odp.net.x86.112.3.20/lib/net40/Oracle.DataAccess.dll differ diff --git a/packages/odp.net.x86.112.3.20/odp.net.x86.112.3.20.nupkg b/packages/odp.net.x86.112.3.20/odp.net.x86.112.3.20.nupkg new file mode 100644 index 000000000..543abb050 Binary files /dev/null and b/packages/odp.net.x86.112.3.20/odp.net.x86.112.3.20.nupkg differ diff --git a/packages/odp.net.x86.112.3.20/odp.net.x86.112.3.20.nuspec b/packages/odp.net.x86.112.3.20/odp.net.x86.112.3.20.nuspec new file mode 100644 index 000000000..24e7b49af --- /dev/null +++ b/packages/odp.net.x86.112.3.20/odp.net.x86.112.3.20.nuspec @@ -0,0 +1,20 @@ + + + + odp.net.x86 + 112.3.20 + Oracle Data Provier for .NET (ODP.NET) x86 + Oracle + Oracle + http://www.oracle.com/technetwork/licenses/odt-lic-152011.html + http://www.oracle.com/technetwork/topics/dotnet/index-085163.html + true + This NuGet package contains Oracle.DataAccess.dll (x86 - both the net20 and net40 versions) needed to compile a project that uses Oracle's ODP.NET Library. Oracle will still need to be installed on the production or development machine in order to connect to Oracle (those libraries are greater than 100MB in size, so it didn't make sense to include them in a NuGet package), but this package will at least allow the project to be successfully built (i.e. if you're using a CI server). + + + + + + + + \ No newline at end of file diff --git a/packages/repositories.config b/packages/repositories.config index e829082af..6da51e5f2 100644 --- a/packages/repositories.config +++ b/packages/repositories.config @@ -1,10 +1,18 @@  - + + + + + + + + +